请编写一个队列管理程序,要求采用带头结点的链队结构,其功能如下:(队 列操作的实现) (1) 队列初始化为空队列 (2) 偶数入队及,奇数出队,并显示操作后队列中的值 (3) 输入 0 则结束程序。
时间: 2024-10-12 11:13:43 浏览: 37
下面是一个简单的Python代码示例,它实现了带头节点的链式队列以及你所描述的操作:
```python
class Node:
def __init__(self, value=None):
self.value = value
self.next = None
class Queue:
def __init__(self):
self.head = None
self.tail = None
# 初始化空队列
def init_queue(self):
self.head = None
self.tail = None
print("Queue initialized as an empty queue.")
# 入队操作,偶数位置添加元素
def enqueue(self, value):
if not self.head:
self.head = Node(value)
self.tail = self.head
else:
new_node = Node(value)
if value % 2 == 0: # 如果是偶数位置
self.tail.next = new_node
self.tail = new_node
else: # 如果是奇数位置,插入到头节点之后
current = self.head
while current.next is not None and current.next.value % 2 != 0:
current = current.next
current.next = new_node
if current.next is None: # 当前已经是最后一个元素,设新节点为尾部
self.tail = new_node
# 出队操作,奇数位置移除并打印元素
def dequeue(self):
if self.head is None:
print("Queue is already empty.")
return
elif self.head.value % 2 != 0: # 如果是奇数位置
current = self.head
self.head = self.head.next
print(f"Removed element: {current.value}")
if not self.head: # 队列变空
self.tail = None
else:
print("Dequeue operation can only remove odd-positioned elements.")
# 主函数,处理用户输入
def main(self):
while True:
input_val = int(input("Enter a number (0 to exit): "))
if input_val == 0:
break
else:
self.enqueue(input_val)
self.dequeue()
# 创建队列实例并运行
queue = Queue()
queue.init_queue()
queue.main()
```
这个程序首先定义了一个Node类用于创建链表节点,然后实现了一个Queue类,包含了初始化、入队和出队操作。主函数会循环读取用户的输入,如果输入是0则退出程序,否则按照奇数入偶数出的原则进行操作。
阅读全文