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了,就到这里叭~~~

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

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

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

相关推荐
撸码到无法自拔12 分钟前
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
人工智能·pytorch·python·深度学习·缓存
韩先超19 分钟前
2025年3月,韩先超对国网宁夏进行Python线下培训
python·ai·云原生·kubernetes·devops
yz1.1 小时前
[sklearn] 特征工程
python·机器学习·sklearn
老歌老听老掉牙1 小时前
Open CASCADE学习|实现裁剪操作
c++·学习·opencascade·裁剪
hello_ejb33 小时前
聊聊Spring AI Alibaba的SentenceSplitter
人工智能·python·spring
新辞旧梦4 小时前
企业微信自建消息推送应用
服务器·python·企业微信
虎头金猫4 小时前
如何解决 403 错误:请求被拒绝,无法连接到服务器
运维·服务器·python·ubuntu·chatgpt·centos·bug
小彭律师5 小时前
使用VSCode在Windows 11上编译运行项目
ide·windows·vscode
技术求索者6 小时前
c++学习
开发语言·c++·学习
dqsh067 小时前
树莓派5+Ubuntu24.04 LTS串口通信 保姆级教程
人工智能·python·物联网·ubuntu·机器人