python 堆栈
2024-01-08 02:10:54
栈(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"
文章来源:https://blog.csdn.net/qq_40107571/article/details/135396172
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!