/* 1.节点初始化 2.创建栈 3.检测栈是否为空 4.进栈 5.出栈 6.返回栈顶元素 7.打印栈 */#include#include typedef struct stack{ int element; struct stack *next;}*Stack;Stack createStack(void){ Stack S=malloc(sizeof(struct stack)); if(S==NULL) { printf("Out of space\n"); return NULL; } else { S->next=NULL; return S; }}int isEmpty(Stack S){ return (S->next==NULL);}void push(Stack S,int element){ Stack Sptr=malloc(sizeof(struct stack)); if(Sptr==NULL) { printf("Out of space\n"); } else { Sptr->element=element; Sptr->next=S->next; S->next=Sptr; }}void pop(Stack S){ Stack Stmp=NULL; if(isEmpty(S)) { printf("Stack empty\n"); } else { Stmp=S->next; S->next=S->next->next; free(Stmp); }}int top(Stack S){ if(isEmpty(S)) { printf("Stack empty\n"); } else { return (S->next->element); } }void printStack(Stack S) { Stack Sptr=S->next; while(Sptr!=NULL) { printf("-------------\n"); printf("| %d |\n",Sptr->element); printf("-------------\n"); Sptr=Sptr->next; }}int main(void){ int i=1; Stack S=createStack(); for(i=1;i<7;i++) { push(S,i); //createStack(); } printStack(S); }
运行结果: