循环队列循环队列的入队和出队

循环队列  时间:2021-08-11  阅读:()

循环队列的基本操作

#define MaxSize 5 #include<stdio.h> #include<malloc.h> struct queue{ int qu[MaxSize]; int front; int rear; int tag; //front==rear时表示队列满或空的标志:tag==1表示满,tag==0表示空 }; struct queue *InitQu() {struct queue *q; q=(struct queue *)malloc(sizeof(struct queue));//分配空间 q->front=0; q->rear=0; q->tag=0; return q; } int EnQu(struct queue *q,int x) { if(q->rear==q->front && q->tag==1)//表示队列已满 return 0; else { q->qu[q->rear]=x; q->rear=(q->rear+1)%MaxSize; //尾指针向后走一步 if(q->rear==q->front) //若有元素入队以后出现q->rear==q->front,则表示队列满 q->tag=1; return 1; } } int DeQu(struct queue *q) { if(q->rear==q->front && q->tag==0)//表示队空 return 0; else { q->qu[q->front]=0;//将队头元素的值赋值为0 q->front=(q->front+1)%MaxSize;//头指针向后走一步 if(q->rear==q->front)//若有元素出队以后出现q->rear==q->front,则表示队列空 q->tag=0; return 1; } } void Display(struct queue *q) {int n,i;//n为队列中元素的个数 if(q->rear==q->front && q->tag==1)//队列满 n=MaxSize; else n=(q->rear-q->front+MaxSize)%MaxSize; for(i=0;i<n;i++) printf("%4d",q->qu[(q->front+i)%MaxSize]); printf(" "); } main() {struct queue *q; int c,k,x; q=InitQu(); loop: printf("---------(1).入队列请按数字键1.---------------"); printf(" ---------(2).出队列请按数字键2.---------------"); printf(" ---------(3).打印队列请按数字键3.-------------"); printf(" 请选择要进行的操作:"); scanf("%d",&c); switch(c) { case 1:{ do{ printf("请输入入队元素的值:"); scanf("%d",&x); EnQu(q,x); printf(" 是否继续入队,是请按数字键1,否则请按其他数字键!"); scanf("%d",&k); }while(k==1); goto loop; break; } case 2:{ do{ DeQu(q); printf(" 是否继续出队,是请按数字键1,否则请按其他数字键!"); scanf("%d",&k); }while(k==1); goto loop; break; } case 3:{ Display(q); goto loop; break; } } printf(" "); }

循环队列为空,s=0,front=rear=m 循环队列为满,s=1,front=rear 这两个

选c。

当frontrear,队列中元素个数为m–front+rear 当front=rear,队列为空或满,即队列中元素个数为0或m。

所以此题中队列个数为m–20+15=m–5 因为顺序查找,所以最坏结果是比较完所有数,所以为m–5

什么是循环队列的入队运算和退队运算?(好难理解啊)

循环队列:在一段固定存储空间(内存中一段顺序存储空间、等同于一个数组)实现队列的先进先出功能! 用一个指针指向队头,另一个指向队尾! 每次入队一个元素:把这个元素放在队尾指针位置,同时指针地址加1,若超出存储空间边界的末端则指向存储空间首位......

循环队列的入队和出队

例、 用带头结点的单循环链表表示一个队列,且只设一个指向队尾元素的指针p,试分别写出入队和出队算法。

入队算法 typedef struct node { <datatype> data; struct node *next; }Qnode; Qnode * in_queue ( Qnode *p, <datatype> x ) { Qnode * q; q = (Qnode*)malloc( sizeof(Qnode) ); /*取得一个新结点*/ q->data = x; /*将x置入新结点数据域中*/ q->next = p->next; p->next = q; /*将新结点插在原队列之后*/ p = q; /*p指向新的队尾结点*/ return ( p ); } 出队算法 Qnode * out_queue ( Qnode *p, <datatype> *x ) { Qnode * front, *q; if ( p->next == p ) /*空队列*/ exit; front = p->next; /*front指向表头结点*/ q = front->next; /*q指向队头元素结点*/ *x = q->data; front->next = q->next; /*删除队头元素结点*/ free ( q ); if ( front->next == front ) /*原队列只有一个元素时*/ p = front; return ( p ); }

舍利云30元/月起;美国CERA云服务器,原生ip,低至28元/月起

目前舍利云服务器的主要特色是适合seo和建站,性价比方面非常不错,舍利云的产品以BGP线路速度优质稳定而著称,对于产品的线路和带宽有着极其严格的讲究,这主要表现在其对母鸡的超售有严格的管控,与此同时舍利云也尽心尽力为用户提供完美服务。目前,香港cn2云服务器,5M/10M带宽,价格低至30元/月,可试用1天;;美国cera云服务器,原生ip,低至28元/月起。一、香港CN2云服务器香港CN2精品线...

香港CN2云服务器 1核 2G 35元/月 妮妮云

妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款到网站余额,超过2天...

百驰云(19/月),高性能服务器,香港三网CN2 2核2G 10M 国内、香港、美国、日本、VPS、物理机、站群全站7.5折,无理由退换,IP免费换!

百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...

循环队列为你推荐
通达oa精灵通达oa精灵系统密码忘了怎么找回excel通配符Excel 条件中带有通配符的怎么用sumifsap是什么SAP是什么东西初始化磁盘如何将磁盘还原为“未初始化”状态?ucosiiucosii任务堆栈的作用是什么呢?cs躲猫猫cs躲猫猫怎么联机 今天在一个视频上看到的,T可以变成地图上的一个物品CT是找,请问怎么和老外联机163登陆163邮箱登陆电脑版html源代码求html代码系统登录界面谁知道XP系统的登录界面。和启动界面怎么更改的 急小蓝条戴尔系统开机动画里的小蓝条怎么去
vps动态ip 域名服务器是什么 香港加速器 godaddy主机 42u机柜尺寸 好玩的桌面 建站代码 中国特价网 免费个人空间申请 百度云1t cdn加速是什么 电信托管 个人免费主页 申请网站 www789 shuang12 国外的代理服务器 免费蓝钻 购买空间 阿里云邮箱申请 更多