//顺序栈的创建 #include <stdio.h> #define MAXSIZE 5//定义栈的长度 #define ERROR -1 #define OK 0 typedef int elemtype;//定义栈中的类型(元素类型) typedef struct { elemtype data[MAXSIZE]; int top;//栈顶指针 }Stack; int InitStack(Stack *s)//初始化栈 { if(NULL == s) { return ERROR; } s->top = -1; return OK; } int StackEmpty(Stack *s)//判断是否为空 { if(NULL == s) { return ERROR; } //printf("stack is empty\n"); return s->top == -1; } int StackFull(Stack *s)//判断栈是否满 { if(NULL == s) { return ERROR; } return s->top == MAXSIZE - 1; } int Push(Stack *s,elemtype data)//压栈 { if(NULL == s) { return ERROR; } if(StackFull(s))//判断栈是否是满的 { return ERROR; } s->top++; s->data[s->top] = data; printf("%4d",data); return OK; } int Pop(Stack *s)//出栈 { if(NULL == s) { return ERROR; } if(StackEmpty(s))//判断是否为空栈 { return ERROR; } /*elemtype data = s->data[s->top--];*/ elemtype data = s->data[s->top]; s->top--; return data; } int main() { int i = 0; Stack stack;//栈结构体变量 if(InitStack(&stack) != OK)//初始化栈 { return -1; } if(StackEmpty(&stack))//判断是否为空 { printf("为空栈\n"); } for(i = 0; i < 5; i++) { if(Push(&stack,i) != OK)//入栈 { return -1; } } printf("\n"); for(i = 0; i < 5; i++) { printf("%4d",Pop(&stack));//出栈 } printf("\n"); return 0; }