Python数据结构-队列:
在Python中,队列(Queue)是一种常见的数据结构,它遵循先进先出(FIFO)的原则。队列保证顺序处理,有缓冲作用,在任务调度、资源分配等方面重要性突出,是诸多算法和场景的基础。下面是队列的基本用法:
队列的常用方法如下:
- 入队操作:将元素添加到队列的尾部。
- 出队操作:从队列的头部取出元素。
- 判断队满:获取队列的长度与其大小相比较
- 判断队空:比较队列长度与0是否相等
队列的常见应用场景包括:
- 排队系统:例如银行排队、医院挂号等。
- 任务调度:按顺序处理任务。
- 消息传递:按顺序处理消息。
class Queue: def __init__(self,size=100): self.queue=[0 for _ in range(size)] self.size=size self.rear=0 # 队尾指针 添加元素 self.front = 0 # 队首指针 删除元素 def push(self,element): if not self.is_filled(): self.rear = (self.rear + 1) % self.size # 圆圈 取模实现 self.queue[self.rear] = element else: raise IndexError("Queue is filled.") def pop(self): if not self.is_empty(): self.front=(self.front +1 ) % self.size return self.queue[self.front] else: raise IndexError("Queue is empty.") # 判断队空 def is_empty(self): return self.rear == self.front # 判断队满 def is_filled(self): return (self.rear + 1)% self.size == self.front q=Queue(5) for i in range(4): q.push(i) print(q.is_filled()) # True print(q.pop()) # 先进先出
- 在这个示例中,我们定义了一个队列类,包含入队、出队、判断队列是否为满和是否为空等方法。通过入队操作将元素添加到队列中,出队操作从队列头部取出元素。
不过,在平常刷题的时候偶尔会用到清空队列的操作,下面总结一下队列的清空方法:
class Queue: def __init__(self): self.queue = [] def enqueue(self, item): self.queue.append(item) def dequeue(self): if not self.is_empty(): return self.queue.pop(0) else: return None def is_empty(self): return len(self.queue) == 0 def clear(self): self.queue = [] # 创建队列对象 queue = Queue() # 入队操作 queue.enqueue(1) queue.enqueue(2) queue.enqueue(3) # 清空队列 queue.clear() # 检查队列是否为空 if queue.is_empty(): print("队列已清空")
这里,我们写了一个基本的队列框架并定义了一个简洁的队列对象,对其进行了入队和清空操作,并且判断了其最后是否为空。