1 //链栈
2 typedef struct LinkStack1{
3 int data;
4 struct LinkStack1 *next;
5 }StackNode,*LinkStack;
6
7 //初始化
8 bool InitStack(LinkStack &S){
9 S=(LinkStack)malloc(sizeof(StackNode));
10 S=NULL;
11 return true;
12 }
13 //进栈
14 bool Push(LinkStack &S,int x){
15 StackNode *m;
16 m=(StackNode *)malloc(sizeof(StackNode));
17 m->data=x;
18 m->next=S;
19 S=m;
20
21 return true;
22 }
23 //出栈
24 bool Pop(LinkStack &S,int &x){
25 LinkStack L;
26 L=S;
27 x=L->data;
28 S=L->next;
29 free(L);
30 return true;
31 }
32 //遍历
33 bool travel(LinkStack S){
34 LinkStack Q;
35 Q=S;
36 while(Q!=NULL){
37 printf("%d",Q->data);
38 Q=Q->next;
39 }
40 return true;
41 }
42 int main(){
43 LinkStack S;
44 int x;
45 InitStack(S);
46 Push(S,1);
47 Push(S,2);
48 Push(S,5);
49 Pop(S,x);
50 travel(S);
51 printf("\n");
52 printf("%d",x);
53 return 0;
54 }