列表(list)是python中经常用到的基础数据结构,我们可以使用列表来模拟栈,实现入栈,出栈等效果。
stack = []
#入栈
stack.append(1)
print(stack)
stack.append(2)
print(stack)
stack.append(5)
print(stack)
#查看栈顶元素
top = stack[-1]
print('栈顶元素为:',top)
#出栈
stack.pop()
print(stack)
#判断栈是否为空
if stack:
print('Not Empty')
else:
print('Empty')
python的内置模块collections中包含了双向队列deque的数据结构类型,可以在队列的左端和右端实现入队和出队,在双向队列的右端指向入队和出队动作就可以模拟入栈和出栈。
from collections import deque
stack = deque()
#入栈
stack.append(1)
print(stack)
stack.append(2)
print(stack)
#出栈
a = stack.pop()
print(stack)
print(list(stack))
#判断栈是否为空
if list(stack):
print('栈不为空!')
else:
print('栈为空!')
可以使用在列表尾部添加元素模拟入队,列表头部删除元素模拟出队。
queue = []
#入队
queue.append(1)
print(queue)
queue.append(2)
print(queue)
queue.append(5)
print(queue)
#出队
queue.pop(0)
print(queue)
#判断队列是否为空
if queue:
print('Not Empty')
else:
print('Empty')
from collections import deque
queue = deque()
#入队
queue.append(1)
print(queue)
queue.append(1)
print(queue)
queue.append(7)
print(queue)
#出队
queue.popleft()
print(queue)
#在某位置插入元素
queue.insert(1,3)
print(queue)
#判断队列是否为空
if queue:
print('Not Empty')
else:
print('Empty')
python中内置了实现堆的模块,可以直接调用。
import heapq
#列表h
h = [1,4,5,2,7]
#对h进行最小堆排序
heapq.heapify(h)
print(h)
#删除堆顶元素
a = heapq.heappop(h)
print('堆顶元素为:',a)
print('堆排序为:',h)
#在堆中加入一个元素val,并对堆重新排序
val = 3
heapq.heappush(h,val)
print('堆排序为:',h)
#在堆中加入一个元素,保持堆得元素数量不变,如果加入的元素大于堆顶元素则删除堆顶元素。
val = 4
heapq.heapreplace(h,val)
print('堆排序为:',h)