c语言错误error

2024-10-31 01:22:57
推荐回答(2个)
回答1:

#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;
    } 
    }
}

 

回答2:

datatype没有定义。swich语句写得不规范,push函数里if语句后面多了逗号,调用函数不用写返回值。