栈(Stack)和队列(Queue)是两种基础且重要的线性数据结构,它们在算法设计、系统实现(如函数调用栈、任务调度)中广泛应用
栈Stack和队列Queue是两种基础且重要的线性数据结构它们在算法设计、系统实现如函数调用栈、任务调度中广泛应用。栈Stack特点后进先出LIFO, Last In First Out核心操作push()入栈在栈顶添加元素pop()出栈移除并返回栈顶元素peek()/top()查看栈顶元素不删除isEmpty()判断是否为空实现方式可用数组顺序栈或链表链式栈实现。典型应用括号匹配、表达式求值中缀转后缀、递归模拟、浏览器回退、函数调用栈。队列Queue特点先进先出FIFO, First In First Out核心操作enqueue()入队在队尾添加元素dequeue()出队移除并返回队首元素front()访问队首元素isEmpty()/size()实现方式循环数组避免假溢出、链表链式队列、双端队列Deque等。典型应用广度优先搜索BFS、任务调度、打印任务队列、消息缓冲。⚠️ 注意标准队列仅允许一端入、另一端出而**双端队列Deque**支持两端插入/删除兼具栈与队列特性。# 简单栈实现基于列表classStack:def__init__(self):self.items[]defpush(self,x):self.items.append(x)defpop(self):returnself.items.pop()ifself.itemselseNonedefpeek(self):returnself.items[-1]ifself.itemselseNone# 简单队列实现使用collections.deque高效实现fromcollectionsimportdequeclassQueue:def__init__(self):self.itemsdeque()defenqueue(self,x):self.items.append(x)defdequeue(self):returnself.items.popleft()ifself.itemselseNonedeffront(self):returnself.items[0]ifself.itemselseNone两者时间复杂度在合理实现下均为push/enqueue、pop/dequeue、peek/front→O(1)均摊空间复杂度O(n)n为元素个数。仅用两个栈记为stack_in和stack_out实现一个队列核心思想是利用栈的LIFO特性模拟队列的FIFO行为通过“倒腾”即元素在两栈间转移来保证出队顺序。✅实现原理入队enqueue所有新元素统一压入stack_inO(1)出队dequeue或查看队首front若stack_out为空则将stack_in中所有元素逐个弹出并压入stack_out此时顺序反转原先进入的元素变为栈顶符合FIFO然后从stack_out弹出或查看栈顶元素O(1)若stack_out非空直接操作它O(1) 关键点元素最多被移动一次从stack_in→stack_out因此均摊代价很低。✅Python 示例实现classMyQueue:def__init__(self):self.stack_in[]# 用于入队self.stack_out[]# 用于出队defpush(self,x):self.stack_in.append(x)# O(1)defpop(self):ifnotself.stack_out:whileself.stack_in:# 将in中所有元素倒入out最多执行n次但均摊O(1)self.stack_out.append(self.stack_in.pop())returnself.stack_out.pop()ifself.stack_outelseNone# O(1) 均摊defpeek(self):ifnotself.stack_out:whileself.stack_in:self.stack_out.append(self.stack_in.pop())returnself.stack_out[-1]ifself.stack_outelseNone# O(1) 均摊defempty(self):returnnotself.stack_inandnotself.stack_out# O(1)⏱️时间复杂度分析操作最坏情况均摊时间复杂度说明push()O(1)O(1)直接appendpop()O(n)O(1)倒腾仅在stack_out为空时发生n个元素最多被移动1次 → 总n次操作耗时O(n) ⇒ 均摊O(1)peek()O(n)O(1)同pop均摊分析一致empty()O(1)O(1)仅检查两栈是否为空空间复杂度O(n)存储所有元素每个元素至多同时存在于一个栈中。⚠️ 注意不能每次pop都全量倒腾——必须惰性转移仅当stack_out为空时才倒否则退化为O(n)每次操作。

相关新闻

【小白系列】零基础入门风格迁移与 GAN:从原理到趣味实践|全流程拆解 + 疑难解答

【小白系列】零基础入门风格迁移与 GAN:从原理到趣味实践|全流程拆解 + 疑难解答

文章目录 零基础入门风格迁移与GAN:从原理到趣味实践 引言:当技术邂逅艺术,AI如何玩转“风格穿越”? 一、风格迁移:让图像在艺术风格间“穿越” 1. 什么是风格迁移? 2. 如何实现风格迁移?靠神经网络“拆解+重组” (1)内容损失:确保“灵魂不变” (2)风格损失:确保“…

2026/10/3 5:01:54 阅读更多 →
AI图片落地失败率高达63%?一线技术总监亲授:4类场景识别法+3步合规校验清单

AI图片落地失败率高达63%?一线技术总监亲授:4类场景识别法+3步合规校验清单

更多请点击: https://codechina.net 第一章:AI图片落地失败率高企的真相解构 AI图像生成技术在实验室中展现出惊人能力,但实际业务场景中的落地失败率却普遍超过65%(据2024年Gartner AI工程化实践报告)。这一反差并非…

2026/10/2 9:39:18 阅读更多 →
Governed Context Vault:Claude Code上下文管理工具详解

Governed Context Vault:Claude Code上下文管理工具详解

今天来看一个专门为 Claude Code 和协作场景设计的上下文管理工具——Governed Context Vault。这个开源项目采用 AGPL 协议,提供 CLI 命令行界面,核心目标是解决大模型开发和使用过程中的上下文管理难题。对于经常使用 Claude Code 的开发者来说&#x…

2026/10/7 16:22:40 阅读更多 →

最新新闻

Slack自主AI代理实战:从被动问答到主动处理团队工作流

Slack自主AI代理实战:从被动问答到主动处理团队工作流

不少人应该有过这种体验:团队里的 Slack 群聊永远是红点轰炸现场,问个问题没人理、催个进度半天没回音、跨部门协作更是像在玩拼图。大多数团队部署的 AI 机器人,本质是个“问答盒子”,你问一句它答一句,你不问它绝不开…

2026/10/10 8:55:31 阅读更多 →
Web应用架构深度解析:从三层架构到微服务的演进与实践

Web应用架构深度解析:从三层架构到微服务的演进与实践

这套东西其实是从上世纪90年代一路演进过来的,经历了CGI、Servlet、JSP、Struts、Spring MVC、前后端分离、微服务这么几个大阶段,但不管壳怎么换,里面的核心骨架始终没变——就是表现层、业务层、数据层的三层职责切分,以及在Web…

2026/10/10 8:55:31 阅读更多 →
办公用品直售推荐系统全栈实战:SpringBoot+Vue前后端分离设计

办公用品直售推荐系统全栈实战:SpringBoot+Vue前后端分离设计

1. 项目概述1.1 核心需求解析办公用品直售系统这个方向其实一直很有搞头。大多数企业采购日常办公用品的流程还很原始——行政翻商品目录、人工比价、邮件审批、月底对账,效率低不说,采购记录还不透明。平时咱们做管理系统做得多了,这次我决定…

2026/10/10 8:55:30 阅读更多 →
A*算法核心实现详解:从代码拆解到路径规划实战

A*算法核心实现详解:从代码拆解到路径规划实战

“直接上代码”,这话我写算法笔记的时候常说。很多朋友学A*算法,一开始就被“启发函数”“开闭列表”“路径回溯”这些术语劝退了,翻了几篇理论文章,脑子里记住了公式,手却写不出一行能跑的代码。所以这篇我不按套路讲…

2026/10/10 8:55:30 阅读更多 →
深度学习中算法建立识别车辆 目标跟踪数据集 YOLO行人等多目标的实时检测和跟踪,通过PyQt5设计了简约的系统UI界面

深度学习中算法建立识别车辆 目标跟踪数据集 YOLO行人等多目标的实时检测和跟踪,通过PyQt5设计了简约的系统UI界面

使用深度学习中的YOLOv5和OCTrack算法建立识别车辆、行人等多目标的实时检测和跟踪,通过PyQt5设计了简约的系统UI界面 行人车辆多目标实时检测与跟踪系统 文章目录使用深度学习中的YOLOv5和OCTrack算法建立识别车辆、行人等多目标的实时检测和跟踪,通过…

2026/10/10 8:55:30 阅读更多 →
Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用

Steve Brunton | Reinforcement Learning | 笔记 | Lecture 3 | 深度强化学习在流体动力学与控制中的应用

目录前言1. 引言2. 强化学习框架回顾3. 流体动力学中的应用分类4. 鱼群游动研究5. 强化学习加速计算6. 综述与常用算法7. 流动控制8. 非稳态流体环境中的飞行控制9. 总结结语参考前言 学习 Steven Brunton 讲授的强化学习入门概述视频,本篇文章记录第三讲&#xff1…

2026/10/10 8:54:30 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →