首页天道酬勤循环队列是队列的一种,循环队列图示

循环队列是队列的一种,循环队列图示

张世龙 05-06 11:34 33次浏览

目录1 .什么是队列2 .什么是循环队列3 .循环队列代码块3.1入队3.2出队3.3空判定3.4测试代码4 .好处

1 .什么是队列

就像在食堂排队吃饭,每个人排在前面排队就是入队。 吃完饭从头到尾一个人出来就是离开队伍。

队伍是你排的队。

2 .什么是循环矩阵? 例如,一家食堂的奇怪规定。 每次吃饭只能选一种菜。 然后,想吃两种菜的你必须排两次队,再回到队伍里。

或者,实现前面排队吃饭的人不在了,后面吃饭的人步调一致,全队人数不变,人越来越多,人越来越多,进队的循环。

3 .循环队列的代码块现在可以用结构封装和模拟数组入出的过程

首先使用的预处理命令如下:

#includestdio.h//标准输入/输出#includemalloc.h//动态申请存储器#includeassert.h//空判定#define MAX 10//数组容量判定空头文件由存储器申请失败引起

然后是队列结构体的封装。

类型结构队列{ int * pmemory; //后续内存申请的指针int topSize; //队列标签int tailSize; //端队列标记int CurSize; //当前入队数}*LPQUEUQ,QUEUE; 然后,可以封装函数以创建和初始化队列。

lpqueuqcreatequeue ((lpqueuqqueue=) lpqueuq ) malloc ) sizeof ) queue ); 资产(队列; 队列内存=(int * ) calloc ) max,4 ); //动态申请大小为MAX的数组queue-tailSize=-1; 队列-顶点=-1; 队列-计数=0; 返回队列; //测试代码有助于创建队列(3.1入队前确定队列是否已满,满后无法入队)。

常规矩阵在每次入队时,数组位于入队末尾标记的位置,入队末尾标记向前移动。 循环矩阵必须确保队伍的数量不变。 前面走的人后面有个位置。 入队必须填补位置。

语音推送(lpqueuqqueue,int data ) if ) queue-cursize==max ) return; 队列-状态=(队列-状态1 ) % 10; //团队主题标志返回到前面,队列-内存[队列-状态]=数据; 队列-定制; //每次入伍人数都会增加(3.2出队前必须判断队伍是否空着。 如果有空的话,就不能继续离开队伍。

出队就是把人拿出来,分成两个步骤进行,把头上的标记往前挪一挪,再把数据拿出来。 刚离开队伍的开头的下标指向-1的位置,所以在离开队伍之前请把那个标记往前挪。

第一步:先把标志往前移动,剩下的取头标志回到前面,保证能下一次重新入队和出队。

语音队列(lpqueuqqueue ) if )队列- cursize==0)返回; 队列-顶大小=(队列-顶大小1 ); 队列-定制---; //每次离开队伍时,数量都会减少(第二步:取出与标题对应的要素。

intfront(lpqueuqqueue ) { return queue-pmemory [ queue-topsize ]; 63.3空判队列是否为空,能否继续出队。

OOLtemp(lpqueuqqueue ) {return queue-CurSize==0; } 3.4测试码正常队列一次最多只能进入10个元素,如果循环队列可以保持全队人数不变,则入队人员可以补充已入队人员的位置,实现队列循环。

int main () {LPQUEUQ queue=CreateQueue ); printf((n入伍:\t ) t ); for(intI=0; i 8; I ) )/8个printf(%d(t ),I ); 推送(队列,I ); (printf ) ) (n队:\t ); while (! temp(queue ) ) (/为空,则为团队pop (queue ) ); printf('%d\t ',front ) ) queue ); (printf ) (n入伍:\t ) t ); for(intI=0; i 5; I ) )/5个printf(%d(t ),I ); 推送(队列,I ); (printf ) ) (n队:\t ); while (! 时间(队列) )泵) )队列; printf('%d\t ',front ) ) queue ); }返回0; )4)优点是节约内存,避免过多申请内存而浪费。

循环队列的结构定义,循环队列是什么存储结构