如何使用c语言实现循环队列
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍如何使用c语言实现循环队列,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!队列是一种先入先出的结构,数据从队列头出,队尾进。在linux内核中进程调度,打印缓冲区
千家信息网最后更新 2025年11月08日如何使用c语言实现循环队列
这篇文章主要介绍如何使用c语言实现循环队列,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
队列是一种先入先出的结构,数据从队列头出,队尾进。在linux内核中进程调度,打印缓冲区都有用到队列。
队列有多种实现方式,可以用链表,也可以用数组。这里用数组来实现一个简单的循环队列。首先创建一个大小为8的队列如下,队列头尾指针指向同一块内存,

当从队列尾部插入一个数据后变成下面的情形,为了便于处理,这里始终会浪费一个空间

继续插入数据,直到出现以下情形,表示队列满了,
接下来看一下出队的情形,从队列头出队3个元素,
再添加三个元素后队列又变成满的了,
在上面这种情况下面,如果再添加元素就会把队列头的元素覆盖掉,如下:
循环队列实现代码:
#include#include /* 循环队列大小*/#define MAX 8 typedef struct queue { int *que_array; int front; //指向队首 int rear; //指向队尾 int valid_cnt; //队列中有效的数据个数 int total; //队列总大小} queue_t;typedef enum { E_NONE = 0, E_NOMEMORY = 1, E_FAIL = 2,} error_t;void init_queue(queue_t *que){ que->que_array = (int *)malloc(sizeof(int) * MAX); if (que->que_array == NULL) { printf("no mem\n"); exit(-E_NOMEMORY); } que->front = 0; que->rear = 0; que->valid_cnt = 0; que->total = MAX;}/* 判断队列是否已满 */int is_full(queue_t *que){ return (((que->rear + 1) % que->total) == (que->front));}/* 判断队列是否为空 */int is_empty(queue_t *que){ return (que->front == que->rear);}/* 元素入队 */void entry_queue(queue_t *que, int data){ if (is_full(que)) { printf("队列已满,添加后有可能会覆盖掉前面的元素 \n"); que->front = ((que->front+1) % que->total); } que->que_array[que->rear % que->total] = data; que->rear = (que->rear+1) % que->total; que->valid_cnt++;}/* 元素出队 */int del_queue(queue_t *que){ int tmp; if (is_empty(que)) { printf("队列为空 \n"); return -E_FAIL; } tmp = que->que_array[que->front % que->total]; que->front = ((que->front+1) % que->total); que->valid_cnt--; return tmp;}int main(int argc, char *argv[]){ int tem_data,i; queue_t que; init_queue(&que);#if 0 for (i = 0; i < 7; i++) { entry_queue(&que, i + 1); } printf("出队队列中的所有元素 \n"); while (!is_empty(&que)) { printf("%d,", del_queue(&que)); }#endif /*接下来,添加十个元素试试*/ for (i = 0; i < 10; i++) { entry_queue(&que, i + 1); } printf("出队队列中的所有元素 \n"); while (!is_empty(&que)) { printf("%d,", del_queue(&que)); } return 0;}
以上是"如何使用c语言实现循环队列"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
队列
元素
循环
数据
大小
情形
指向
语言
内容
数组
篇文章
有效
接下来
三个
个数
代码
价值
兴趣
内存
内核
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全培训四个月能上岗么
网络安全和网络运维有什么不同
福州网络安全员查询
sql数据库复制表
奉贤区智能化数据库优点
同城网络技术公司
云熙无法连接服务器是怎么回事
用电安全 网络安全
学创杯服务器搭建
唯品会青少年网络安全
lol手游国服对局服务器延迟高
开发网络安全等保
天涯明月刀微信区哪个服务器人多
数据库及表的操作的实验报告原理
ftp服务器部署网站
网络安全已经成为世界
免费 cvs 服务器
2017中国数据库技术
数据库r-(r-s)
湛江软件开发收费
苏州python软件开发报价
网络安全专业人数
hamzy吃鸡游戏服务器
软件开发技术的重要意义
网站 前端 后端 数据库
新疆关于网络安全的内容
号码归属地数据库更新
数据库r-(r-s)
机顶盒软件开发怎么样
澄海语音ic软件开发设计