数据结构_栈

github地址:
https://github.com/arkulo56/thought/blob/master/software/dataStruct/数据结构_栈.md

https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/stack.png
https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/stack.png

定义

限定仅在表尾进行插入和删除操作的线性表

也是线性表,一种特殊的线性表

凡是那些需要临时保存前面数据元素的场景!访问轨迹、撤销命令、递归函数等等

规则

  • 栈底的位置是永远不变的,栈顶执行一切操作
  • 顺序存储时,指针指向栈顶
  • 顺序存储时,栈的删除和添加都是在栈顶的,因此效率比普通的线性表高
  • 顺序存储时,两栈可以共享空间。就是一个大数组里面包含两个栈,栈顶相对
  • 链式存储时,第一个节点(不是头节点)就是栈顶,最后一个节点就是栈底

操作

入栈(栈顶)、出栈(栈顶)

应用

斐波那契数列 ----------------------------------

公式:F(n) = F(n-1)+F(n-2)

四则运算表达式(后缀表达式/逆波兰表达式) ---------------------------------------

表达式:9+(3-1)*3+10/2 (这就是中缀表达式)第一个+记作+[1],第二个+记作+[2]

后缀表达式:931-3*+[1]102/2+[2]

编号 后缀表达式 运算符 说明
1 9 +[1]
2 93 +[1](
3 931 +[1](-
4 931- +[1] 反括号优先级
5 931- +[1]* *号优先级高于+
6 931-3 +[1]*
7 931-3*+[1] +[2] +[2]的优先级小于等于原先的运算符
8 931-3*+[1]10 +[2]
9 931-3*+[1]10 +[2]/
10 931-3*+[1]102 +[2]/
11 931-3*+[1]102/+[2]

最后得到逆波兰式:931-3*+102/+

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先需要介绍栈和队列与线性表的关系栈:栈是限定在表尾进行插入和删除的线性表队列:队列是只允许在一段进行插入操作,在...
    梁炜东阅读 447评论 0 2
  • 1. 栈 Stack 定义:限定仅在表尾进行插入和删除操作的线性表。即后进先出的线性表(Last In First...
    Lost_Robot阅读 1,261评论 0 1
  • 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行,也就是说只能在栈顶进行插入(...
    Qi0907阅读 401评论 0 0
  • 三十八、越早越好 1.所谓的理财,理论上并不应该狭义地理解为去银行买理财产品。存钱、做预算、控制开销、赚更多利息、...
    王侦阅读 528评论 0 7
  • 西庄有个棋痴,人都称他混沌。他对万事模糊,惟独精通围棋。他走路跌跌斜斜,据说是踩着棋格走,步步都是绝招。棋自然是精...
    信者阿三阅读 729评论 0 2