数据结构实验报告栈进制转换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构试验报告栈的应用——进制转换程序
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;
return OK;
}
3.出栈程序
int Pop(Stack *s , int *e)
{
if(s->top == s->base)
{
return ERROR;
}
*e = * -- s->top;
return OK;
}
4.主函数与进制转化
void main()
{
int N;
int a;
int e;
Stack s;
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 ;
}
int *base;
int *top;
int stacksize;
}Stack;
int InitStack(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;
return OK;
}
int Push(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;
return OK;
}
int Pop(Stack *s , int *e)
{
if(s->top == s->base)
{
return ERROR;
}
*e = * -- s->top;
return OK;
}
void main()
{
int N;
int a;
int e;
Stack s;
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!=
{
Pop(&s ,&e);
printf("%d",e);
}
free;
system("pause"); }
调试与体会
1.调试结果
2.体会
这次数据结构作业我选择了做进制转换,首先我觉得这个比较有实际意义,其次我觉得做迷宫比较难。
这次主要是学习如何用栈,栈自动分配变量,以及函数调用时所使用的一些空间。通过编写这次程序,提高了对栈的理解,自我查找与学习交流能力,这次编写程序,自己通过结合课本知识编写了出来。但是这次暴露出自己函数调用还是有一些问题的,通过同学的帮忙解决了很小但很严重的一个问题。这次,我对数据结构和C语言也有了更多地理解。