#include
#include
#define maxsize 100
typedef char datatype;
typedef struct /*定义*/
{
datatype data[maxsize];
int top;
} seqstack;
seqstack* init_seqstack(seqstack *s) /*初始化*/
{
s=(seqstack*)malloc(sizeof(seqstack));
s->top=-1;
return s;
}
int empty_seqstack(seqstack *s) /*判栈空*/
{
if(s->top=-1) return 1;
else return 0;
}
datatype get_seqstack(seqstack *s) /*取栈顶元素*/
{
if(s->top==-1) printf("栈空,取元素失败\n");
else return(s->data[s->top]);
}
seqstack *push_seqstack(seqstack *s, datatype x) /*入栈*/
{
if(s->top==maxsize-1) //分号去掉
{
printf("上溢\n");
return 0;
}
else
{
s->top++;
s->data[s->top]=x;
return s;
}
}
seqstack * pop_seqstack(seqstack *s, datatype y) /*出栈*/
{
if(s->top<0)
{
printf("下溢\n");
return 0;
}
else
{
y=s->data[s->top];
s->top--;
return s;
}
}
void show(seqstack *s)
{
while(s->top>=0)
{
printf("%c ",s->data[s->top--]);
}
printf("\n");
}
void main()
{
int su;
seqstack *s;
char x,y;
while(1)
{
printf("制空表:1 判栈空:2 取栈顶元素:3 入栈:4 出栈:5 显示栈中元素:6\n");
scanf("%d",&su);
switch(su)
{
case 1:
s=init_seqstack(s);
break;
case 2:
empty_seqstack(s);
break;
case 3:
get_seqstack(s);
break;
case 4:
getchar();
printf("请输入入栈字符:");
scanf("%c",&x);
s=push_seqstack(s, x);
break;
case 5:
s=pop_seqstack(s,y);
break;
case 6:
show(s);
break;
}
}
}
datatype没有定义。swich语句写得不规范,push函数里if语句后面多了逗号,调用函数不用写返回值。