day38-栈和队列理论学习【python】

day38-栈和队列理论学习【pyhton】

在 Python 中,栈和队列是常见的数据结构,通常用来处理不同类型的数据存储和操作。Python 内置的 list 和 collections.deque 可以实现这两种数据结构。以下是详细的讲解和代码实现:

栈(Stack)

栈是一种后进先出(LIFO, Last In First Out)的数据结构。我们可以使用 Python 的 list 来实现栈,栈的主要操作包括:

  1. 入栈(Push): 将元素添加到栈顶。
  2. 出栈(Pop): 从栈顶移除并返回元素。
  3. 查看栈顶元素(Peek/Top): 返回栈顶元素但不移除。
  4. 检查栈是否为空(Is Empty): 判断栈是否包含任何元素。
使用 list 实现栈

代码示例:

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()
        raise IndexError("Pop from empty stack")

    def peek(self):
        if not self.is_empty():
            return self.items[-1]
        raise IndexError("Peek from empty stack")

    def is_empty(self):
        return len(self.items) == 0

    def size(self):
        return len(self.items)

# 使用示例
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)

print("栈顶元素:", stack.peek())  # 输出 3
print("栈大小:", stack.size())    # 输出 3

print("出栈元素:", stack.pop())   # 输出 3
print("栈是否为空:", stack.is_empty())  # 输出 False

队列(Queue)

队列是一种先进先出(FIFO, First In First Out)的数据结构。在 Python 中,我们可以使用 collections.deque 来实现队列,队列的主要操作包括:

  1. 入队(Enqueue): 将元素添加到队列尾部。
  2. 出队(Dequeue): 从队列头部移除并返回元素。
  3. 查看队列头部元素(Peek/Front): 返回队列头部元素但不移除。
  4. 检查队列是否为空(Is Empty): 判断队列是否包含任何元素。
使用 collections.deque 实现队列

代码示例:

python 复制代码
from collections import deque

class Queue:
    def __init__(self):
        self.items = deque()

    def enqueue(self, item):
        self.items.append(item)

    def dequeue(self):
        if not self.is_empty():
            return self.items.popleft()
        raise IndexError("Dequeue from empty queue")

    def peek(self):
        if not self.is_empty():
            return self.items[0]
        raise IndexError("Peek from empty queue")

    def is_empty(self):
        return len(self.items) == 0

    def size(self):
        return len(self.items)

# 使用示例
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)

print("队列头部元素:", queue.peek())  # 输出 1
print("队列大小:", queue.size())    # 输出 3

print("出队元素:", queue.dequeue())   # 输出 1
print("队列是否为空:", queue.is_empty())  # 输出 False

总结

  • 栈(Stack) : 使用 Python 的 list 实现。主要操作有 push, pop, peek, 和 is_empty。
  • 队列(Queue) : 使用 collections.deque 实现。主要操作有 enqueue, dequeue, peek, 和 is_empty。

这两种数据结构可以通过这些操作灵活地处理和存储数据。在实际应用中,选择使用哪种数据结构取决于具体的需求和场景。


ok了,就到这里叭~~~

​ ++如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!++

​ ++如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!++

​ ++如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!++

相关推荐
障碍的枫子2 分钟前
我的第一个Agent
开发语言·python·langchain
打工仔折腾 AI4 分钟前
260+异构同步链路实战:如何用语义化自动翻译破解CDC DDL同步痛点
人工智能·后端·python·自然语言处理·性能优化·langchain·机器翻译
曲径海盗19 分钟前
【Python 学习第 33 天】条件判断 if/else
python·学习笔记·编程入门
xian_wwq21 分钟前
【学习笔记】Milvus 是什么?为什么 RAG 系统经常使用它?-14
笔记·学习·milvus
硫酸锌0131 分钟前
安卓手机连接Windows电脑后通过DHCP服务为手机分配IP地址
android·windows·计算机网络
把我格子衫拿来42 分钟前
鼠标点到哪里才算选中?Qt 与 VTK 的拾取坐标、DPI 与体素定位
python·qt·vtk·坐标变换·三维交互
自信1504130575943 分钟前
重生之从0开始学习c++之string(下)
c++·学习·stl
kmomo..1 小时前
Linux 驱动开发学习笔记:UART、触摸屏与 ADC 驱动实战
linux·驱动开发·学习
泡茶喝茶写代码1 小时前
A股量化策略回测实战:从行情数据到绩效评估(第 1 篇):回测引擎从零搭建
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
RobinDevNotes1 小时前
SGLang 上手:重复的前缀只算一次
人工智能·python·深度学习·sglang·c4python