C语言实现循环队列的基本操作是怎样的
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,C语言实现循环队列的基本操作是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。循环队列依靠取模运算,实现队列中数据元素的逻辑成环操作
千家信息网最后更新 2026年11月04日C语言实现循环队列的基本操作是怎样的
C语言实现循环队列的基本操作是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
循环队列依靠取模运算,实现队列中数据元素的逻辑成环操作。其相比队列的顺序存储实现,可以避免"假溢出"的问题。
头文件声明
#include#include /** 循环队列实现*///数据元素上限#define MaxSize 50//定义数据类型typedef int ElemType;/*结构体定义*/typedef struct SqQueue{ ElemType data[MaxSize];//数组-存放数据元素 int front, //队头指针 rear; //队尾指针}SqQueue;//初始化队列void InitQueue(SqQueue *q);//判断队列是否为空int EmptyQueue(SqQueue q);//入队操作int EnQueue(SqQueue *q,ElemType e);//出队操作int DeQueue(SqQueue *q,ElemType* e);//获取队列长度int LengthQueue(SqQueue q);//获取队头元素void GetHead(SqQueue q,ElemType* e);//打印队列void printSqQueue(SqQueue q);
函数实现
#include "SqQueue.h"/** * 循环队列函数实现 *///初始化队列void InitQueue(SqQueue *q){ //队头指针-队尾指针,同时指向队首元素 q->front=q->rear=0;}//判断队列是否为空int EmptyQueue(SqQueue q){ //队头指针和队尾指针指向同一个元素,则为空队列 return q.front==q.rear;}//入队操作int EnQueue(SqQueue *q,ElemType e){ //判断是否队满 if ((q->rear+1)%MaxSize==q->rear) return -1; //入队操作 q->data[q->rear]=e;//添加数据元素-将队尾元素值置为e q->rear=(q->rear+1)%MaxSize;//尾指针向前移动,队尾指针++ return 1;}//出队操作int DeQueue(SqQueue *q,ElemType* e){ //判断是否队空 if ((q->rear+1)%MaxSize==q->front) return -1; //保存数据 *e=q->data[q->front]; //出队操作 q->front=(q->front+1)%MaxSize; return 1;}//获取队列长度int LengthQueue(SqQueue q){ return (q.rear-q.front+MaxSize)%MaxSize;}//获取队头元素void GetHead(SqQueue q,ElemType* e){ //判断队列是否为空 if (q.front==q.rear) return; //获取队头元素的值 *e=q.data[q.front];}//打印队列void printSqQueue(SqQueue q){ //辅助指针 int pIndex; //打印队列元素 pIndex=q.front; while (pIndex函数测试
#include "SqQueue.h"int main(int argc,char** argv){ //声明队列 SqQueue sQueue; int i; ElemType data; //初始化队列 InitQueue(&sQueue); //获取队头指针和队尾指针的值 printf("frontVal=%d,rearVal=%d\n",sQueue.front,sQueue.rear); //判断队列是否为空 printf("is Empty?%d\n",EmptyQueue(sQueue)); //入队操作 for (i=0;i<20;i++) { EnQueue(&sQueue,i+1); } //判断队列是否为空&获取队列长度 printf("is Empty?%d,len=%d\n",EmptyQueue(sQueue),LengthQueue(sQueue)); //打印队列元素 printSqQueue(sQueue); //出队操作 DeQueue(&sQueue,&data); printf("the aimed value is %d\n",data); //判断队列是否为空&获取队列长度 printf("is Empty?%d,len=%d\n",EmptyQueue(sQueue),LengthQueue(sQueue)); //打印队列元素 printSqQueue(sQueue); //获取队头元素值 GetHead(sQueue,&data); printf("the head value is %d\n",data); return 0;}再贴个测试结果的图:
看完上述内容,你们掌握C语言实现循环队列的基本操作是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
队列
元素
指针
数据
循环
长度
函数
问题
基本操作
语言
内容
指向
方法
更多
测试
束手无策
为此
上限
原因
同时
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
江苏根荣互联网科技
北京互联网科技
有马互联网科技
沃里互联网科技
玖二柒互联网科技公司待遇
江阴互联网智能科技产品进口
互联网与医疗科技
链环科技传统企业怎么转型互联网
996高科技互联网公司
互联网科技创新的路径
互联网公司高科技产品
广州富喜互联网络科技
互联网安防科技感
郑州欣桑互联网科技有限公司
珠海东科互联网科技有限公司
互联网科技手机排行榜
陕西彩京云互联网科技有限公司
黑龙江互联网科技公司
山东亿川互联网科技有限责任公司
保险科技 互联网保险
奇士达互联网科技
互联网软件和科技
港股科技和互联网
如何创新互联网科技
互联网风格科技公司名称
珠海东科互联网科技有限公司
互联网高科技行业有哪些企业
众联互联网络科技
10位科技互联网大佬