队列——手搓のqueue

目录

         前言:

1.物理结构:

2.实现功能

3.初始化

4.入队

5.出队

6.判空

7.队列元素个数

8.取队列头

9.取队列尾

10.销毁

总结:


前言:

继上一节的栈,本篇介绍数据结构中的队列,相比于栈稍复杂一点,但实现起来还是不难的。

1.物理结构:

其实物理结构还是数组的变形,但是要遵循先进先出的特性,要想先进先出,我们只需要将入栈实现成尾插,出栈实现为头删即可,所以需要指向节点的头尾指针,因为节点有需要存放数据和指向下一个节点的指针,所以实现需要两个结构体。

2.实现功能

1.QNode是每个节点的结构,而Queue是用来存放节点指向节点指针的结构,需要注意区分。

2.实现基本功能:初始化,销毁,入队列,出队列,判空,取头尾元素,队列元素个数、

3.初始化

4.入队

1.入队就是相当于链表的尾插,需要开一个新的节点。

2.如果指向节点的头尾指针都是空,所以没有元素,那就让头尾指针都指向新开的节点,注意这里判断条件不能是pq->phead==NULL&&pq->ptail==NULL,有一个为空也是空队列,也可以进if,但是有一个为空那另一个肯定为空,因为队列顶和底有一个为空肯定是空队列,所以先用一个if,再断言一下另一个肯定也是空就行。

3.如果不是空,就走尾插的逻辑。

5.出队

1.首先出队肯定不能是空的队列。

2.如果只有一个节点,那就直接释放然后头尾指针给上空。

3.如果是多个节点,那就记录下队列头的下一个元素,释放掉队列头,再将下面的成为新的头。

6.判空

7.队列元素个数

8.取队列头

9.取队列尾

10.销毁

总结:

队列是实现其实也就是链表的变种,stl中同样有queue容器,所以实际也不需要需要的时候自己写一个,但同样要了解底层的实现。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值