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

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

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

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

相关推荐
程序员小远44 分钟前
银行测试:第三方支付平台业务流,功能/性能/安全测试方法
自动化测试·软件测试·python·功能测试·测试工具·性能测试·安全性测试
光影少年2 小时前
angular生态及学习路线
前端·学习·angular.js
猫头虎3 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
沿着路走到底3 小时前
python 基础
开发语言·python
烛阴5 小时前
武装你的Python“工具箱”:盘点10个你必须熟练掌握的核心方法
前端·python
逆小舟6 小时前
【C/C++】指针
c语言·c++·笔记·学习
杨枝甘露小码6 小时前
Python学习之基础篇
开发语言·python
我是华为OD~HR~栗栗呀6 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试
武文斌776 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
递归不收敛6 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:1.3 特征工程与模型优化
pytorch·学习·机器学习