双端队列deque
双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。
双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。
代码实现
"""双端队列"""""
class Deque(object):
def __init__(self):
self.data = []
def add_front(self,item):
"""从队头加入一个item元素"""
return self.data.insert(0,item)
def add_rear(self,item):
"""从队尾加入一个item元素"""
return self.data.append(item)
def remove_front(self):
"""从队头删除一个item元素"""
return self.data.pop(0)
def remove_rear(self):
"""从队尾删除一个item元素"""
return self.data.pop()
def is_empty(self):
"""判断双端队列是否为空"""
return self.data == []
def size(self):
"""返回队列的大小"""
return len(self.data)
if __name__ == '__main__':
deque = Deque()
# 当成栈使用
print("当成栈使用 ")
deque.add_rear(1)
deque.add_rear(2)
deque.add_rear(3)
print(deque.remove_rear())
print(deque.remove_rear())
print(deque.remove_rear())
# 当成队列使用
print(" 当成队列使用 ")
deque.add_front(1)
deque.add_front(2)
deque.add_front(3)
print(deque.remove_rear())
print(deque.remove_rear())
print(deque.remove_rear())