数据结构之顺序队列、链式队列、循环队列-c语言实现

文章来源:http://blog.seclibs.com/数据结构之顺序队列、链式队列、循环队列-c语言实/

在上一篇文章里,说了队列的相关内容,其中除了这篇文章说的顺序队列、链式队列和循环队列三个,还提到了阻塞队列和并发队列,这两个因为能力原因,还没能实现,这个坑等以后再来补。

回来说这次实现的三个队列,首先是顺序队列,顺序队列是基于数组来实现的队列,在原数组的实现基础上增加了head和tail两个结构体成员,用来标识队头和队尾。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1JjYl6pW-1580655186830)(http://blog.seclibs.com/wp-content/uploads/2020/02/carbon-2.png)]

其他的也没有什么太大的变化了,代码如下

如果需要下载代码的,请移步文末

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XUBxhsDx-1580655186841)(http://blog.seclibs.com/wp-content/uploads/2020/02/carbon.png)]


接下来说链式队列,链式队列的实现与之前的实现都有一点区别,因为链表和队列两个都是需要指针的,所以在这里定义两个结构体的时候需要格外的注意一下,在后面的代码实现中也需要着重理解一下其中的含义。

在定义结构体的时候,我使用了typedef struct和struct两种,可以在代码中去感受一下它们的区别所在。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBiF0IKP-1580655186843)(http://blog.seclibs.com/wp-content/uploads/2020/02/carbon-1.png)]

因为其中有链表的存在,所以在出队的时候需要注意将出队元素的内存空间释放掉,其他的也就没有太多了变化了,代码如下

如果需要下载代码,请移步至文末

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mNcnW45r-1580655186845)(http://blog.seclibs.com/wp-content/uploads/2020/02/carbon-2-1.png)]


最后说循环队列,循环队列实现的难易程度与顺序队列相仿,难点在于当队列放满一次时,如何将变量回到0,从新开始走,这里还是用到前一篇文章中确定队列满时的公式,当head增加到最大时,如何返回0,head=(head+1)%size,自己可以好好琢磨一下,其他的也都是一样的方式。

代码如下,可以自己去好好琢磨一下

如果需要下载代码的,请移步至文末

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RnSMxtcO-1580655186846)(http://blog.seclibs.com/wp-content/uploads/2020/02/carbon-3.png)]


代码:

顺序队列:GitHub

链式队列:GitHub

循环队列:GitHub

文章首发公众号和个人博客

公众号:无心的梦呓(wuxinmengyi)

博客:http://blog.seclibs.com/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值