栈和队列知识点

栈与队列:数据结构基础及应用

栈和队列

栈和队列是限定插入和删除只能在表的端点进行的线性表

在这里插入图片描述
栈的特点
后进先出

求解一下算法需要利用“栈”
在这里插入图片描述


队列的特点
先进先出
在这里插入图片描述
利用队列可解决排队问题
在这里插入图片描述



只能在表尾进行插入或删除操作的线性表
又称为后进先出的线性表。
在这里插入图片描述
操作
在这里插入图片描述
进栈
在这里插入图片描述在这里插入图片描述
思考题
在这里插入图片描述
栈的特点
逻辑结构:与线性表相同,仍为一对一关系。
存储结构顺序栈链栈存储均可,但以顺序栈更常见。
实现方式:关键是编写入栈出栈函数,具体实现依顺序栈或链栈的不同而不同。

栈与一般线性表的区别
1.一般线性表
逻辑结构:一对一
存储结构:顺序表、链表
运算规则随机存取

2.栈
逻辑结构:一对一
存储结构:顺序栈、链栈
运算规则后进先出(LIFO)


队列
是一种先进先出(FIFO)的线性表。在表一端插入(表尾),在另一端(表头)删除。图示如下

在这里插入图片描述
队列的特点
头删尾插
逻辑结构:与线性表相同,仍为一对一关系
存储结构顺序队链队,以循环顺序队列更常见。
运算规则:队首队尾运算,依照先进先出原则。
实现方式:关键是掌握入队出队操作,具体实现依顺序队链队的不同而不同。


参考文献:数据结构与算法基础(青岛大学-王卓)

### 数据结构中的队列 #### 的概念与特性 是一种遵循后进先出(LIFO, Last In First Out)原则的线性数据结构。这意味着最后被压入的元素会最先弹出[^1]。通常支持两个基本操作:`push` `pop`,分别用于向顶添加元素以及移除顶元素。 以下是的一个简单实现示例: ```python class Stack: def __init__(self): self.items = [] def push(self, item): self.items.append(item) def pop(self): if not self.is_empty(): return self.items.pop() def is_empty(self): return len(self.items) == 0 def peek(self): if not self.is_empty(): return self.items[-1] def size(self): return len(self.items) ``` #### 队列的概念与特性 队列则是一种先进先出(FIFO, First In First Out)的数据结构。最早进入队列的元素会被优先处理。队列的主要操作包括 `enqueue` `dequeue`,前者用来在队尾插入新元素,后者用来从队首移除元素。 下面是一个基于列实现的队列例子: ```python class Queue: def __init__(self): self.items = [] def enqueue(self, item): self.items.append(item) def dequeue(self): if not self.is_empty(): return self.items.pop(0) def is_empty(self): return len(self.items) == 0 def front(self): if not self.is_empty(): return self.items[0] def size(self): return len(self.items) ``` #### 双端队列的特点 双端队列(Deque)结合了队列的功能,允许在一端或两端执行插入删除操作[^2]。这种灵活性使得双端队列成为一种非常强大的工具,在许多算法场景下都能发挥重要作用。 #### 存储方式 无论是还是队列,它们都可以通过顺序存储或者链式存储的方式来实现。对于顺序存储而言,通常是利用数组作为底层容器;而链式存储则是借助指针连接各个节点形成链条状结构[^3]。 需要注意的是,尽管队列属于线性范畴,但由于其特定的操作约束条件限制了随机访问能力——也就是说无法像普通线性那样随意获取其中间位置上的任意元素。 #### 应用领域 - **的应用**: 达式求值、括号匹配检测、函数调用管理等。 - **队列的应用**: 打印任务调度、广度优先搜索(BFS)、银行排队系统模拟等问题解决过程中经常需要用到队列机制。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值