1 #include <stdio.h> 2 #include <malloc.h> 3 4 typedef struct SNode 5 { 6 int data; 7 struct SNode *next; 8 }SNode,*LinkStack; 9 //栈的主要操作是在栈顶进行插入和删除,所以将链表的头部看为栈顶最合适 10 void initLinkStack(LinkStack S)//初始化 11 { 12 S=NULL; 13 } 14 15 LinkStack Push(LinkStack S,int value)//入栈操作 16 { 17 SNode *p; 18 p=(SNode *)malloc(sizeof(SNode)); 19 p->next=S; 20 p->data=value; 21 S=p; 22 return S; 23 } 24 25 LinkStack Pop(LinkStack S,int *e)//出栈操作 26 { 27 if(S==NULL) 28 { 29 return 0; 30 } 31 else 32 { 33 *e=S->data; 34 SNode *q;//存储删除的节点来进行释放 35 q=S; 36 S=S->next; 37 free(q); 38 return S;//由于对头指针变量进行了更改,所以需要返回头指针S 39 } 40 41 } 42 43 int GetTop(LinkStack S)//获取栈顶元素 44 { 45 if(S!=NULL) 46 { 47 return S->data; 48 } 49 } 50 51 int main() 52 { 53 LinkStack S; 54 S=Push(S,666); 55 S=Push(S,999); 56 57 58 int *e; 59 int a=0; 60 e=&a;//指针初始化 61 62 S=Pop(S,e); 63 printf("%d",GetTop(S)); 64 return 0; 65 }
标签:03,return,LinkStack,int,30,栈顶,SNode,data From: https://www.cnblogs.com/ryuichi-ssk/p/17274348.html