数据结构——堆栈
来源:互联网 发布:证书制作软件 编辑:程序博客网 时间:2024/05/29 17:01
数据结构——堆栈
宗旨:技术的学习是有限的,分享的精神是无限的。
1、特性:先进后出(FILO)
2、应用:
子程序的调用
处理递归调用
表达式转换与求值
二叉树的遍历
图形的深度优化优先
3、用数组仿真堆栈
(1)堆栈数组结构
char stack[MAX_SIZE]; //堆栈的最大容量
int top = -1; //-1表示堆栈为空,随着堆栈中数据量的变动改变指向顶端的位置
(2)数据的存取
数据输入堆栈【push】:栈顶指针top+1;若top小于MAX_SIZE,则数据存入top所指的数组元素中,否则堆栈已满,无法存入数据。
void push(int value){ if(top >= MAX_SIZE) //堆栈已满 { printf("stackis full!\n"); } else { top++;//堆栈指针+1 stack[top] = value; //将数据压入栈中 }}
数据输出堆栈【pop】:若堆栈指针索引大于0(堆栈未空),则取出目前栈顶指针top所指数组内容;top-1指向下一个堆栈元素。
int pop(void){ int temp;//暂存从堆栈中取出的数据 int i; if(top < 0) // 堆栈为空,退出 { printf("stackis empty!\n"); return -1; } temp = stack[top]; //将数据pop出栈 top--; return temp;}
4、用链表仿真堆栈
(1)堆栈链表结构
typedef struct node{ int data; struct node *next;} list, *link;link stack = NULL; //向链表顶端的
(2)数据的存取
数据输入堆栈【push】:建立一个新节点;将新节点的指针指向原来堆栈指针所指的节点;将原来的节点指向新节点。
void push(int value){ link new; new = (link)malloc(sizeof(list)); new-> data = value; new-> next = stack; stack = new;}
数据输出堆栈【pop】:先保留栈头指针stack所指的位置;将堆栈指向下一个节点;取出原堆栈顶端指针所指的节点内容;释放原堆栈顶端指针所指的节点内存。
int pop(void){ link pop; int temp; if(stack != NULL) { pop = stack; stack = stack -> next; temp = pop -> data; free(pop); return temp; } return -1;}
0 0
- 数据结构——堆栈
- 数据结构——堆栈
- 数据结构笔记——堆栈
- 数据结构——队列、堆栈和哈希表
- Java数据结构02堆栈——《精华》
- 简单数据结构实现——堆栈
- 数据结构学习——堆栈代码
- 数据结构归纳——队列和堆栈
- 数据结构——堆栈和队列
- 数据结构——堆栈的基本操作
- 数据结构C语言实现系列——链式堆栈
- 【ShawnZhang】带你看数据结构——第五课:堆栈
- 浙大数据结构MOOC——堆栈链表注释
- 重温数据结构之四——队列与堆栈
- 数据结构:堆栈
- 数据结构--堆栈
- 数据结构--堆栈
- 数据结构-堆栈
- 校园网&openwrt记(五)构造udp包,Lua的int32运算和bit运算
- 设计模式(十)享元模式Flyweight(结构型)
- 约瑟夫环与POJ约瑟夫环题目解析
- forin
- qt 进度条
- 数据结构——堆栈
- Android多分辨率适配实践【1】使用字体图标(内含两枚神器)
- ZOJ-3601-Unrequited Love【9th浙江省赛】【模拟】【STL】
- Java排序算法总结之(三)——选择排序(简单选择排序、堆排序)
- iOS9上实现3D Touch功能之快速启动
- swift 循环强引用
- 逻辑斯谛回归总结
- 设计模式(十一)代理模式Proxy(结构型)
- BIT2014级软件学院程序设计-16 魔方