当前位置: 首页 > wzjs >正文

青岛胶东建设国际机场网站怎样宣传自己的品牌

青岛胶东建设国际机场网站,怎样宣传自己的品牌,做视频用的网站,今日头条开放api接口Python数据结构进阶:栈与队列的实现与应用 一、栈(Stack) 1.1 定义与特性 后进先出(LIFO)原则: 最后添加的元素最先被移除 类比场景:网页浏览器的返回按钮、餐厅盘子叠放1.2 核心操作 操作时…

Python数据结构进阶:栈与队列的实现与应用


一、栈(Stack)

1.1 定义与特性

后进先出(LIFO)原则:
最后添加的元素最先被移除
类比场景:网页浏览器的返回按钮、餐厅盘子叠放

1.2 核心操作

操作时间复杂度功能说明
push()O(1)元素入栈
pop()O(1)移除栈顶元素
peek()O(1)查看栈顶元素
is_empty()O(1)判断栈是否为空

1.3 典型应用场景

案例1:括号匹配验证

输入示例:"([{}])" → 有效

错误示例:"({[)]}" → 无效

案例2:逆波兰表达式求值

表达式:["4", "13", "5", "/", "+"] → 等价于 4 + (13 / 5)


二、队列(Queue)

2.1 定义与特性

先进先出(FIFO)原则:
最先添加的元素最先被移除
类比场景:超市结账排队、打印机任务队列

2.2 核心操作

操作时间复杂度功能说明
enqueue()O(1)元素入队
dequeue()O(1)移除队首元素
front()O(1)查看队首元素
is_empty()O(1)判断队列是否为空

2.3 典型应用场景

案例1:任务调度系统

处理顺序:请求1 → 请求2 → 请求3

案例2:广度优先搜索(BFS)

遍历顺序:层级1 → 层级2 → 层级3


三、Python实现代码

3.1 栈的实现(三种方式)

# 方式1:使用列表实现
class ListStack:def __init__(self):self.items = []def push(self, item):self.items.append(item)def pop(self):return self.items.pop()def peek(self):return self.items[-1] if not self.is_empty() else Nonedef is_empty(self):return len(self.items) == 0# 方式2:使用collections.deque
from collections import deque
class DequeStack:def __init__(self):self.container = deque()def push(self, val):self.container.append(val)def pop(self):return self.container.pop()def peek(self):return self.container[-1] if self.container else None# 方式3:自定义链表实现
class Node:def __init__(self, value):self.value = valueself.next = Noneclass LinkedListStack:def __init__(self):self.top = Nonedef push(self, item):new_node = Node(item)new_node.next = self.topself.top = new_nodedef pop(self):if self.top is None:raise Exception("Stack is empty")value = self.top.valueself.top = self.top.nextreturn value

3.2 队列的实现(两种方式)

# 方式1:使用deque双端队列
from collections import deque
class ListQueue:def __init__(self):self.items = deque()def enqueue(self, item):self.items.append(item)def dequeue(self):return self.items.popleft() if self.items else Nonedef front(self):return self.items[0] if self.items else None# 方式2:循环数组实现
class CircularQueue:def __init__(self, capacity):self.capacity = capacityself.queue = [None]*capacityself.head = 0self.tail = 0self.size = 0def enqueue(self, item):if self.size == self.capacity:raise Exception("Queue is full")self.queue[self.tail] = itemself.tail = (self.tail + 1) % self.capacityself.size += 1def dequeue(self):if self.size == 0:return Noneitem = self.queue[self.head]self.head = (self.head + 1) % self.capacityself.size -= 1return item

四、每日挑战:括号匹配验证

4.1 问题描述

实现函数 is_valid_parentheses(s)

输入示例: 
"()[]{}" → 返回True
"([)]"   → 返回False
"({[]})" → 返回True

4.2 实现思路

  1. 创建空栈和映射表 {')': '(', ']': '[', '}': '{'}
  2. 遍历每个字符:
    • 左括号:入栈
    • 右括号:检查栈顶是否匹配
  3. 最后检查栈是否为空

4.3 参考答案

def is_valid_parentheses(s: str) -> bool:stack = []mapping = {')': '(', ']': '[', '}': '{'}for char in s:if char in mapping.values():stack.append(char)elif char in mapping.keys():if not stack or stack[-1] != mapping[char]:return Falsestack.pop()return not stack

五、扩展练习

  1. 实现支持最小值查询的栈(要求所有操作O(1)时间复杂度)
  2. 用队列实现栈的push/pop/top操作
  3. 设计循环队列实现(参考Leetcode 622题)
  4. 实现逆波兰表达式计算器(参考Leetcode 150题)

通过这个结构化的教程,学习者可以系统掌握栈和队列的核心概念,并通过代码实践和挑战题目深化理解。建议按照以下学习路径:

  1. 理解基本概念 → 2. 手写实现代码 → 3. 完成每日挑战 → 4. 尝试扩展练习
http://www.dtcms.com/wzjs/174643.html

相关文章:

  • 郑州市网站和公众号建设好推建站
  • 广西建设执业注册中心中心网站深圳发布最新通告
  • 网站建设技术服务协议长沙网站托管seo优化公司
  • 如何在台湾做企业网站网络营销做得比较好的企业
  • 界面设计器深圳百度seo公司
  • 泉州市建设网站数据分析培训班
  • 国内知名网站制作公司百度排行榜
  • 网站架构设计的意义拼多多女装关键词排名
  • 怎么把电脑当服务器做网站谷歌广告推广怎么做
  • 青岛的网站设计友情链接赚钱
  • 网站建设服务58外链网盘源码
  • 注册网站怎么做网站影视后期哪个培训靠谱
  • app宣传推广方案重庆seo教程博客
  • 全国安装平台有哪些天津seo排名公司
  • 打开浏览器seo提供服务
  • 定位网站关键词网站统计工具有哪些
  • 中国建设银行山东省分行网站app联盟推广平台
  • 用虚拟主机做网站竞价外包托管费用
  • 做一个公司官网合肥建站公司seo
  • 安徽seo网站培训机构需要哪些证件
  • 中国工商注册网企业年报系统seo排名培训公司
  • 网站网页设计公司有哪些有域名和服务器怎么建网站
  • 网站建设三亚优秀网站设计赏析
  • 广州各区优化疫情防控措施杭州seo工作室
  • 做产品批发的网站有哪些seo站点是什么意思
  • 做网站营销公司排名百度导航最新版本
  • 招聘网站开发计划书网络营销策划书的主要内容
  • 厦门外贸网站找谁常州网站推广排名
  • 如何建设一个视频网站seo网站推广培训
  • 北京网站建设设计公司sem竞价开户