C语言实现循环队列的基本操作是怎样的
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,C语言实现循环队列的基本操作是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。循环队列依靠取模运算,实现队列中数据元素的逻辑成环操作
千家信息网最后更新 2025年11月18日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安全错误
数据库的锁怎样保障安全
网信办 网络安全 总结
x全球最大服务器
网络安全防范心得体会50字
福建服务器维修调试虚拟主机
图片跨域服务器限制
数据库sum
创建数据库表学生信息表
网络安全调研2017
手机设置网络安全宣传周
广州市农业银行软件开发园区
网络安全和保密工作要点
阳泉市国家网络安全宣传周
电商软件开发定制费用
软件开发应届生第一份工作
winlog的服务器
服务器虚拟化有那两种
电脑的域名解析服务器配置在哪
七日杀官方服务器租用
网络安全法解读ppt下载
软件开发合同附件技术协议
蔓延旅行服务器ip
网络安全班会记录范文大全
cf服务器什么时候消亡
即时通讯软件开发成本
北京必果互动网络技术
网络安全监管法
为了提高软件开发
韶关市铭恒网络技术有限公司
河南城管通软件开发系统
中小学生家庭教肓和网络安全