数据结构与算法(Python)[超详细版本] 02-1 栈-定义及特性

1.定义及特性

栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。

假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。栈中元素按a1,a2,a3,…an的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)(LIFO, Last In First Out)
在这里插入图片描述

1. 定义

限定只能在表的一端进行插入和删除运算的线性表。

2. 逻辑结构

与线性表相同,仍为一对一( 1:1)关系。

3. 存储结构

用顺序栈或链栈存储均可,但以顺序栈更常见

4. 操作规则

只能在栈顶运算,且访问结点时依照后进先出(LIFO)或先进后出(FILO)的原则。

5. 实现方式

关键是编写入栈和出栈函数,具体实现依顺序栈或链栈的存储结构有别而不同。
基本操作有:建栈、判断栈满或栈空、入栈、出栈、读栈顶元素值,等等。

Q1:堆栈是什么?它与一般线性表有什么不同?

堆栈是一种特殊的线性表,它只能在表的一端(即栈顶)进行插入和删除运算。
与一般线性表的区别:仅在于操作规则不同。

一般线性表
逻辑结构1:11:1
存储结构:顺序表、链表顺序栈、链栈
运算规则随机存取运算规则:后进先出

后进先出
“进”=插入=压入=Push(an+1)
“出”=删除=弹出=Pop(an)

Q2:顺序表和顺序栈的操作有何区别?

在这里插入图片描述
在这里插入图片描述
栈不存在的条件: base=NULL;
栈为空 的条件 : base=top;
栈满的条件 : top-base=stacksize;

Q3:什么叫“向上生成”的栈? “向下生成”又是何意?

若入栈动作使地址向高端增长,称为“向上生成”的栈;
若入栈动作使地址向低端增长,称为“向下生成”的栈;
对于向上生成的栈:
入栈口诀:堆栈指针top “先压后加” : S[top++]=an+1
出栈口诀:堆栈指针top “先减后弹” : e=S[–top]

Q4:为什么要设计栈?它有什么独特用途?

  1. 调用函数或子程序非它莫属;
  2. 递归运算的有力工具;
  3. 用于保护现场和恢复现场;
  4. 简化了程序设计的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值