写一个代码:一个用单链表组成的循环队列,只设一个尾指针rear,不设头指针,请编写如下算法: (1) 向循环队列中插入一个元素为× 的结点; (2)从循环队列中删除一个结点。
时间: 2024-05-14 11:19:21 浏览: 116
以下是使用单链表组成的循环队列的 Python 代码,只设一个尾指针 rear,不设头指针,实现插入和删除操作:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class CircularQueue:
def __init__(self):
self.rear = None
def is_empty(self):
return self.rear is None
def enqueue(self, data):
new_node = Node(data)
if self.is_empty():
new_node.next = new_node
self.rear = new_node
else:
new_node.next = self.rear.next
self.rear.next = new_node
self.rear = new_node
def dequeue(self):
if self.is_empty():
raise Exception('Queue is empty')
elif self.rear.next == self.rear:
data = self.rear.data
self.rear = None
else:
data = self.rear.next.data
self.rear.next = self.rear.next.next
return data
```
这里使用了一个 Node 类来表示链表结点,CircularQueue 类实现了循环队列的基本操作。enqueue() 方法用于向队列中插入一个元素,如果队列为空,则创建一个新的结点,将 rear 指向该结点;如果队列不为空,则创建一个新的结点,将其插入到 rear 后面,并将 rear 指向该结点。dequeue() 方法用于删除一个结点,如果队列为空,则抛出异常;如果队列只有一个结点,则直接将 rear 置为 None;否则将 rear.next 指向要删除结点的下一个结点即可。
阅读全文