数据结构 | 堆栈

堆栈是一个有序列表,仅允许在栈顶进行数据的添加和删除。文章介绍了堆栈的基本概念,包括栈底和栈顶元素,以及推入(push)和弹出(pop)操作。堆栈在CPU处理、表达式处理、子程序调用等方面有广泛应用,还特别讨论了堆栈在处理中缀、前缀和后缀表达式以及运算符优先级中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

堆栈

1. 堆栈(stack)是一个抽象的逻辑结构,顾名思义它是将对象堆放在一起,一个一个往上叠放,但要取出时,则只能从最上层拿取,不能从中间取出对象。

2. 堆栈的定义:堆栈是一个有序列表(ordered list),而且只能在一个特定的出入口进行数据的添加或删除。

3. 以集合的角度来看堆栈,则有以下定义:

如果集合 S = {a1,a2,...,ai,...,aj,...,an} 为一个堆栈,则称 a1 为栈底(bottom)元素,它是最早添加的数据;而 an 称为栈顶(top)元素,它是最后添加的。|S| = n,代表堆栈中有 n 个元素;如果n = 0, 代表空堆栈;如果堆栈的最大容量是 k (可放 k 个元素),则 n = k 时称为堆栈已满(full),即堆栈中不能再放入元素了,但可以取出元素。如果i < j,则表示  比 先被放入堆栈,取出时 aj 会比 ai 先被取出。

4. 加入元素到堆栈中称为推入(push),从堆栈中取出元素称为弹出(pop)。

5. 堆栈的应用:

  •     CPU处理。
  •     表达式的处理。
  •     子程序的调用。
  •     递归程序的调用。
  •     二叉树的走访。
  •     图形的深度优先法遍历。

6. 表达式的应用

中缀表示法:(1+2)*3-4

前缀表示法: -*+1234

后缀表示法:12+3*4-

7. 运算符的优先级

 

优先级

运算符

1

括号

2

 

负号

3

**(次方)

4

*、/、%

5

+、-

6

<、<=、>=、>

7

==、!=

8

&&

9

||

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值