队列/栈基本原理 ❗前置知识

简介: 本文介绍队列和栈两种“操作受限”的数据结构:队列遵循先进先出(FIFO),只能队尾入、队头出;栈遵循先进后出(FILO),仅在栈顶进行增删操作。二者底层多由数组或链表实现,核心API包括push、pop、peek和size,是后续复杂数据结构的基础。

计算机的两种存储方式,顺序存储(数组)和链式存储(链表)都讲完了,之后的所有数据结构都是基于这两种存储方式之上玩花活。
本文讲解队列和栈的基本原理,后面的文章会讲解如何用代码具体实现。
先说概念吧,其实队列和栈都是「操作受限」的数据结构。说它操作受限,主要是和基本的数组和链表相比,它们提供的 API 是不完整的。
比方说我们前面实现的数组和链表,增删查改的 API 都实现过了,你可以对任意一个索引元素进行增删查改,只要索引不越界,就随便你。
但是对于队列和栈,它们的操作是受限的:队列只能在一端插入元素,另一端删除元素;栈只能在某一端插入和删除元素。
形象地说,队列只允许在队尾插入元素,在队头删除元素,栈只允许在栈顶插入元素,从栈顶删除元素:
队列就像排队买票,先来的先买,后来的后买;栈就像一摞盘子,最先放的压在最下面,最后放的留在最上面,拿的时候也是最上面的先被拿走。所以我们常说,队列是一种「先进先出 FIFO」的数据结构,栈是一种「先进后出 FILO」的数据结构,就是这个道理。
当然,这个图中把栈竖着画,队列横着画,只是为了更形象,但实际上它们底层都是数组和链表实现的,后面会讲到。这两种数据结构的基本 API 如下:
// 队列的基本 API
class MyQueue {
// 向队尾插入元素,时间复杂度 O(1)
void push(E e);

// 从队头删除元素,时间复杂度 O(1)
E pop();

// 查看队头元素,时间复杂度 O(1)
E peek();

// 返回队列中的元素个数,时间复杂度 O(1)
int size();

}

// 栈的基本 API
class MyStack {
// 向栈顶插入元素,时间复杂度 O(1)
void push(E e);

// 从栈顶删除元素,时间复杂度 O(1)
E pop();

// 查看栈顶元素,时间复杂度 O(1)
E peek();

// 返回栈中的元素个数,时间复杂度 O(1)
int size();

}
不同编程语言中,队列和栈提供的方法名称可能不一样,但每个方法的效果肯定是一样的。

相关文章
|
4天前
|
Java 索引 容器
单/双链表代码实现
本文详解双链表与单链表的 MyLinkedList 实现,重点介绍三个关键优化:1)同时持有头尾节点引用,提升尾部操作效率;2)使用虚拟头尾节点简化边界处理;3)解析链表删除中的内存泄露误区,并强调指针置空的良好编程习惯。
|
14天前
|
弹性计算 缓存 运维
阿里云服务器ECS和其他云服务器对比,有哪些特点和优势?
阿里云ECS实例规格丰富,支持多种计算架构,覆盖全场景应用。具备弹性伸缩、分钟级扩容、高可用性与99.995% SLA保障,提供多重安全防护及灵活计费方式,助力企业降本增效,是稳定可靠、简单易用的首选云服务器。
137 41
|
14天前
|
人工智能 程序员 图形学
第一章 AI 编程革命的第一步:让 Cursor 真正“听懂”你要做一款游戏
第一章 AI 编程革命的第一步:让 Cursor 真正“听懂”你要做一款游戏
78 5
第一章 AI 编程革命的第一步:让 Cursor 真正“听懂”你要做一款游戏
|
25天前
|
人工智能 安全 调度
一文详解容器面向大模型与AI Agent的技术变革
在生成式人工智能迅猛发展的浪潮下,企业应用正加速从模型研究走向业务落地。无论是大规模的数据处理、超大参数模型的训练与推理,还是部署能够自动完成任务的AI Agent,这些场景都需要稳定、高效且可弹性伸缩的资源调度与管理能力。 容器凭借环境一致性、跨平台部署和高效调度等优势,天然契合AI场景对多样化算力、快速迭代和规模化分发的要求,成为AI时代事实上的原生基石。然而,要满足在生产规模下的需求,产品及技术形态需随之演进。 基于这一背景,本文将围绕大规模数据处理、模型训练、模型推理与AI Agent四个关键阶段,探讨AI场景对容器的核心需求,以及容器如何在各环节实现技术演进与升级。
210 2
一文详解容器面向大模型与AI Agent的技术变革
|
14天前
|
人工智能 自然语言处理 机器人
AI也会"三思而后答"?揭秘Self-RAG智能检索术
遇到AI胡说八道怎么办?Self-RAG就像给AI装了个"思考开关",让它知道什么时候该查资料、什么时候该独立思考,还能自我评估答案靠不靠谱。6步智能决策机制,让AI回答又准又稳!#人工智能 #RAG技术 #智能检索 #AI应用
104 11
|
8天前
|
存储 弹性计算 数据管理
阿里云OSS收费标准:流量费用、存储费及功能费价格表(详细计费规则)
阿里云OSS收费标准涵盖存储、流量及功能费用,支持按量付费与资源包两种模式。标准存储按量0.09元/GB/月,40GB包年9元,100GB包年99元,500GB预留空间118.99元/年。流量仅公网流出收费,闲时0.25元/GB,忙时0.5元/GB,可购流量包抵扣。开通Bucket免费,上传不收费,下载按流量计费。多种存储类型满足不同需求,成本透明灵活。
|
10天前
|
弹性计算 固态存储 关系型数据库
国内高性价比云服务器选型指南:阿里云低价机型配置与市场对比
今年,阿里云针对不同用户群体推出多款高性价比云服务器产品,覆盖轻量应用服务器与 ECS 实例,价格区间从 38 元 / 年至 160 元 / 月,适配个人开发、中小企业轻量业务等多种场景,具体核心机型信息如下:
|
26天前
|
人工智能 算法 搜索推荐
Geo优化“两大核心+四轮驱动”的深度解读与实践要点
本文将深度解读“两大核心+四轮驱动”Geo优化方式的优化要点,旨在为内容创作者和企业营销人员提供一套专业、可信、有深度的实践指南。
192 6
|
24天前
|
消息中间件 分布式计算 大数据
别让数据平台“盲开车”:可观测性三件套(指标、日志、追踪)到底怎么落地?
别让数据平台“盲开车”:可观测性三件套(指标、日志、追踪)到底怎么落地?
89 3