队列-Python 实现
Posted 宁鸣而死
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列-Python 实现相关的知识,希望对你有一定的参考价值。
用 Python 来实现 队列和双端队列, 直接上代码理解即可. 队列蛮好理解的, 就是模拟咱生活中的排队. 先进, 先出嘛.
"""
队列 - ADT
队列 Queue 被构造为在队尾添加元素, 队首删除元素的有序集合, FIFO
Queue(): 创建一个空队列
enqueue(itme): 入队, 将元素添加到队尾
dequeue(): 出队, 删除队首元素并返回
is_empty(): 判断队列是否为空
sise(): 返回队列中的元素个数
思路:
用 list 作为底层, 约定, 最左端为队尾, 最右端为队首
"""
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
"""添加元素到队尾"""
self.items.insert(0, item)
def dequeue(self):
"""删除队首元素并返回"""
return self.items.pop()
def is_empty(self):
return self.items == []
def size(self):
return len(self.items)
if __name__ == '__main__':
q = Queue()
for i in range(1,6):
q.enqueue(i)
print(q.size())
print(q.dequeue())
print(q.dequeue())
print(q.is_empty())
Dquue - 双端队列
"""
Deque
双端队列被构造为项的集合, 可以从队首或队尾任意一段增删元素.
Deque(): 创建一个新的Deque
add_front(item): 从队首添加元素
add_rear(item): 从队尾添加元素
remove_front(item): 从队首删除元素, 并返回
remove_rear(item): 从队尾删除元素, 并返回
is_empty(): 判断队列是否空
size(): 返回队列中的项数
思路:
用 list 作为底层架构, 并约定, 最左边为对尾, 最右侧为对首
"""
class Deque:
def __init__(self):
self.items = []
def add_front(self, item):
"""队首添加元素"""
self.items.append(item)
def remove_front(self):
"""队首删除元素"""
return self.items.pop()
def add_rear(self, item):
"""队尾添加元素"""
self.items.insert(0, item)
def remove_rear(self):
"""删除队尾元素"""
return self.items.pop(0)
def is_empty(self):
return self.items == []
def size(self):
return len(self.items)
if __name__ == '__main__':
dq = Deque()
for i in range(3):
dq.add_front(i)
print(dq.size())
dq.add_rear(-1)
print(dq.remove_front())
print(dq.size())
以上是关于队列-Python 实现的主要内容,如果未能解决你的问题,请参考以下文章