数据结构(二)—— 线性结构(2):堆栈

数据结构系列内容的学习目录 → \rightarrow 浙大版数据结构学习系列内容汇总

2. 堆栈

2.1 什么是堆栈

  计算机如何进行表达式求值?
  例: 算术表达式 5 + 6 / 2 − 3 ∗ 4 5+6/2-3* 4 5+6/234,正确理解为 5 + 6 / 2 − 3 ∗ 4 = 5 + 3 − 3 ∗ 4 = 8 − 3 ∗ 4 = 8 − 12 = − 4 5+6/2-3* 4=5+3-3* 4=8-3* 4=8-12 =-4 5+6/234=5+334=834=812=4
     • 由两类对象构成:
       ⋄ \diamond 运算数,如2、3、4
       ⋄ \diamond 运算符号,如+、-、*、/
     • 不同运算符号优先级不一样
  中缀表达式: 运算符号位于两个运算数之间。如, a + b ∗ c − d / e a+b*c- d/e abcd/e
  后缀表达式: 运算符号位于两个运算数之后。如, a b c ∗ + d e / − a b c*+d e/- abc+de/
  例如 5 + 6 / 2 − 3 ∗ 4 5+6/2-3* 4 5+6/234可以表达为 62 / 3 − 42 ∗ + 62/3-42*+ 62/342
  后缀表达式求值策略:从左向右“扫描”,逐个处理运算数和运算符号。
    1. 遇到运算数怎么办?如何“记住”目前还未参与运算的数?
    2. 遇到运算符号怎么办?对应的运算数是什么?
  启示: 需要有种存储方法,能顺序存储运算数,并在需要时“倒序”输出!

  栈(stack)又名堆栈,它是一种运算受限的线性表,限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
  堆栈是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

  堆栈(Stack): 具有一定操作约束的线性表
     ⋄ \diamond 只在一端(栈顶, Top)做插入、删除
     ⋄ \diamond 插入数据:入栈(Push)
     ⋄ \diamond 删除数据:出栈(Pop)
     ⋄ \diamond 后入先出:Last In First Out (LIFO)

2.2 堆栈的抽象数据类型描述

  类型名称: 堆栈(Stack)
  数据对象集: 一个有0个或多个元素的有穷线性表
  操作集: 长度为MaxSize的堆栈S ∈ ∈ Stack,堆栈元素item ∈ ∈ ∈</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值