(1)初始化一顺序队列(循环队列),要求从键盘输入5个整数入队,并依次读取队头元素输出,以理解队的先进先出特性。 (2)初始化一链队列,完成(1)中的任务。
时间: 2024-10-19 15:09:55 浏览: 34
C++链表类(对学生信息管理)与队列类.pdf
首先,让我们来看看如何使用顺序队列(循环队列)实现这个功能:
**顺序队列(循环队列)实现:**
```python
class CircularQueue:
def __init__(self, size=5):
self.queue = [0] * size
self.front = -1
self.rear = -1
# 入队操作
def enqueue(self, value):
if self.is_full():
print("队列已满,无法插入更多元素")
return
if self.front == -1:
self.front = 0
else:
self.rear = (self.rear + 1) % len(self.queue)
self.queue[self.rear] = value
# 出队操作
def dequeue(self):
if self.is_empty():
print("队列为空,无法删除元素")
return
value = self.queue[self.front]
if self.front == self.rear:
self.front = self.rear = -1
else:
self.front = (self.front + 1) % len(self.queue)
return value
# 检查队列是否为空
def is_empty(self):
return self.front == -1
# 检查队列是否已满
def is_full(self):
return (self.rear + 1) % len(self.queue) == self.front
# 示例
queue = CircularQueue()
for i in range(5):
num = int(input(f"请输入第{i+1}个整数:"))
queue.enqueue(num)
while not queue.is_empty():
print("队头元素为:", queue.dequeue())
```
在这个例子中,我们创建了一个循环队列并逐次接收用户输入的整数,然后将它们添加到队列尾部。当读取队列时,总是从队首开始。
对于链式队列(如单链表)的实现:
**链队列(单链表)实现:**
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
# 添加节点到链表尾部
def append(self, value):
new_node = Node(value)
if not self.head:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
# 从链表头部移除节点并返回值
def remove_first(self):
if not self.head:
return None
value = self.head.data
self.head = self.head.next
return value
# 遍历并打印链表
def display(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
# 示例
linked_list = LinkedList()
for i in range(5):
num = int(input(f"请输入第{i+1}个整数:"))
linked_list.append(num)
while linked_list.head:
print("队头元素为:", linked_list.remove_first())
```
这里我们创建了一个链式队列,每次添加元素时新节点会追加到链表尾部。读取时则从头节点开始移除并返回值。同样,用户可以逐次输入整数。
阅读全文