C语言如何实现链队列
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章将为大家详细讲解有关C语言如何实现链队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。队列的链式存储结构实现,相比于循环队列实现要复杂一些,但是没有队满的限
千家信息网最后更新 2025年11月09日C语言如何实现链队列
这篇文章将为大家详细讲解有关C语言如何实现链队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
队列的链式存储结构实现,相比于循环队列实现要复杂一些,但是没有队满的限制。
头文件声明
#include#include /** * 队列的链式存储实现 * [带头结点的单链表] * [-类似于链栈,队列的链式存储实现也不会出现队满的情况] *///数据类型typedef int ElemType;//定义节点typedef struct SqQueueNode{ ElemType data;//数据域 struct SqQueueNode* next; //指针域}SqQueueNode;//定义队列typedef struct SqQueueLink{ SqQueueNode* front;//队头指针 SqQueueNode* rear;//队尾指针}SqQueueLink;//初始化队列void InitQueueLink(SqQueueLink* q);//判断队空int EmptyQueueLink(SqQueueLink q);//入队操作void EnQueueLink(SqQueueLink *q,ElemType e);//出队操作void DeQueueLink(SqQueueLink q,ElemType *e);//获取队列长度int LengthQueueLink(SqQueueLink q);//打印队列void printSqQueueLink(SqQueueLink q);//获取队头元素void GetHeadLink(SqQueueLink q,ElemType* e);
函数实现
#include "SqQueueLink.h"//初始化队列void InitQueueLink(SqQueueLink* q){ //创建头结点 SqQueueNode* pNode=(SqQueueNode*)malloc(sizeof(SqQueueNode)); pNode->next=NULL;//指针域置空[数据域不存储任何内容] //初始化队列-[使队头指针和队尾指针指向头结点] q->front=pNode; q->rear=pNode;}//判断队空int EmptyQueueLink(SqQueueLink q){ return q.front==q.rear;}//入队操作void EnQueueLink(SqQueueLink *q,ElemType e){ //创建新的数据元素节点 SqQueueNode* newNode=(SqQueueNode*)malloc(sizeof(SqQueueNode)); newNode->data=e;//指定数据域 newNode->next=NULL;//指针域置空 //入队操作[从队尾入队] q->rear->next=newNode; q->rear=newNode;}//出队操作void DeQueueLink(SqQueueLink q,ElemType *e){ //[从队头出队] SqQueueNode* p=NULL; //是否队空 if (q.front==q.rear) return; p=q.front->next;//获取首节点 *e=p->data; //使队头指针指向下一节点 q.front->next=p->next; //如果原队列中只有一个节点,要将队尾指针和队头指针均指向同一节点-置空 if (q.rear==p) q.rear=q.front; //释放原首节点 free(p);}//获取队列长度int LengthQueueLink(SqQueueLink q){ //辅助指针 SqQueueNode* pNode=q.front->next; int count=0; //获取队列长度 while (pNode!=q.rear) { count++; pNode=pNode->next; } return count;}//打印队列void printSqQueueLink(SqQueueLink q){ //辅助指针 SqQueueNode* p=q.front->next; while (p!=q.rear) { printf("%4d",p->data); p=p->next; } printf("\n");}//获取队头元素void GetHeadLink(SqQueueLink q,ElemType* e){ //判断队列是否为空 if (q.front==q.rear) return; //获取队头元素的值 *e=q.front->next->data;}函数测试
#include "SqQueueLink.h"int main(int argc,char** argv){ //声明队列 SqQueueLink sqLink; int i; ElemType data; //初始化队列 InitQueueLink(&sqLink); //判断队列是否为空 printf("is Empty?%d\n",EmptyQueueLink(sqLink)); //入队操作 for (i=0;i<=20;i++) { EnQueueLink(&sqLink,i+1); } //判断队列是否为空 printf("is Empty?%d,len=%d\n",EmptyQueueLink(sqLink),LengthQueueLink(sqLink)); //打印队列 printSqQueueLink(sqLink); //出队列操作 DeQueueLink(sqLink,&data); //判断队列是否为空 printf("is Empty?%d,len=%d\n",EmptyQueueLink(sqLink),LengthQueueLink(sqLink)); //打印队列 printSqQueueLink(sqLink); //获取队头元素的值 GetHeadLink(sqLink,&data); printf("the first node value is %d\n",data); return 0;}关于"C语言如何实现链队列"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
队列
指针
节点
元素
数据
存储
篇文章
结点
长度
链式
语言
内容
函数
指向
更多
辅助
不错
复杂
实用
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华为手机户外无法联接服务器
速达服务器
股票软件开发人员工资
xx医院网络安全领导小组
网络安全主题简笔画视频
网络技术与经济的结合
开发软件要多大的服务器
高频彩自动投注软件开发
战地五服务器管理员怎么换阵营
服务器ip和端口号
智能锁连接网络安全吗
电视播放器服务器连接异常
网络技术基础演示互动
绝地求生未来之役亚洲服务器英文
网络安全学历教育
linux进数据库密码忘了
每年四月几号是网络安全宣传日
网络安全属需求于社交需求
python可以模仿人工操作数据库吗
网吧服务器怎么工作
买了服务器后怎么进去
如何搭建缓存服务器
软件开发以后做什么工作
服务器硬盘故障数据重建
云服务器搭建pi节点教程
剑网三获取服务器列表不动
公安网服务器为什么不换新的
网络安全技术防护方法
嵌入式软件开发的语言
通兑全城软件开发