韩顺平_PHP程序员玩转算法公开课(第一季)06_堆栈在内存中存在形式剖析_学习笔记_源代码图解_PPT文档整理

时间:2023-02-12 09:17:24

文西马龙:http://blog.csdn.net/wenximalong/

堆栈——最神奇的数据结构
0.提出问题
1.堆栈的概念
2.堆栈的实际运用
3.用数组模拟栈
4.完成以自定义优先级的综合计算器

刚开始学习的时候,没感觉到有多大的用处,后来在工作过程中,当你发现要处里,比如先入后出的这种情况的时候,就会发现堆栈非常的有用了

准确的说,堆是堆,栈是栈

0.提出问题
输入一个表达式:计算7*2*2-5+1-5*3-3 怎么搞定

1.堆栈的概念
一个先入后出(FILO-First In Last Oot)的有序列表。堆栈(stack)的限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,成为(Top),另一端为固定的一端,称为栈底(Bottom)。根据堆栈的定义而知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素(或者取元素)刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。
韩顺平_PHP程序员玩转算法公开课(第一季)06_堆栈在内存中存在形式剖析_学习笔记_源代码图解_PPT文档整理

2.堆栈的实际运用
(1)子程序的调用:在跳往子程序前,会先讲下个指令的地址存到堆栈中,直到子程序执行完毕后再讲地址取出,回到原来的程序中。
韩顺平_PHP程序员玩转算法公开课(第一季)06_堆栈在内存中存在形式剖析_学习笔记_源代码图解_PPT文档整理
(2)处里递归调用:和子程序的调用类似,只是除了存储下一个指令的地址外,也将参数、区域变量等数据存入堆栈中。
(3)表达式的转换与求值。 //综合的计算器
(4)二叉树的遍历。 //前序遍历,后序遍历,中序遍历
(5)图形的深度优先(depth-first)搜索法。 //搜索算法


韩顺平_PHP程序员玩转算法公开课_学习笔记_源代码图解_PPT文档整理_目录