个人网站模板设计步骤,wordpress 缓存 收录,小说主角重生之后做网站,广告设计培训学校栈#xff08;Stack#xff09;
定义
栈是一种后进先出#xff08;Last In First Out, LIFO#xff09;的数据结构。它类似于一个容器#xff0c;只能在一端进行插入和删除操作。栈有两个主要的操作#xff1a;push#xff08;入栈#xff09;和 pop#xff08;出栈…栈Stack
定义
栈是一种后进先出Last In First Out, LIFO的数据结构。它类似于一个容器只能在一端进行插入和删除操作。栈有两个主要的操作push入栈和 pop出栈.
基本操作
push入栈将一个元素添加到栈顶.def push(self, item):self.items.append(item)pop出栈移除栈顶的元素并返回该元素.def pop(self):if not self.is_empty():return self.items.pop()return Nonepeek查看栈顶元素查看栈顶的元素但不移除它.def peek(self):if not self.is_empty():return self.items[-1]return Noneis_empty检查栈是否为空判断栈是否为空.def is_empty(self):return len(self.items) 0size获取栈的大小返回栈中元素的数量.def size(self):return len(self.items)实现方式
栈可以用数组或链表来实现。以下是使用 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()return Nonedef peek(self):if not self.is_empty():return self.items[-1]return Nonedef is_empty(self):return len(self.items) 0def size(self):return len(self.items)应用场景
函数调用栈在编程语言中函数调用时会使用栈来存储函数的局部变量和返回地址等信息.表达式求值用于计算算术表达式如逆波兰表达式后缀表达式的求值.回溯算法如迷宫求解、八皇后问题等使用栈来保存回溯过程中的状态.页面浏览历史浏览器的前进和后退功能可以使用栈来实现.
队列Queue
定义
队列是一种先进先出First In First Out, FIFO的数据结构。它类似于一个队列元素从一端进入从另一端出去。队列有两个主要的操作enqueue入队和 dequeue出队.
基本操作
enqueue入队将一个元素添加到队列的尾部.def enqueue(self, item):self.items.append(item)dequeue出队移除队列头部的元素并返回该元素.def dequeue(self):if not self.is_empty():return self.items.pop(0)return Nonepeek查看队首元素查看队列头部的元素但不移除它.def peek(self):if not self.is_empty():return self.items[0]return Noneis_empty检查队列是否为空判断队列是否为空.def is_empty(self):return len(self.items) 0size获取队列的大小返回队列中元素的数量.def size(self):return len(self.items)实现方式
队列可以用数组或链表来实现。以下是使用 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)return Nonedef peek(self):if not self.is_empty():return self.items[0]return Nonedef is_empty(self):return len(self.items) 0def size(self):return len(self.items)应用场景
任务调度操作系统中的进程调度、打印机任务队列等按照任务到达的顺序进行调度.缓冲处理如网络数据包的传输缓冲、音频播放缓冲等确保数据的顺序性和完整性.广度优先搜索BFS在图的遍历算法中使用队列来存储待访问的节点.客户服务系统如银行排队系统、呼叫中心等按照客户到达的顺序提供服务.
总结
栈适合需要回溯或撤销操作的场景如函数调用、表达式求值等.队列适合需要保持元素顺序的场景如任务调度、缓冲处理等.
栈和队列在实际应用中非常广泛理解它们的原理和操作方式对于解决各种编程问题具有重要意义.