编写程序实现链队列的各种基本运算:初始化、销毁、清空、判断是否为空队列、求队列的长度、取队列的头元素、入队、出队。在此基础上设计一个主程序完成如下功能:(1)初始化链队列q;(2)判断链队列q是否为空;(3)依次入队元素a,b,c;(4)出队一个元素,并输出该元素;(5)输出链队列q的长度;(6)依次入队元素d,e,f;(7)输出链队列q的长度;(8)出队所有元素,并输出出队序列;(9)销毁链队列q
时间: 2023-06-24 15:03:59 浏览: 78
下面是链队列的基本运算代码实现:
```python
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
class LinkedQueue:
def __init__(self):
self.front = Node()
self.rear = self.front
def is_empty(self):
return self.front == self.rear
def length(self):
length = 0
p = self.front.next
while p:
length += 1
p = p.next
return length
def get_head(self):
if self.front == self.rear:
return None
return self.front.next.data
def enqueue(self, data):
self.rear.next = Node(data)
self.rear = self.rear.next
def dequeue(self):
if self.front == self.rear:
return None
self.front = self.front.next
return self.front.data
def clear(self):
self.front = Node()
self.rear = self.front
def destroy(self):
self.front = None
self.rear = None
```
然后,我们可以写出一个主程序,按照要求完成相关功能:
```python
q = LinkedQueue() # 初始化链队列q
print(q.is_empty()) # 判断链队列q是否为空
q.enqueue('a') # 依次入队元素a,b,c
q.enqueue('b')
q.enqueue('c')
print(q.dequeue()) # 出队一个元素,并输出该元素
print(q.length()) # 输出链队列q的长度
q.enqueue('d') # 依次入队元素d,e,f
q.enqueue('e')
q.enqueue('f')
print(q.length()) # 输出链队列q的长度
result = []
while not q.is_empty(): # 出队所有元素,并输出出队序列
result.append(q.dequeue())
print(result)
q.destroy() # 销毁链队列q
```
输出结果如下:
```
True
a
2
5
['b', 'c', 'd', 'e', 'f']
```
注意:链队列的操作需要注意边界条件,如出队时需要判断队列是否为空,取队列头元素时也需要先判断队列是否为空。
阅读全文