C语言数据结构——栈
来源:互联网 发布:去除数组重复元素js 编辑:程序博客网 时间:2024/05/29 18:33
数据结构的一些讲解,供学习者参考,也顺带作为复习
栈是限制在表的一端进行插入和删除的线性表,允许插入、删除的一段成为栈顶,另一个固定端称为栈底,当表中没有元素时称为空栈。如图所示的栈中有3个元素,进栈的顺序是a1、a2、a3,当需要出栈时其顺序为a3、a2、a1,所以栈又称为后进先出的线性表(Last In First Out),简称LIFO表。
初始置空栈算法
SeqStack *Init_SeqStack(){ SeqStack *s; s=(SeqStack *)malloc(sizeof(SeqStack));//申请栈空间 s->top=-1;//初始化栈顶指针 return s;}
判断是否为空栈
int Empty_SeqStack(SeqStack *s){ if(s->top==-1) return 1; else return 0;}
入栈算法
int Push_SeqStack(SeqStack *s,int x){ if(s->top==MAXSIZE-1)//栈满不能入栈 { printf("栈满不能入栈\n"); return 0; } else { s->top++; s->data[s->top]=x; return (printf("入栈成功!\n")); }}
出栈
int Pop_SeqStack(SeqStack *s,int *x){ if(Empty_SeqStack(s))//栈空不能出栈 return 0; else { *x=s->data[s->top];//栈顶元素存入*x,返回 s->top--;//更新栈顶指针 return 1; }}
取栈顶元素
int Top_SeqStack(SeqStack *s,int *x){ if(Empty_SeqStack(s))//栈空无元素 return 0; else { *x=s->data[s->top]; return 1; }}
输出栈内所有元素
int Out_SeqStack(SeqStack *s){ int i=s->top; if(Empty_SeqStack(s)) return 0; while(s->top>-1) { printf("%3d",s->data[s->top]); s->top--; } s->top=i; return 1;}
主函数实现
void main(){ int model,item,flag; SeqStack *seqstack=NULL; seqstack=Init_SeqStack(); while(1) { printf("请选择\n【1】入栈\n【2】出栈\n【3】取栈顶元素\n【4】输出栈内所有元素\n【5】退出程序\n"); printf("请输入: "); scanf("%d",&model); switch(model) { case 1: while(1) { printf("请输入插入的值('0'代表输入结束): "); scanf("%d",&item); if(item==0) break; if(!Push_SeqStack(seqstack,item)) break; } break; case 2: Pop_SeqStack(seqstack,&flag); printf("栈顶元素 %d 已成功出栈!\n",flag); break; case 3: Top_SeqStack(seqstack,&flag); printf("栈顶元素为: %d\n",flag); break; case 4: Out_SeqStack(seqstack); printf("\n"); break; case 5: exit(0); default : break; } }}
需要源代码的欢迎下载,免积分,共同学习,家下来每天都会分享一篇,持续一个星期
源程序下载请点击此处,欢迎指正
0 0
- C语言数据结构——栈
- 数据结构——栈(c语言)
- 数据结构C语言实现系列[2]——栈
- 数据结构C语言实现系列[2]——栈
- 数据结构——链栈的实现(C语言)
- 数据结构——顺序栈(C语言实现)
- 数据结构C 语言描述——实现栈的基本功能
- 数据结构(三)——栈(C语言实现)
- C语言数据结构——栈、行编辑程序
- 数据结构——双端堆(C语言)
- 数据结构——左高树(C语言)
- 数据结构——二项堆(C语言)
- 数据结构——单链表(C语言实现)
- C语言数据结构——顺序表
- C语言数据结构——单链表
- C语言数据结构——队列
- C语言数据结构——队列
- C语言数据结构——循环队列
- 菜鸟学python(8) 初识函数
- C 结构体的使用
- 最大公因数与最小公倍数
- 【OpenCV】分离多通道图像RGB的值
- hihoCoder 1241 Best Route in a Grid
- C语言数据结构——栈
- 在C#中连接SQL数据库
- Toast和Looper。Handler消息循环机制。
- Hdu 1894 String Compare
- 到底应不应该上培训班
- hdu 2066 一个人的旅行(加超级源点)
- Android View重绘和更新: invalidate和requestLayout
- java继承中除了public和protected成员方法外其余的属性是拥有非继承
- 数据结构学习笔记——顺序表和链表的比较