编写结点类和带有尾部指针的单链表实现队列LinkQueue,基本操作包括:初始化队列,判断队列是否为空,求队列长度,查看队头元素,将元素入队,将队头元素出队并返回其值
时间: 2023-06-09 08:07:13 浏览: 97
数据结构算法 习题 答案 带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针).pdf
5星 · 资源好评率100%
好的,我理解了您的要求。下面是答案:
首先,我们需要编写一个结点类Node,用于实现带有尾部指针的单链表。
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
```
然后,我们可以利用Node类来实现LinkQueue类,代码如下:
```python
class LinkQueue:
def __init__(self):
self.head = None
self.tail = None
def is_empty(self):
return self.head is None
def length(self):
count = 0
node = self.head
while node:
count += 1
node = node.next
return count
def peek(self):
if self.is_empty():
raise ValueError('Queue is empty')
return self.head.data
def enqueue(self, data):
node = Node(data)
if self.is_empty():
self.head = node
self.tail = node
else:
self.tail.next = node
self.tail = node
def dequeue(self):
if self.is_empty():
raise ValueError('Queue is empty')
data = self.head.data
self.head = self.head.next
if not self.head:
self.tail = None
return data
```
上述代码实现了初始化队列,判断队列是否为空,求队列长度,查看队头元素,将元素入队,将队头元素出队并返回其值这些基本操作。
需要注意的是,如果队列为空,查看队头元素和出队操作都应该抛出异常。在入队操作中,如果队列为空,需要同时更新头节点和尾节点。
希望这个答案能够对您有所帮助。
阅读全文