队列的python实现
队列(queue),是一种操作受限的线性表。只允许在队列的一端添加元素,在队列的另一端删除元素。能添加元素的一端称为队尾,能删除元素的一端称为队头。
队列最大的特性是:先进先出(FIFO,first in first out)
下面为普通队列的python实现:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "hsz" class Queue(object): """队列""" def __init__(self, maxsize=0): """maxsize<=0代表队列不限定大小""" self.queue = [] self.maxsize = maxsize def is_empty(self): return len(self.queue) == 0 def is_full(self): if self.maxsize <= 0: return False else: return len(self.queue) == self.maxsize def enqueue(self, item): """入队""" if self.is_full(): raise Exception("Queue is full!") else: self.queue.append(item) def dequeue(self): """出队""" if self.is_empty(): raise IndexError("Queue is empty!") else: return self.queue.pop(0) def size(self): return len(self.queue) def get_front(self): """ 返回队头元素 :return: """ if self.is_empty(): raise IndexError("Queue is empty!") else: return self.queue[0] def get_rear(self): """ 返回队尾元素 :return: """ if self.is_empty(): raise IndexError("Queue is empty!") else: return self.queue[-1] def print_queue(self): return self.queue if __name__ == "__main__": # 实例化对象队列 queue = Queue() # 入队四个数 queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) queue.enqueue(4) print(queue.queue) # [1, 2, 3, 4] print(queue.is_empty()) # False 队列不为空 print(queue.is_full()) # False 队列没有到最大元素 # 出队 先入先出 出的是1 所有剩 [2,3,4] queue.dequeue() print(queue.queue) # 返回队列的元素个数 3 print(queue.size()) # 获取队列的头数据 2 print(queue.get_front()) # 获取队列的尾数据 4 print(queue.get_rear()) # 打印队列所有数据 [2,3,4] print(queue.print_queue())
打印结果为:
[1, 2, 3, 4] False False [2, 3, 4] 3 2 4 [2, 3, 4]
其他类型待续。。。