C语言如何实现链队列
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关C语言如何实现链队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。队列的链式存储结构实现,相比于循环队列实现要复杂一些,但是没有队满的限
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
咖啡网
互联网科技企业
互联网金融科技
广州百单互联网科技有限公司
重生之互联网科技帝国
互联网 卓越科技
碳银互联网科技有限公司
佰商互联网科技有限公司
互联网科技大会案例
富国互联网科技创新基金
成都玖崟互联网科技有限公司乐商圈怎么样
茂名市互联网科技产业园
杭州壁岐互联网科技有限公司
互联网科技大奖都有哪些公司
元气玛特互联网科技公司是外包吗
中国互联网有什么科技
富国互联网金融科技混合基金
易企秀互联网科技是做什么的
普陀区互联网教育科技管理办法
长沙渺峰互联网科技有限公司
互联网科技卖菜
港股互联网科技股
银优互联网科技有限公司
汉立互联网科技有限公司联系电话
宁夏众和广鑫互联网科技有限公司
领航科技大厦互联网公司
求路客互联网科技电话
数字科技和互联网金融哪个好
每日互联网科技新闻
武汉亿视互联网科技有限公司