python手写一个普通队列
时间: 2023-10-29 13:05:09 浏览: 41
好的,我可以为您提供关于实现一个普通队列的 Python 代码。
下面是示例代码(包含队列的入队、出队、获取队列长度、判断队列是否为空的方法):
```python
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if self.is_empty():
return None
return self.items.pop(0)
def size(self):
return len(self.items)
```
使用方法如下:
```python
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print(q.size()) # 3
print(q.dequeue()) # 1
print(q.dequeue()) # 2
print(q.is_empty()) # False
print(q.dequeue()) # 3
print(q.is_empty()) # True
```
希望可以帮到您!
相关问题
如何用python实现一个普通队列
使用python内置的queue模块可以很方便地实现一个普通队列,代码如下:
```python
import queue
q = queue.Queue()
# 入队
q.put(1)
q.put(2)
q.put(3)
# 出队
print(q.get()) # 输出1
print(q.get()) # 输出2
print(q.get()) # 输出3
```
在这个例子中,我们创建了一个空的队列,然后使用put方法将元素1、2、3加入队列,并使用get方法将它们逐个取出。如果队列为空时调用get方法,程序会阻塞。如果想要非阻塞地取出队列中的元素,可以使用get_nowait方法。
python实现一个优先队列
可以使用heapq模块来实现一个优先队列,具体实现如下:
```python
import heapq
class PriorityQueue:
def __init__(self):
self._queue = []
self._index = 0
def push(self, item, priority):
heapq.heappush(self._queue, (-priority, self._index, item))
self._index += 1
def pop(self):
return heapq.heappop(self._queue)[-1]
```
在这个实现中,我们使用了一个元组 `(priority, index, item)`,其中 `priority` 是优先级,`index` 是为了在优先级相同时比较元素的顺序,`item` 是元素本身。由于 Python 的堆默认是小根堆,因此我们将优先级取负数,以便让优先级高的元素先出队。