栈(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/7/26 23:39:38 阅读更多 →
AI图片落地失败率高达63%?一线技术总监亲授:4类场景识别法+3步合规校验清单

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

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

2026/7/26 23:39:38 阅读更多 →
Governed Context Vault:Claude Code上下文管理工具详解

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

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

2026/7/26 23:39:38 阅读更多 →

最新新闻

TMS320C54x DSP内存映射与I/O模拟配置实战指南

TMS320C54x DSP内存映射与I/O模拟配置实战指南

1. 项目概述与核心价值在嵌入式系统开发,尤其是DSP这类资源受限、架构独特的处理器上,内存映射配置和I/O模拟是每个开发者都必须跨越的一道坎。这不仅仅是调试器里的几个菜单选项或命令行参数,它直接关系到你的程序能否在目标板上正确运行、能…

2026/7/27 0:01:55 阅读更多 →
xcku5p-ffvb676-2-i 设计 RoCEv2 时 constraints.xdc 配置依据核查记录

xcku5p-ffvb676-2-i 设计 RoCEv2 时 constraints.xdc 配置依据核查记录

constraints.xdc 配置依据核查记录 被核查文件:fpga/vitis/xcku5p/build/constraints/constraints.xdc 目标板卡:RK-XCKU5P-F V1.2(搭载 xcku5p-ffvb676-2-i) 移植母本:fpga/pynq/rfsoc-pynq/build/constraints/constraints.xdc(NVIDIA Holoscan Sensor Bridge 参考工程)…

2026/7/27 0:01:55 阅读更多 →
C54x DSP流水线机制深度解析:RET、XC、CC指令周期与中断响应

C54x DSP流水线机制深度解析:RET、XC、CC指令周期与中断响应

1. 项目概述:C54x DSP流水线机制深度剖析在嵌入式DSP开发领域,尤其是面对德州仪器(TI)的C54x系列数字信号处理器时,我们常常会听到一个词:“流水线”。很多工程师在编写汇编代码时,只是模糊地知…

2026/7/27 0:01:55 阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻