[04数据结构]栈和队列的基本理解、操作和笔试题

本文详细介绍了栈和队列这两种基本数据结构的定义、实现方式以及常见应用。栈是一种后进先出的线性表,通常使用数组实现,常用于括号匹配、表达式求值等问题。队列则是一种先进先出的数据结构,常通过链表实现,常见于操作系统中的生产者消费者模型。此外,文章还讨论了栈和队列的笔试题,包括如何用队列实现栈和栈实现队列的问题。

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

本章我可能会犯错、要注意的点:

  1. 栈本质上是线性表,只不过比较特殊,是一种只允许在一端操作的受限制的线性表。
  2. 数组栈而不选链式栈的原因是:因为数组在尾上插入数据的代价比较小。
  3. 出栈、取栈顶元素需要先判断是否栈【】  。如果栈空,则不能操作,会崩。需要断言:assert(!StackEmpty(ps));
  4. 销毁栈很有必要,要防止内存泄漏。因为StackPop只是把数据弹栈,并没有把空间还回去。
  5. 栈使用顺序结构(数组栈);而队列使用链式结构(链式队列)。
  6. 为什么队列还要再单独定义head,tail?而单链表不需要?                                                                                                                ————    因为队列只能一边进,另一边出。所以定义head,tail,可以很好地体现价值;而单链表不需要定义
  7. 入队   <==>   尾插       ;      出队   <==>  头删
  8. 出队(   注意: 1. 判断队列是否被删完了    2. tail野指针问题   )。

目录

1.栈

1.1栈的结构及概念

1.2栈的实现

(1)定义栈

(2)初始化栈

(3)销毁栈

(4)压栈

(5)出栈

(6)取栈顶元素

(7)栈的大小

(8)栈是否为空

(9)遍历栈( 从栈顶到栈底 )

1.3栈的应用

2.队列

2.1队列的概念及结构

2.2队列的实现

(1)定义队列以及队列指针

(2)初始化队列

(3)销毁队列

(4)是否为空队列

(5)入队(尾插)

(6)出队(  注意: 1.判断队列是否被删完了    2.tail野指针问题)

(7)取队尾数据

(8)取队头数据

(9)队列大小

(10)遍历数据

2.3队列应用(操作系统:“ 生产者消费者 ” 模型)

栈与队列笔试题

(1)括号匹配问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.阿Q.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值