双端队列
队列两端都可以实现入队和出队操作
双端队列的实现
- 依然采用items=[ ]列表实现
- insert(0, item)实现头入队
- append()实现另一端入队
- pop(0)实现头出队
- pop()实现另一端出队
class Deque(object):
"""双端队列"""
def __init__(self):
self.items = [] # 队列、栈的实现几乎都是采用列表
def is_empty(self):
"""判断队列是否为空"""
return self.items == []
def add_front(self, item):
"""从队头插入数据"""
self.items.insert(0, item)
def add_rear(self, item):
"""在队尾添加元素"""
self.items.append(item)
def remove_front(self):
"""从队头删除元素"""
self.items.pop(0)
def remove_rear(self):
"""从队尾删除元素"""
return self.items.pop()
def size(self):
"""返回队列长度"""
return len(self.items)
测试:
if __name__=="__main__":
deque = Deque()
deque.add_front(1)
deque.add_front(2)
deque.add_rear(3)
deque.add_rear(4)
print(deque.size())
print(deque.remove_front())
print(deque.remove_front())
print(deque.remove_rear())
print(deque.remove_rear())
4
None
None
4
3