c语言实现栈进制转换实验报告,数据结构实验报告栈进制转换.doc

#include#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define OK 1

#define ERROR 0

#define OVERFLOW -1

#define TRUE 1

#define FALSE -1

typedef struct{

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(s.base!=s.top)

{

Pop(&s ,&e);

printf("%d",e);

}

free(s.base);

system("pause");

}

调试与体会

1.调试结果

2.体会

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

这次主要是学习如何用栈,栈自动分配变量,以及函数调用时所使用的一些空间。通过编写这次程序,提高了对栈的理解,自我查找与学习交流能力,这次编写程序,自己通过结合课本知识编写了出来。但是这次暴露出自己函数调用还是有一些问题的,通过同学的帮忙解决了很小但很严重的一个问题。这次,我对数据结构和C语言也有了更多地理解。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值