Python队列
FIFO
一、单向队列
- 使用list实现队列基本的方式:
- 队首head:list最后一个list[-1]元素,出队(pop)的位置,使用list.pop实现
- 队尾tail:list第一个list[0]元素,入队(push)的位置,使用list.insert实现
入列(push)
使用list.insert()方法,在list第一个元素[0]位置插入数据项
出列(pop)
使用list.pop()方法,将list最后一个元素[-1]位置弹出数据项
class Queue:
def __init__(self):
self.items=[]
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def is_empty(self):
return self.items==[]
def size(self):
return len(self.items)
if __name__=="__main__":
queue=Queue()
queue.push('first')
queue.push('second')
queue.push('third')
queue.push('forth')
print(queue.size())
print(queue.items)
print(queue.pop())
print(queue.items)
print(queue.pop())
print(queue.items)
print(queue.size())
二、双向队列
双向队列,队首、队尾均可入队、出队
使用list实现队列基本的方式:
- 队首head:list的最后一个list[-1]元素
- 队尾tail:list的第一个list[0]元素
队首操作
- push_head:使用list.append()方法实现,在list的最后一个位置[-1]添加元素
- pop_head:使用list.pop()方法实现,将list最后一个位置[-1]元素弹出
- 队尾操作
- push_tail:使用list.insert(0)方法实现,在list[0]位置插入一个元素
- pop_tail:使用list.pop(0),将list[0]元素弹出
class DoubleQueue:
def __init__(self):
self.items=[]
def push_tail(self, item):
self.items.insert(0,item)
def pop_tail(self):
return self.items.pop(0)
def push_head(self,item):
self.items.append(item)
def pop_head(self):
return self.items.pop()
def is_empty(self):
return self.items==[]
def size(self):
return len(self.items)
if __name__=="__main__":
queue=DoubleQueue()
queue.push_tail('first')
queue.push_tail('second')
queue.push_tail('third')
queue.push_tail('forth')
print(queue.size())
print(queue.items)
print(queue.pop_head())
print(queue.items)
queue.push_tail("five")
print(queue.items)
print(queue.pop_tail())
print(queue.items)
queue.push_head("zero")
print(queue.items)
print(queue.size())
print(queue.is_empty())