循环队列的对外接口优雅代码
时间: 2023-07-24 08:07:46 浏览: 36
以下是循环队列的对外接口优雅的代码实现:
```python
class CircularQueue:
def __init__(self, capacity):
self.capacity = capacity
self.front = 0
self.rear = 0
self.size = 0
self.data = [None] * capacity
def is_empty(self):
return self.size == 0
def is_full(self):
return self.size == self.capacity
def enqueue(self, val):
if self.is_full():
raise ValueError('Queue is full')
self.data[self.rear] = val
self.rear = (self.rear + 1) % self.capacity
self.size += 1
def dequeue(self):
if self.is_empty():
raise ValueError('Queue is empty')
val = self.data[self.front]
self.front = (self.front + 1) % self.capacity
self.size -= 1
return val
def peek(self):
if self.is_empty():
raise ValueError('Queue is empty')
return self.data[self.front]
def __len__(self):
return self.size
def __repr__(self):
return '[' + ', '.join(str(self.data[(self.front + i) % self.capacity]) for i in range(self.size)) + ']'
```
以上代码实现了基本的循环队列,并提供了如下接口:
- `is_empty()`:判断队列是否为空
- `is_full()`:判断队列是否已满
- `enqueue(val)`:将元素`val`入队
- `dequeue()`:将队头元素出队
- `peek()`:返回队头元素但不出队
- `__len__()`:返回队列元素个数
- `__repr__()`:返回队列的字符串表示形式