如何用C语言实现队列

在这之前,先对队列进行一下简单的了解

1、队列的定义

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。

今天我们将要用链表的形式来实现一个简单的队列


2.队列的定义以及队列的常见基本接口

其中,每个节点都有一个我们定义的haha元素来存储值,以及一个指针存储下一个节点的地址。


3.队列节点的创建

使用malloc函数申请动态内存空间,将空间地址返回,将x赋给val,next赋为NULL


4.节点的插入

(操作之前应该先断言一下,防止传入空指针)具体操作就是先找到原队列的尾节点(next为NULL的节点),然后将新创建的节点指针赋给它的next即可。


5.队列头节点的删除

具体操作就是先将旧的头存下来,再将下一个节点作为新的头,最后free掉老的头,这里需要注意的是,要想改变原来ps的值得请ps得指针来,所以这里参数类型是queue**。


6.取头尾元素

这里很好理解,头节点直接返回val,尾节点遍历再返回即可。


7.元素个数统计

创建临时变量sum在遍历得同时来统计,最后返回。


8.队列元素得打印

创建临时指针pcur来遍历,打印每一个pcur得val即可。


9.队列销毁

我们得队列是基于链表实现得,由于每个节点在内存中不是挨在一起得,所以不能一次性free完,只能通过遍历一个一个free,这里的思路和上面Pop差不多,先吧老节点用临时指针存起来,吧后一个节点变为头后再销毁老节点,在全部销毁完后将NULL赋给*ps即可。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值