|
发表于 2013-4-9 21:11:29
|
显示全部楼层
有几个地方有点小问题
改过的代码:
- #include<stdio.h>
- #include<stdlib.h>
- #define MAXSIZE 100
- typedef struct
- {
- int data[MAXSIZE];
- int top;
- }seqstack;
- void main()
- {
- int input_stack(seqstack *s);
- int get_stack(seqstack *s,int &k);
- int output_stack(seqstack *s);
- seqstack *s;
- s=(seqstack*)malloc(sizeof(seqstack));
- s->top=-1;
- int k;
- printf("请输入入栈的元素:\n");
- input_stack(s);
- printf("当前栈顶元素是:\n");
- get_stack(s,k);//说是这里没有初始化k 这k不就是int嘛 还怎么初始化??我试着加了一句 k=(int)malloc(sizeof(int))就不报错了 但是 运行时 输出的根本不是栈里的值 是一个很大的值 我猜想是地址 但是就想不通是哪里出了问题 求 鱼友们帮一下我……
- printf("k=%d\n",k);
- printf("依次输出栈里的所有元素:\n");
- output_stack(s);
- system("pause");
- }
- int input_stack(seqstack *s1)
- {
- int i;
-
- for(i=0;i<MAXSIZE;i++)
- {
- if((s1->top)>=MAXSIZE-1)
- return 0;
- scanf("%d",&s1->data[i]);
- if(s1->data[i]==0)
- return 0;
- s1->top++;
- }
- return 1;
- }
- int get_stack(seqstack *s,int &k)
- {
- k=s->data[s->top];
- return 1;
- }
- int output_stack(seqstack *s)
- {
- int i;
- if((s->top)<0)
- return 0;
- for(i=s->top;i>=0;i--)
- {
- printf("%d ",s->data[s->top]);
- s->top--;
- }
- return 1;
- }
复制代码 执行结果:
|
|