python进阶笔记(4)——双端队列
概念常用方法实现代码示例
概念
双端队列(dequeue,全名 double-ended queue),队列的进阶版,一种具有队列和栈的性质的数据结构。
双端队列可以从两端弹出元素(出队)或插入元素(入队),但也仅限于两端,与队列和栈相同。
常用方法
dequeue() 创建一个空的双端队列is_empty() 判断队列是否为空add_front(item) 从队头添加一个新的元素itemadd_rear(item) 从队尾添加一个新的元素itemremove_front() 从队头删除一个元素remove_rear() 从队尾删除一个元素size() 返回队列的大小
实现代码示例
class Dequeue():
"""双端队列"""
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
):
"""头部删除"""
return self
.items
.pop
(0)
def remove_rear(self
):
"""尾部删除"""
return self
.items
.pop
()
def size(self
):
"""列表大小"""
return len(self
.items
)
if __name__
== '__main__':
d
= Dequeue
()
d
.add_front
(3)
d
.add_front
(2)
d
.add_front
(1)
d
.add_rear
('a')
d
.add_rear
('b')
d
.add_rear
('c')
print(d
.size
())
print(d
.remove_front
())
print(d
.remove_front
())
print(d
.remove_front
())
print(d
.remove_rear
())
print(d
.remove_rear
())
print(d
.remove_rear
())