链式栈的基本操作
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现