请编写循环队列的各种基本操作,并在此基础上设计一个主程序,完成如下功能: (1)初始化循环队列; (2)用户输入一个元素,将此元素插入此队列中; (3)将队头元素出队,并且打印到屏幕上。
时间: 2024-10-23 18:19:02 浏览: 44
循环队列的基本操作和实现
4星 · 用户满意度95%
循环队列是一种特殊的线性表,数据的插入和删除操作都发生在队列的一端,另一端作为索引,当一端满时,索引会自动移动到另一端开始,以此实现“队尾插入,队头删除”的特性。
以下是循环队列的基本操作:
1. 初始化循环队列(Enqueue/InitQueue):创建一个新的循环队列并设置初始容量。
```python
classCircularQueue:
def __init__(self, size):
self.queue = [None] * size
self.head = -1
self.tail = -1
```
2. 入队(Enqueue):向队尾添加一个元素。
```python
def enqueue(self, value):
if self.is_full():
return "Queue is full"
else:
if self.head == -1:
self.head = 0
self.tail = (self.tail + 1) % len(self.queue)
self.queue[self.tail] = value
return "Element added successfully"
```
3. 出队(Dequeue):从队头移除并返回元素,如果队列为空则返回空值。
```python
def dequeue(self):
if self.is_empty():
return "Queue is empty"
else:
removed_value = self.queue[self.head]
if self.head == self.tail:
self.head = self.tail = -1
else:
self.head = (self.head + 1) % len(self.queue)
return removed_value
```
4. 查看队列是否为空(IsEmpty)和满(IsFull)。
```python
def is_empty(self):
return self.head == -1 and self.tail == -1
def is_full(self):
return (self.tail + 1) % len(self.queue) == self.head
```
主程序示例:
```python
# 初始化循环队列
cq = CircularQueue(5)
while True:
print("Options:")
print("1. Enqueue")
print("2. Dequeue")
print("3. Exit")
choice = input("Enter your choice: ")
if choice == '1':
element = int(input("Enter an element to add: "))
result = cq.enqueue(element)
print(result)
elif choice == '2':
if not cq.is_empty():
dequeued_element = cq.dequeue()
print(f"Removed element: {dequeued_element}")
else:
print("No elements to dequeue.")
elif choice == '3':
break
else:
print("Invalid choice. Please try again.")
```
在这个主程序中,用户可以选择入队、出队或退出,根据用户的输入执行相应的循环队列操作。
阅读全文