C语言中循环队列如何实现
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,今天小编给大家分享一下C语言中循环队列如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解
千家信息网最后更新 2025年01月19日C语言中循环队列如何实现
今天小编给大家分享一下C语言中循环队列如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
注意事项:
1、循环队列,是队列的顺序表示和实现。因为是尾进头出,所以和顺序栈不同的是需要将顺序队列臆造成一个环状的空间,以便在尾部添加满之后从头部空位开始插入。
2、也可以使用数组队列,也就是不能动态增长的顺序队列,这样不需要每次取模最大值来构成环形空间。每次插入新的队列尾元素时,尾指针增1,每当删除队列头元素时,头指针增1。
3、尾指针会出现在头指针之前,由此特性,循环队列在无法预估使用大小时,不宜使用。
4、在每一个指针递增的表达式中,都要加上一个% MAXQUEUE已使得每一次增值都在范围内。
#include#include#define MAXQUEUE 100typedef struct{ int *base; int front; int rear;}SqQueue, *Sqqueue; Sqqueue Creat(Sqqueue q);void Enqueue(Sqqueue q, int e);void Dequeue(Sqqueue q, int *e);void Traverse(Sqqueue q); int main(){ SqQueue q; int e; Sqqueue p = Creat(&q); Traverse(p); Dequeue(p, &e); Traverse(p); printf("the number that was deleted is :%d", e); return 0;} Sqqueue Creat(Sqqueue q){ Sqqueue p = q; p->base = (int *)malloc(MAXQUEUE * sizeof(int));//这里注意和链不同,开辟的是整片的数据空间,以base为基址 p->front = p->rear = 0; for (int i = 1; i < 10; i++) Enqueue(p, i); return p;}void Enqueue(Sqqueue q, int e){ if ((q->rear + 1) % MAXQUEUE == q->front) //如果尾指针下一个是头指针,即将其看成满队列(少利用一个空间)。否则只看头指针等于尾指针会有歧义。 exit(1); q->base[q->rear] = e; q->rear = (q->rear + 1) % MAXQUEUE; }void Dequeue(Sqqueue q, int *e){ if (q->front == q->rear) exit(1); (*e) = q->base[q->front]; q->front = (q->front + 1) % MAXQUEUE;}void Traverse(Sqqueue q){ for (int i = q->front; q->rear != i; i = (i + 1) % MAXQUEUE) printf("%d->", q->base[i]); printf("NULL");}
以上就是"C语言中循环队列如何实现"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
队列
指针
循环
知识
空间
篇文章
顺序
不同
语言
元素
内容
很大
最大
也就是
事项
动态
基址
大小
大部分
头部
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库表出生日期怎么输入
k8s高可用mysql数据库
常用网络技术配置方法
用友换金蝶基础数据库
最高效的数据库
板卡软件开发
sql数据库巡检要点
使用国家法律法规数据库
uk电子发票版式文件服务器地址
纯组分数据库
网络安全有哪些方面的工作
联想上海服务器设计
公司网络安全会
广东省公安厅特招网络安全
没有服务器怎么上传小程序
西安帕克因互联网科技
辽宁软件开发技术服务前景
计算机网络技术技术规范
软件开发风险控制点
崂山区苹果软件开发哪家便宜
软件开发高级工程师专业
blazor访问数据库
网站指向数据库
个人网络安全讲稿
河北oa软件开发需求
上海会计网络技术管理方法
洪山软件开发专业
计算机网络安全防治措施
新版万方数据库v2
专业的服务器安全测试工具