/*
*顺序栈的建立
*出栈
*入栈
*取栈顶元素
*判断栈空
*/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; } }