python的栈和队列其实都算作一个数组,栈从最后一个元素开始推出,队列从第一个元素开始推出
# pop(0)删除时间复杂度O(n)
s = [] #栈
q = [] #队列
s.append(1)#1入栈
q.append(1)#1入队
s.pop()#出栈
q.pop(0)#出队
由于从第一个元素删除需要挪动数组,所以可以采用双向链表代替,时间复杂度大大降低
# 时间复杂度较低的方法,这是一个双向链表,可做栈和队列
# 前后插入删除的时间复杂度为O(1)
s = collections.deque()
a.append(1) #入栈或入队
s.popleft() #出队
s.popright() #出栈