有几个地方有点小问题
改过的代码:#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;
}
执行结果:
|