链式栈的基本操作
作者:互联网
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 typedef int ElemType; 5 /*链栈结点*/ 6 typedef struct Node{ 7 ElemType data; 8 struct Node *next; 9 }LinkStackNode; 10 /*链栈结构*/ 11 typedef struct{ 12 LinkStackNode *top; 13 int length; 14 }LinkStack; 15 //初始化链式栈 16 void InitStack(LinkStack *S){ 17 S->top=NULL; 18 S->length=0; 19 printf("初始化成功\n"); 20 } 21 //入栈 22 int Push(LinkStack *S){ 23 int n; 24 LinkStackNode *x=(LinkStackNode*)malloc(sizeof(LinkStackNode)); 25 if(x==NULL){ 26 return printf("申请空间失败\n"); 27 } 28 printf("请输入你想入栈的数\n"); 29 scanf("%d",&n); 30 x->data=n; 31 x->next=S->top;//插入一个新结点在头部 32 S->top=x;//将头结点指针指向该结点 33 S->length++; 34 return printf("入栈成功\n"); 35 } 36 //出栈 37 int Pop(LinkStack *S){ 38 if(S->top==NULL){ 39 return printf("栈内以空\n"); 40 } 41 int x; 42 LinkStackNode *temp=S->top;//将temp指针指向头结点; 43 //移动栈顶指针 44 S->top=temp->next;//将头结点指针指向temp指针的下一位 45 S->length--; 46 x=temp->data; 47 free(temp); //释放temp 48 printf("出栈成功\n"); 49 printf("出栈的值为%d",x); 50 } 51 //获取栈顶 52 int GetTop(LinkStack *S){ 53 LinkStackNode *p=S->top; 54 if(S->top==NULL){ 55 return printf("栈内暂无元素\n"); 56 } 57 return printf("栈顶的数为%d\n",S->top->data); 58 } 59 //求栈的长度 60 int GetLength(LinkStack *S){ 61 int n=1; 62 LinkStackNode *p=S->top; 63 while(p->next!=NULL){ 64 p=p->next; 65 n++; 66 } 67 return printf("栈长度为%d\n",n); 68 } 69 int main(){ 70 LinkStack S; 71 int x; 72 InitStack(&S); 73 while(true){ 74 printf("|||||||||||||||||||||||||||||||||||||||||||||||\n"); 75 printf("|| 1:入栈 ||\n"); 76 printf("|| 2:出栈 ||\n"); 77 printf("|| 3:查看栈顶元素 ||\n"); 78 printf("|| 4:查看栈长度 ||\n"); 79 printf("|| (输入-1退出系统) ||\n"); 80 printf("|||||||||||||||||||||||||||||||||||||||||||||||\n"); 81 int n; 82 printf("请输入操作序号:\n"); 83 scanf("%d",&n); 84 switch(n){ 85 case 1 : 86 Push(&S); 87 break; 88 case 2 : 89 // Pop(&S,&x); 90 // printf("出栈的值为%d\n",x); 91 Pop(&S); 92 break; 93 case 3 : 94 GetTop(&S); 95 break; 96 case 4 : 97 GetLength(&S); 98 break; 99 case -1: 100 return 0; 101 102 } 103 } 104 } 105
标签:LinkStackNode,return,temp,int,top,链式,printf,基本操作 来源: https://www.cnblogs.com/longlonglonglong/p/10984311.html