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

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

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

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

相关推荐
进击的六角龙5 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂5 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
VertexGeek6 分钟前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
湫ccc13 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤16 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~19 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang21 分钟前
python如何使用spark操作hive
hive·python·spark
q0_0p22 分钟前
牛客小白月赛105 (Python题解) A~E
python·牛客
极客代码26 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
庞传奇28 分钟前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow