数据结构实验报告 栈进制转换.docx
《数据结构实验报告 栈进制转换.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告 栈进制转换.docx(8页珍藏版)》请在冰豆网上搜索。
数据结构实验报告栈进制转换
数据结构试验报告
栈的应用——进制转换程序
姓名
班级
学号
算法步骤:
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!
!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考