编写一个程序实现顺序队列的基本运算
时间: 2023-09-30 20:06:29 浏览: 85
以下是Python代码实现:
```python
class Queue:
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, item):
if self.is_full():
raise Exception("Queue is full")
self.data[self.rear] = item
self.rear = (self.rear + 1) % self.capacity
self.size += 1
def dequeue(self):
if self.is_empty():
raise Exception("Queue is empty")
item = self.data[self.front]
self.data[self.front] = None
self.front = (self.front + 1) % self.capacity
self.size -= 1
return item
def peek(self):
if self.is_empty():
raise Exception("Queue is empty")
return self.data[self.front]
def print_queue(self):
print("[", end="")
for i in range(self.size):
index = (self.front + i) % self.capacity
print(self.data[index], end="")
if i != self.size - 1:
print(", ", end="")
print("]")
```
其中,`capacity` 表示队列的容量,`front` 表示队列头部的索引,`rear` 表示队列尾部的索引,`size` 表示队列中元素的个数,`data` 是一个列表,用于存储队列中的元素。
`is_empty` 和 `is_full` 方法分别用于判断队列是否为空和是否已满。
`enqueue` 方法用于将元素加入队列中,如果队列已满,则抛出异常。
`dequeue` 方法用于从队列中取出元素,如果队列为空,则抛出异常。
`peek` 方法返回队列头部的元素,但不会将其从队列中删除。
`print_queue` 方法用于打印队列中的元素。
例如,可以使用以下代码测试队列的基本运算:
```python
q = Queue(5)
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
q.enqueue(5)
q.print_queue() # [1, 2, 3, 4, 5]
q.dequeue()
q.dequeue()
q.print_queue() # [3, 4, 5]
print(q.peek()) # 3
```