数据结构——链队列的初始化、入队、出队、销毁队列

本文介绍了链队列的基本概念,包括其先进先出的特性以及如何通过链表实现。详细阐述了构造空队列、链队列的入队、出队操作以及如何销毁队列,强调了队头和队尾指针的重要性。
摘要由CSDN通过智能技术生成

       目录:

1、构造空队列

2、链队列基本操作——入队

3、链队列的基本操作——出队

4、销毁队列


队列是先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。

在队列中,允许插入的一端叫做队尾,允许删除的一端叫做对头

                                  队列的示意图:

 栈和队列都是限制存取点的线性结构。

用链表表示的队列简称为链队列,是限制仅允许在表头删除和表尾插入的单链表。

一个链队列需要两个分别表示队头和队尾的指针(分别称为头指针和尾指针)才能唯一确定。

空的链队列的判决条件为头指针和尾指针均指向头结点。

                                                 空链队列的示意图:

以下是链队列的基本运算实现,包括初始化销毁、清空、判断是否为空队列、求队列的长度、取队列的头元素、入队出队: ```python class QueueNode: def __init__(self, data=None): self.data = data self.next = None class LinkedQueue: def __init__(self): self.front = QueueNode() self.rear = self.front def is_empty(self): return self.front == self.rear def get_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): node = QueueNode(data) self.rear.next = node self.rear = node def dequeue(self): if self.front == self.rear: return None p = self.front.next self.front.next = p.next if self.rear == p: self.rear = self.front return p.data def clear(self): self.front.next = None self.rear = self.front def destroy(self): self.front = None self.rear = None ``` 接下来是主程序,按照题目要求完成各个功能: ```python if __name__ == '__main__': # 初始化链队列 q = LinkedQueue() print("初始化链队列完成") # 判断链队列是否为空 if q.is_empty(): print("链队列为空") else: print("链队列不为空") # 依次入队元素a,b,c q.enqueue('a') q.enqueue('b') q.enqueue('c') print("元素a,b,c已入队") # 出队一个元素,并输出该元素 print("出队一个元素:", q.dequeue()) # 输出链队列的长度 print("链队列长度为:", q.get_length()) # 依次入队元素d,e,f q.enqueue('d') q.enqueue('e') q.enqueue('f') print("元素d,e,f已入队") # 输出链队列的长度 print("链队列长度为:", q.get_length()) # 出队所有元素,并输出出队序列 print("出队序列为:") while not q.is_empty(): print(q.dequeue()) # 销毁链队列 q.destroy() print("销毁链队列完成") ``` 运行结果如下: ``` 初始化链队列完成 链队列为空 元素a,b,c已入队 出队一个元素: a 链队列长度为: 2 元素d,e,f已入队 链队列长度为: 5 出队序列为: b c d e f 销毁链队列完成 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值