#include<stdio.h> #include<stdlib.h> //用链表实现栈 typedef struct Node { int data; struct Node *next; } node; int IsEmpty(node *p) { return p->next==NULL; } node *CreateStack() { node *p=(node*)malloc(sizeof(node)); p->next=NULL; return p; } node *Push(node *p,int x) { node *TmpCell=(node*)malloc(sizeof(node)); TmpCell->data=x; TmpCell->next=p->next; p->next=TmpCell; return p; } void Pop(node *p) { node *cell; if(p->next==NULL) { printf("error,-1"); } else { cell=p->next; p->next=cell->next; free(cell); } } void display(node *p) { node *temp=p; while(temp->next) { printf("%d",temp->next->data); temp=temp->next; } printf("%c",' '); } main() { node *p=CreateStack(); Push(p,1); Push(p,2); Push(p,3); Push(p,4); display(p); Pop(p); display(p); Pop(p); display(p); }