数据结构之队列(小白必读)

上文我们讲述了关于栈的知识,那么接下来这一章,我将带大家一起了解队列的知识。话不多说,精彩马上开始!

一.队列的概念

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out) 的特点。

入队列:进行插入操作的一端称为队尾

出队列:进行删除操作的一端称为队头

我们可以利用下图来加深理解:

二.队列的实现

        那么了解了队列的概念后,我们需要尝试队列的实现。关于上文,我们用顺序表实现了栈,那么队列应该用什么来实现呢?

        实际上,队列用单链表实现最为简便。因为如果采用顺序表,在进行出队列时,我们采用头删,顺序表方式会搬移元素,效率低下。因此我们采用单链表来实现队列。

        我们仍采用模块化编程的方法,那么队列的实现将包含以下几个模块:

                                        队列的初始化;

                                        队列的销毁;

                                        队列的尾插;

                                        队列的头删;

                                        获取尾数据;

                                        获取头数据;

                                        空队列的判断;

                                        获取队列元素个数;

那么话不多说,我们直接展示代码,好学的同学一定要试着手动编写代码!

queue.h文件

        这里我们注意到了一个很巧妙的点,就是我们在建立队列的结构体的时候,我们包含了头指针和尾指针,这样把队列的地址传过去,我们可以同时操作两个指针,有利于后续的功能实现。

queue.c文件

在头删操作中我们注意,剩余一个节点时,phead和ptail指向的是同一个地址,当把头结点释放时,必须把头指针和尾指针同时置为空,否则尾指针会变为野指针,产生报错。

test.c文件

(在test文件中,同学们可以根据自己的需求来运行测试队列的各种功能)

        那么本篇文章关于队列的相关知识我们就讲解到这里,感谢各位同学的阅读,欢迎批评指正本篇本章存在的问题,如果有不明白的地方,欢迎大家给小编私信留言!我们下期再会!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值