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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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语言也有了更多地理解。

相关文档
最新文档