1. 编写程序实现链队列的各种基本运算:初始化、销毁、清空、判断是否为空队列、求队列的长度、取队列的头元素、入队、出队。在此基础上设计一个主程序完成如下功能:(1)初始化链队列q;(2)判断链队列q是否为空;(3)依次入队元素a,b,c;(4)出队一个元素,并输出该元素;(5)输出链队列q的长度;(6)依次入队元素d,e,f;(7)输出链队列q的长度;(8)出队所有元素,并输出出队序列;(9)销毁链队列q
时间: 2023-06-24 10:03:21 浏览: 228
定义在队列结构上的基本运算-数据库栈和队列
下面是链队列的基本运算实现:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedQueue:
def __init__(self):
self.front = Node()
self.rear = self.front
def is_empty(self):
return self.front == self.rear
def enqueue(self, data):
self.rear.next = Node(data)
self.rear = self.rear.next
def dequeue(self):
if self.is_empty():
raise Exception('Queue is empty')
self.front = self.front.next
return self.front.data
def get_length(self):
p = self.front
length = 0
while p != self.rear:
p = p.next
length += 1
return length
def get_head(self):
if self.is_empty():
raise Exception('Queue is empty')
return self.front.next.data
def clear(self):
self.front.next = None
self.rear = self.front
def destroy(self):
self.clear()
del self.front
del self.rear
```
下面是主程序,按照题目要求实现:
```python
if __name__ == '__main__':
q = LinkedQueue() # 初始化链队列q
print('链队列q是否为空:', q.is_empty()) # 判断链队列q是否为空
q.enqueue('a') # 依次入队元素a,b,c
q.enqueue('b')
q.enqueue('c')
print('出队一个元素:', q.dequeue()) # 出队一个元素,并输出该元素
print('链队列q的长度:', q.get_length()) # 输出链队列q的长度
q.enqueue('d') # 依次入队元素d,e,f
q.enqueue('e')
q.enqueue('f')
print('链队列q的长度:', q.get_length()) # 输出链队列q的长度
print('出队所有元素:', end='') # 出队所有元素,并输出出队序列
while not q.is_empty():
print(q.dequeue(), end=' ')
print()
q.destroy() # 销毁链队列q
```
输出结果如下:
```
链队列q是否为空: True
出队一个元素: a
链队列q的长度: 2
链队列q的长度: 5
出队所有元素: b c d e f
```
阅读全文