C语言数据结构顺序栈的相关操做(建立、入栈、出栈、取栈顶元素)

/*
*顺序栈的建立
*出栈
*入栈
*取栈顶元素
*判断栈空
*/web

#include<stdio.h>
#define MAXSIZE 1024
typedef int element;
typedef struct sequstack
{
    element data[MAXSIZE];
     int top;
}Sequ_Stack;
Sequ_Stack*creat_stack();//顺序栈的建立
int full_stack(Sequ_Stack*s);
int empty_stack(Sequ_Stack*s);
int length_stack(Sequ_Stack*s);
int push_stack(Sequ_Stack*s,element x);//入栈
int pop_stack(Sequ_Stack*s,element*x);//出栈
int get_data(Sequ_Stack*s,element *x);
void main()
{
    Sequ_Stack*s;
    element x;
    element y;
     element z;
    s=creat_stack();
    if(s->top==-1)
        printf("顺序栈建立失败:\n");
        else
            printf("顺序栈建立成功:\n");
            if(full_stack(s)==1)
                printf("顺序栈已经满:\n");
               else
                printf("顺序栈没有满:\n");
                if(empty_stack(s))
                    printf("栈为空;\n");
                  else
                    printf("栈不为空:\n");

                      printf("顺序栈的长度为:%d\n",length_stack(s));
                      printf("请输入要入栈的数据:\n");
                        scanf("%d",&x);
                      if(push_stack(s,x))
                          printf("入栈成功:\n");
                          else
                            printf("入栈失败:\n");
                            if(pop_stack(s,&y)==0)
                                printf("出栈失败:\n");
                              else
                                printf("出栈的元素为:%d\n",y);
                                  if(get_data(s,&z)==0)
                                printf("取栈顶元素失败:\n");
                              else
                                printf("栈顶元素为:%d\n",z);





}
Sequ_Stack*creat_stack()//顺序栈的建立
{
    Sequ_Stack*s;
    element x;
    s=(Sequ_Stack*)malloc(sizeof(Sequ_Stack));
     if(s==NULL)
        s->top=-1;
        else
            s->top=0;
            int i=0;
        printf("请输入数据:\n");
        scanf("%d",&x);
        while(x!=0)
        {
            s->data[i++]=x;
            s->top++;
            scanf("%d",&x);
        }
        return s;
}
int full_stack(Sequ_Stack*s)//判断栈是否满
{
    if(s->top+1>=MAXSIZE)
         return 1;
     else
        return 0;
}
int empty_stack(Sequ_Stack*s)//判断栈是否为空
{
    if(s->top==-1)
      return 1;
    else
        return 0;
}
int length_stack(Sequ_Stack*s)
{

    if(s->top==-1)
        return 0;
     else
        return (s->top+1);
}
int push_stack(Sequ_Stack*s,element x)//入栈
{
    if(s->top+1>=MAXSIZE)
         return 0;
    else
    {
        s->top++;
        s->data[s->top]=x;
        return 1;
    }
}
int pop_stack(Sequ_Stack*s,element*x)//出栈
{
    if(s->top==-1)
        return 0;
    else
      {
          *x=s->data[s->top];
           s->top--;
           return 1;
      }
}
int get_data(Sequ_Stack*s,element *x)
{
    if(s->top==-1)
            return 0;
    else
      {
             *x=s->data[s->top];
                 return 1;
      }
}