数据结构实验报告 栈进制转换.docx

上传人:b****6 文档编号:8648916 上传时间:2023-02-01 格式:DOCX 页数:8 大小:106.99KB
下载 相关 举报
数据结构实验报告 栈进制转换.docx_第1页
第1页 / 共8页
数据结构实验报告 栈进制转换.docx_第2页
第2页 / 共8页
数据结构实验报告 栈进制转换.docx_第3页
第3页 / 共8页
数据结构实验报告 栈进制转换.docx_第4页
第4页 / 共8页
数据结构实验报告 栈进制转换.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

数据结构实验报告 栈进制转换.docx

《数据结构实验报告 栈进制转换.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告 栈进制转换.docx(8页珍藏版)》请在冰豆网上搜索。

数据结构实验报告 栈进制转换.docx

数据结构实验报告栈进制转换

数据结构试验报告

栈的应用——进制转换程序

姓名

班级

学号

算法步骤:

1.定义栈与建立空栈

typedefstruct{

int*base;

int*top;

intstacksize;

}Stack;

intInitStack(Stack*s)

{

s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));

if(!

s->base)

{

exit(OVERFLOW);

}

s->top=s->base;

s->stacksize=STACK_INIT_SIZE;

returnOK;

}

2.入栈程序

intPush(Stack*s,int*e)

{

if(s->top-s->base>=STACK_INIT_SIZE)

{

s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));

if(!

s->base)

{

exit(OVERFLOW);

}

s->top=s->base+STACKINCREMENT;

}

*s->top++=*e;

returnOK;

}

3.出栈程序

intPop(Stack*s,int*e)

{

if(s->top==s->base)

{

returnERROR;

}

*e=*--s->top;

returnOK;

}

4.主函数与进制转化

voidmain()

{

intN;

inta;

inte;

Stacks;

InitStack(&s);

Pop(&s,&e);

Push(&s,&e);

InitStack(&s);

printf("请输入十进制数:

");

scanf("%d",&N);

printf("要将N转化为几进制?

");

scanf("%d",&a);

while(N)

{

e=N%a;

Push(&s,&e);

N=N/a;

}

while(s.base!

=s.top)

{

Pop(&s,&e);

printf("%d",e);

}

free(s.base);

system("pause");

}

3.源程序

#include

#include

#include

#defineSTACK_INIT_SIZE100

#defineSTACKINCREMENT10

#defineOK1

#defineERROR0

#defineOVERFLOW-1

#defineTRUE1

#defineFALSE-1

 

typedefstruct{

int*base;

int*top;

intstacksize;

}Stack;

intInitStack(Stack*s)

{

s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));

if(!

s->base)

{

exit(OVERFLOW);

}

s->top=s->base;

s->stacksize=STACK_INIT_SIZE;

returnOK;

}

intPush(Stack*s,int*e)

{

if(s->top-s->base>=STACK_INIT_SIZE)

{

s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));

if(!

s->base)

{

exit(OVERFLOW);

}

s->top=s->base+STACKINCREMENT;

}

*s->top++=*e;

returnOK;

}

intPop(Stack*s,int*e)

{

if(s->top==s->base)

{

returnERROR;

}

*e=*--s->top;

returnOK;

}

voidmain()

{

intN;

inta;

inte;

Stacks;

InitStack(&s);

Pop(&s,&e);

Push(&s,&e);

InitStack(&s);

printf("请输入十进制数:

");

scanf("%d",&N);

printf("要将N转化为几进制?

");

scanf("%d",&a);

while(N)

{

e=N%a;

Push(&s,&e);

N=N/a;

}

while(s.base!

=s.top)

{

Pop(&s,&e);

printf("%d",e);

}

free(s.base);

system("pause");

}

 

调试与体会

1.调试结果

2.体会

这次数据结构作业我选择了做进制转换,首先我觉得这个比较有实际意义,其次我觉得做迷宫比较难。

这次主要是学习如何用栈,栈自动分配变量,以及函数调用时所使用的一些空间。

通过编写这次程序,提高了对栈的理解,自我查找与学习交流能力,这次编写程序,自己通过结合课本知识编写了出来。

但是这次暴露出自己函数调用还是有一些问题的,通过同学的帮忙解决了很小但很严重的一个问题。

这次,我对数据结构和C语言也有了更多地理解。

 

 

THANKS!

!

!

 

致力为企业和个人提供合同协议,策划案计划书,学习课件等等

打造全网一站式需求

欢迎您的下载,资料仅供参考

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1