python 堆栈

栈(Stack):

  • 栈是一种后进先出(LIFO)的数据结构,意味着最后进入栈的元素将首先被取出。
  • 栈通常用于存储局部变量、函数调用等信息,这些信息在程序运行时动态生成和销毁。
  • 栈的大小在程序编译时就已经确定,且对程序员是透明的,即程序员无法直接控制栈的大小。
  • 当程序需要更多的内存空间时,如果栈空间不足,可能会导致栈溢出。

Python 的内置数据类型 list 可以用来模拟栈的行为,因为它支持后进先出(LIFO)的插入和删除操作。可以使用 append() 方法将元素压入栈顶,使用 pop() 方法弹出栈顶元素。

class Stack:
    def __init__(self):
        self.stack = []

        # 入栈操作

    def push(self, item):
        self.stack.append(item)

        # 出栈操作

    def pop(self):
        if not self.is_empty():
            return self.stack.pop()
        else:
            return None

            # 查看栈顶元素

    def peek(self):
        if not self.is_empty():
            return self.stack[-1]
        else:
            return None

            # 判断栈是否为空

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

s = Stack()
s.push("apple")
s.push("banana")
s.push("cherry")
print(s.pop())  # 输出: "cherry"
print(s.peek())  # 输出: "banana"

堆(Heap):

  • 堆是用于动态分配内存的区域,它可以随着程序的运行而增长或缩小。
  • 堆允许程序员直接控制内存的申请和释放,这使得它非常灵活,但也可能导致内存泄漏或碎片化问题。
  • 堆的大小远远超过栈,且可以动态地增长和缩小。
  • 堆的内存分配通常比栈慢,因为需要搜索可用内存空间。

Python 的内置数据类型 dict 可以用来模拟堆的行为,因为它可以动态地分配和释放内存。可以使用 dict 类型来创建和存储对象,并使用 del 语句来释放对象所占用的内存

队列

队列(Queue)是一种先进先出(First In First Out,FIFO)的数据结构,它遵循这样的原则:最先进入队列的元素将最先离开。这种数据结构的主要操作包括入队(enqueue)和出队(dequeue)。

import queue

# 创建一个队列
q = queue.Queue()

# 入队操作
q.put("apple")
q.put("banana")
q.put("cherry")

# 出队操作
print(q.get())  # 输出: "apple"
print(q.get())  # 输出: "banana"
print(q.get())  # 输出: "cherry"

你可能感兴趣的:(算法,开发语言)