如何使用c语言实现循环队列
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍如何使用c语言实现循环队列,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!队列是一种先入先出的结构,数据从队列头出,队尾进。在linux内核中进程调度,打印缓冲区
千家信息网最后更新 2026年11月02日如何使用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安全错误
数据库的锁怎样保障安全
精品咖啡豆
亿人帮互联网科技有限公司
广州紫鲸互联网科技有限公司
互联网与科技金融数据
互联网科技未来
上海互联网科技有限公司
平安科技 互联网
奇酷互联网科技公司
卓越科技(互联网 )
科技创新互联网企业
哈尔滨新华互联网科技
青海省互联网新科技
互联网科技与管理
上海宁丞科技互联网
互联网金融科技展
滨湖区互联网智能科技产品有哪些
互联网科技数字货币
宇信科技在杭州互联网排第几
福仕德教育科技互联网
恒生科技互联网指数十大成分股
互联网科技的发展
北京互联网络科技有限公司
万达互联网科技
科技互联网创业计划书
上海亿帐通互联网科技
移动互联网科技公司
互联网科技大奖都有哪些公司
长沙茂晟互联网科技有限公司
上海京穆互联网科技有限公司
互联网科技自媒体灵感