/** * 栈--链式存储 **/ #include <stdlib.h> #include <iostream.h> #define OK 1 #define ERROR 0 typedef struct node { //链栈的结点结构 int item; //栈的数据元素类型 struct node *next; //指向后继结点的指针 }NODE; typedef struct stack{ NODE *top; }STACK; //初始化栈S void InitStack(STACK *S) { S->top=NULL; } //入栈 void Push(STACK *S,int item) { NODE *p=(NODE*)malloc(sizeof(NODE)); if (!p) exit(0); else { p->item=item; p->next=S->top; S->top=p; } } //判断栈S是否空 int StackEmpty(STACK S) { if (S.top==NULL) return 1; else 0; } //获取栈顶元素内容 void GetTop(STACK S,int *item) { if (StackEmpty(S)) exit(0); else *item=S.top->item; } //出栈 void Pop(STACK *S,int *item) { if (StackEmpty(*S)) exit(0); else { *item=S->top->item; NODE *p=S->top; S->top=p->next; free(p); } }