堆和栈

来源:互联网 发布:java接收json对象 编辑:程序博客网 时间:2024/06/06 02:01

堆和栈其实就是存储和获取数据的一种方式

堆是先进后出,跟在容器里面装东西一样,先进去的会被压在底下,最后放进去的在最上层,所以会先拿出来.
栈是先进先出,就像是一个管道,先进去的在管道的一端,依次排开,取的时候是从另一边开始取,最先进入的会先出来
一般来说,正常的存储获取数据就是堆,而栈则需要定义一个双端列表,就像管道一样

这里写图片描述
一般的操作都是堆的形式

#定义一个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])1deque([2, 3, 4])2deque([3, 4])3deque([4])