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

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

在 Python 中,栈和队列是常见的数据结构,通常用来处理不同类型的数据存储和操作。Python 内置的 listcollections.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了,就到这里叭~~~

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

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

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

相关推荐
mykj15512 小时前
英语单词APP解锁学习新方式,智能高效背单词
学习·英语单词app
知识分享小能手2 小时前
深度学习学习教程,从入门到精通,深度学习中的正则化 — 完整知识点与代码示例(7)
人工智能·深度学习·学习
benchmark_cc3 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
~kiss~3 小时前
Agent 的 未来吗?String: An Agentic OS Where Every App Is a Markdown File
学习
HugoStudio_SWAN4 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
2601_962382434 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅5 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python
veminhe5 小时前
python调用接口获取网络信息
python
UIU1146 小时前
scanf与cout的误区:探究其内部的机制
c++·学习·c#·scanf
Allen_LVyingbo6 小时前
医疗AI基础2026-构建可靠智能体的编程路径(上)
大数据·数据库·人工智能·python·自动化