C语言回顾--队列的入队和出队

-------------------------------------------------------------------------------------------

前言:

前几天做了海康威视的笔试题,正好大题遇上了用C语言编程实现队列的入队和出队功能;于是考完后就自己调试当时所写的代码,错误颇多,经过几小时的努力调试成功,特定发到博客上分享给大家。

-------------------------------------------------------------------------------------------

队列:就跟排队买饭一样,先到者先买饭,买完就离开,后来的人只能排队,也就是先进先出;因此,本次编程我以链表的形式来实现题目需求;

那这么表示一个队列的头和尾呢?这里,我们引入2指针,分别是指向第一个节点的头指针,指向尾节点的尾指针,那如何移动呢?你可以想一下,买饭的时候是一个接一个的排队,但是买饭的窗口是固定的,你只有到窗口,阿姨才问你吃什么饭,然后打菜给你,拿到了饭你也就走了,轮到下一个人买,也就是说指针pTailNode一直向后移,而pHeadNode一直在处理这些人所需要处理的事情,所以说先进先出的这个道理。再简单一句话,你pTailNode一直在给pHeadNode找麻烦,而pHeadNode又像爸爸一样给你搽屁股的解决这些事;

下面是代码流程:

结构体定义如下:

typedef struct _QUEUE_NODE_         //一个节点的结构体   
{
    struct _QUEUE_NODE_ *pNextNode;
    int                       data;
}QUEUE_NODE,*PQUEUE_NODE;

说明:
1.海康威视里面存放的数据是void *类型,本实验就用简单的int 类型来代替;
2.定义一个结构体类型名为_QUEUE_NODE_,并且用该结构体类型名命名一个叫QUEUE_NODE,它等价于QUEUE_NODE = struct _QUEUE_NODE_ ,而*PQUEUE_NODE呢?
同样,*PQUEUE_NODE = (struct _QUEUE_NODE_ *),所以调用时只需QUEUE_NODE,PQUEUE_NODE即可;
3.该结构体中含有1个数据类型,1个结构体指针类型(用于连接下一个节点);
typedef struct QUEUE        //链表的结构体
{
    QUEUE_NODE *pHeadNode;
    QUEUE_NODE *pTailNode;
}QUEUE_HANDLE,*PQUEUE_HANDLE;

说明:
1.海康威视
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值