链队列是用链表作为存储结构的队列。队列的特点是先入先出,后入后出。这里采用带头结点的链表结构,并设置一个头指针front和一个尾指针rear始终指向头节点和队尾结点。

#include<stdio.h>
#include<stdlib.h>typedef struct Node                             /*定义队列结点结构*/
{int data;                                  /*数据域*/struct Node *next;                           /*指针域*/
}LinkQueueNode;typedef struct
{LinkQueueNode *front;                      /*队头指针*/LinkQueueNode *rear;                        /*队尾指针*/
}LinkQueue;void InitQueue(LinkQueue *Q)                 /*初始化队列函数*/
{Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));if(Q->front!=NULL)                         /*确保分配头节点成功*/{Q->rear=Q->front;Q->front->next=NULL;printf("Init Queue Successfully!\n");} else{printf("Error!Can not Init Queue!\n");}
}void EnterQueue(LinkQueue *Q,int x)                /*进入队列函数*/
{LinkQueueNode *NewNode;NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));if(NewNode==NULL)                         /*溢出*/{printf("Can not Enter Queue!\n");}else{NewNode->data=x;                        /*赋值*/NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;                        /*改变队尾指针*/printf("Enter Queue Successfully!\n"); }
}void DeleteQueue(LinkQueue *Q)                 /*出队列函数*/
{LinkQueueNode *p;if(Q->front==Q->rear)                     /*判断队列是否为空*/{printf("Queue is Empty!\n");}else{p=Q->front->next;Q->front->next=p->next;                 /*改变队头指针*/if(Q->rear==p)                            /*如果队列就一个结点,出队列后队列为空*/{Q->rear=Q->front;}printf("%d\n",p->data);free(p);                                /*出队列后,删除该结点*/printf("Out of Queue Successfully!\n");}
}int main()
{LinkQueue Q;InitQueue(&Q);EnterQueue(&Q,1);EnterQueue(&Q,2);EnterQueue(&Q,3);DeleteQueue(&Q);DeleteQueue(&Q);DeleteQueue(&Q);DeleteQueue(&Q);                            /*队列中3个结点,第4次出队列队列应为空*/return 0;
}

运行结果:

小结: 这里只包括了链队列的基础操作:初始化、入队、出队。入队操作采用类似于链表的尾插法。通过改变队尾指针来插入队列。值得注意的是,出队列操作中,需判断队列中是否只有一个元素。如果只有一个元素,则需在出队列后将队尾指针指向头节点。

数据结构:链队列的基本操作(C语言实现)相关推荐

  1. 顺序队列,链队列的基本操作

    顺序队列,链队列的基本操作 一.实验目的 1.深入了解队列的定义和特性. 2.掌握队列的数组表示.链表表示以及相应操作的实现,巩固对这两种结构的构造方法的掌握. 3. 会灵活运用队列结构解决某些实际问 ...

  2. 队列的基本操作c语言代码大全,数据结构――队列(循环队列)的基本操作(实现链队列逐一取出c语言代码)...

    队列 队列是一种重要的线性结构,与栈相同也需要顺序表或者链表作为基础.队列是先进先出(first in first out)FIFO的线性表. 所有数据从队列的一端进入,从另一端离开. 队列中允许插入 ...

  3. C语言实现数据结构——链队列

    定义 前面学习了栈这种数据结构,我们知道他的特点是数据先进后出.与栈相反,队列的特点时数据先进先出.即first in firsr out,简称FIFO. 队列只允许在表的一端进行数据的插入,在另一端 ...

  4. 链栈的基本操作-C语言

    链栈的基本操作 用链表实现一个栈 具体实现 定义一个链栈 //定义一个链栈 typedef struct LNode {int data;struct LNode* next; }LNode, *Li ...

  5. 链队列的实现 C语言

    /* 链队列的实现以及相关操作 作者:S_hmily 日期:2011年9月1日 编译环境:VC++6.0 */ /******************************************* ...

  6. 队列的基本操作(C语言实现)

    本篇博客带来栈的好兄弟--队列. 目录 一. 队列的概念与结构 二. 队列的框架定义 三. 队列的功能实现 3.1 队列的初始化 3.2 队列的销毁 3.3 队列插入数据 3.4 队列删除数据 3.5 ...

  7. 数据结构 | 链表队列(基本操作及图示)

    -------------------------------------------- 基本概念: 和栈相反,队列是一种先进先出(FIFO)的线性表.只允许在一端插入,在另一端删除. 允许插入的叫& ...

  8. 链队列出入队列c语言程序,链队列简单操作(c语言)

    #include #define ERROR 0 struct Node{ int Data; struct Node *Next; }; struct QNode{ struct Node *rea ...

  9. 【数据结构】队列(链队列、循环队列)的存储结构及基本运算(C语言)

    目录 1. 队列基本概念 2. 链队列 2.1 代码+注释 2.2 运行结果 3. 循环队列 3.1 代码+注释 3.2 运行结果 1. 队列基本概念 队列(Queue)是一种限定性线性表,它只允许在 ...

  10. 数据结构——链式队列解析(C语言版)

    摘自:数据结构学习--链式队列解析(C语言版) 作者:正弦定理 发布时间:2020-11-26 21:07:08 网址:https://blog.csdn.net/chinesekobe/articl ...

最新文章

  1. JavaScript 小记 之 闭包(Closures)
  2. 转: ashx中使用Session
  3. linux sql命令行查询语句不要换行_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?...
  4. Sublime Text 3常用插件安装(持续更新)
  5. svn 迁移到git下全过程
  6. rest_framework 权限功能
  7. 2022年危险化学品生产单位安全生产管理人员试题模拟考试平台操作
  8. cannot find -lbz2
  9. 《Java并发编程实战》读书笔记-第5章 基础构建模块
  10. 流量分析(wireshark使用)
  11. Map集合及三层嵌套
  12. html格式显示图标异常,HTM或HTML图标变成无法显示和识别的解决方法大全
  13. vs怎么配置c语言codemac,在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)...
  14. Linux运维精华面试题
  15. 以太网通信(1)UDP —— 数据发送
  16. 蓝牙BQB认证 - HFP profile配置说明
  17. 强大的jqGrid!
  18. 2021年12月1日
  19. 机器人3D视觉在物流仓储领域的自动化应用
  20. 珠心算测验 【暴力】

热门文章

  1. C# 如何插入、删除Excel分页符
  2. python-selenium 自动化弹幕
  3. 计算机round是什么函数,round()函数,excel round什么意思
  4. CVPR2020 Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector论文翻译
  5. 论文翻译:Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector
  6. openg离线包_OpenGL离线渲染和缓冲区对象
  7. UVALive 6437 Power Plant 【最小生成树 + 思维】
  8. 大数据挖掘是什么,数据挖掘的方法有哪些?
  9. 网站速度优化4个实用办法
  10. BZOJ2330【SCOI2011】糖果