堆和栈其实就是存储和获取数据的一种方式
堆是先进后出,跟在容器里面装东西一样,先进去的会被压在底下,最后放进去的在最上层,所以会先拿出来.
栈是先进先出,就像是一个管道,先进去的在管道的一端,依次排开,取的时候是从另一边开始取,最先进入的会先出来
一般来说,正常的存储获取数据就是堆,而栈则需要定义一个双端列表,就像管道一样
堆
一般的操作都是堆的形式
#定义一个num的集合,向里面依次加数据
num = []
num.append(1)
print(num)
num.append(2)
print(num)
num.append(3)
print(num)
num.append(4)
print(num)
num.append(5)
print(num)
#取数据,一个一个的取
re = num.pop()
print(re)
print(num)
re = num.pop()
print(re)
print(num)
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
5
[1, 2, 3, 4]
4
[1, 2, 3]
栈
需要定义一个双端列表,然后在双端列表里添加和取出数据
# 导入库
import collections
#定义双端列表
num = collections.deque()
#添加数据
num.append(1)
print(num)
num.append(2)
print(num)
num.append(3)
print(num)
num.append(4)
print(num)
#依次取出数据
re = num.popleft()
print(re)
print(num)
re = num.popleft()
print(re)
print(num)
re = num.popleft()
print(re)
print(num)
deque([1])
deque([1, 2])
deque([1, 2, 3])
deque([1, 2, 3, 4])
1
deque([2, 3, 4])
2
deque([3, 4])
3
deque([4])