我用C语言编写一个顺序栈的简单功能,但是运行不了,麻烦帮我看看哪里有错误,在线急等!!~

#include <stdio.h>
#include <stdlib.h>
#define maxsize 1024

typedef char datatype;
typedef struct
{
datatype data[maxsize];
int top;
}seqstack;

void setnull(seqstack *s)
{
s->top=-1;
}

int empty(seqstack *s) //判空栈
{
if(s->top==-1) //返回1则说明为空栈
return 1;
else
return 0; //返回0则说明不为空栈
}

void push(seqstack *s,char ch) //进栈
{
if(s->top==maxsize-1)
{
printf("overflow!\n");
}
else
{
s->top++;
s->data[s->top]=ch;
}
}

datatype pop(seqstack *s) //出栈
{
if(empty(s)==1)
{
printf("underflow!\n");
}
else
{
s->top--;
}
return (s->data[s->top+1]);
}

datatype top(seqstack *s) //取栈顶
{
if(empty(s)==1)
{
printf("stack is empty!\n");
return 0;
}
else return (s->data[s->top]);

}

int main()
{
char x;
seqstack *s;
setnull(s);
system("color e1");
system("cls");
push(s,'a');
x=top(s);
printf("%5c",x);
push(s,'b');
x=top(s);
printf("%5c",x);
push(s,'c');
x=top(s);
printf("%5c",x);
return 0;

}

seqstack *s; 这里错了,改法很多。。。比如不用指针。追问

怎么改呢?

追答seqstack a;
seqstack *s=&a;

这么改动小。。。。

追问

没错了,不好意思,我有点不明白这么改的原因是什么?

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜