在队列中的入队操作中 sq->rear=(sq->rear+1)%maxsize;是什么意思?

作者&投稿:楚莺 (若有异议请与网页底部的电邮联系)
在数据结构入队与出队的算法中,为什么Q->rear=(Q->rear+1)%MAXSIZE与Q->data[Q->rear]=x可以互换~

后者是让队列尾指针后移一位,前者是判断队列是否已满。

这是用数组来模拟循环队列,队列的性质是先进先出。该结构体中的data代表队列,data数组中的一个元素代表队列中的一个元素。
第一句sq.rear=(sq.rear+1)%maxsize;,rear表示后一个节点的编号,正常情况下,后一个节点编号都是比当前节点的编号大1,所以取sq.rear+1,而当到了最后一个节点,由于是循环队列,故它的下一个节点是第一个节点,其编号变为0,综合到一起,就可以通过(sq.rear+1)%maxsize这样一个表达式来表示下一个节点的编号。
第二句中有个小错误,左括号为方括号,而不是花括号。其含义为对队列的第rear个元素赋值。

队列长度最大为maxsize,每做一次入队操作指针向上移动,当超过最大长度时,回归到最初


栈的特点是,队列的特点是
3、"假上溢"现象:由于入队和出队操作中,头尾指针只增加不减小,致使被删元素的空间永远无法重新利用。当队列中实际的元素个数远远小于向量空间的规模时,也可能由于尾指针已超越向量空间的上界而不能做入队操作。该现象称为"假上溢"现象。循环队列:在实际使用队列时,为了使队列空间能重复使用,往往...

在链队列中执行入队操作A(需判别队是否空)B需判别队是否满C限制在链表...
D 入队 是增加一个资源,无需判空,又是链队,没有空间要求,故无需判满,D

循环队列-实现
但是使用循环队列,我们能使用这些空间去存储新的值,减少对存储空间的浪费。我们可以使用固定大小的数组和两个指针来指示起始位置和结束位置,来实现循环队列,基本思路如下:1、队列为空状态时,两个指针 head = tail = -1 2、入队操作:如果入队前是空的,则将head 和 tail 都向右移一位,使得下标...

队列的意思
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一...

数据的循环队列是什么?
在循环队列中进行出队、入队操作时,队首、队尾指针仍要加1,朝前移动。只不过当队首、队尾指针指向数组上界(MAXSIZE-1)时,其加1操作的结果是指向数组的下界0,循环队列不会上溢。同样是约定在非空循环队列里,队首指针始终指向队头元素,队尾指针始终指向队尾元素的下一个位置。因此,真正实用...

栈和队列在实际中的例子
队列:民航机票订购。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底。最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底...

循环队列中入队与出队算法
比如指向要出队的元素的指针是 pDel,那么出队就应该是:pDel->pPre->pNext = pDel->pNext;pDel->pNext->pPre = pDel->pPre;如果循环队列每个元素只有一个指向其后元素的指针pNext,那么需要遍历整个队列,找到要出队元素的前一个元素,然后就和上面的算法差不多了。如果经常要进行出队操作,...

什么是队列?
队列和栈一样,也是一种操作受一定规则限制的数据结构。队列简单理解就是平常生活中的排队。队列在结构上分为队头和队尾,只能在队头执行出队操作,在队尾执行入队操作。队列的这种结构其实就类似于我们现实世界中的排队,队伍只能从前往后排,新来的排在队尾,排在队伍最前面的可以最先出队,队列实际...

队列的入队,出队。显示队中元素是指怎么样的操作?
include<iostream> include<malloc.h> using namespace std;typedef struct qnode{ \/\/存储结构 int data;struct qnode *next;}qnode,*queueptr;typedef struct { queueptr front ;queueptr rear;}linkqueue;int initqueue(linkqueue &q) \/\/建立空队列 { q.rear =q.front =(queueptr)malloc(...

入队是什么意思计算机
加入队列。入队就是把新元素放入队列中,只允许在队尾的位置放入元素,新元素的下一个位置将会成为新的队尾。队列是一种线性数据结构,它的特征和行驶车辆的单行隧道很相似。队列的元素只能先入先出。队列的出口端叫做队头,队列的入口端叫做队尾。如果不断地进行出队操作,那么队头左边的空间将会失去...

江口县14716203429: 在队列中的入队操作中 sq - >rear=(sq - >rear+1)%maxsize;是什么意思? -
原霭迪尔: 队列长度最大为maxsize,每做一次入队操作指针向上移动,当超过最大长度时,回归到最初

江口县14716203429: C语言 数据结构 循环队列插入操作 -
原霭迪尔: 取余是为了判断队列是否是满的 sq->a[sq->rear]=x; 这句是讲x插入到队尾

江口县14716203429: 在循环队列中怎样实现入队和出队操作? 数据结构 C语言 -
原霭迪尔: 入队操作 功能:将元素 x 插入到Q的队尾. 算法:Status EnQueue(SqQueue &Q, QElemType e) {if ((Q.rear+1) % MaxQsize == Q.front) return ERROR; // 队列满Q.base[Q.rear]=e;Q.rear=(Q.rear+1) % MaxQsize;return OK; } 出队操作 功能:...

江口县14716203429: 计算机软件基础 -
原霭迪尔: typedef int ElemType; typedef struct Queue { ElemType* data; int front; int rear; int Qsize; }Queue;//初始化通过参数传进来创建队列的大小 bool initQueue(Queue* q,int size) { q->front = 0; q->rear = 0; q->Qsize = size; q->data = (ElemType*)malloc(q...

江口县14716203429: 数据结构题目,用c语言实现. -
原霭迪尔: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 /* ------数据类型预定义------ */ typedefintStatus; //函数结果状态类型 /* ------函数结...

江口县14716203429: 循环队列中入队与出队算法 -
原霭迪尔: 如果循环队列每个元素有两个指前面的元素pPre,一个指向后面的元素pNext,出对和入队就是修改一下指针啊. 比如指向要出队的元素的指针是 pDel,那么出队就应该是: pDel->pPre->pNext = pDel->pNext; pDel->pNext->pPre = pDel->pPre;如果循环队列每个元素只有一个指向其后元素的指针pNext,那么需要遍历整个队列,找到要出队元素的前一个元素,然后就和上面的算法差不多了.如果经常要进行出队操作,在设计数据结构的时候还是建议每个元素使用两个指针.

江口县14716203429: 实现循环队列的基本操作(初始化、判断队空、判断队满、入队、出队) -
原霭迪尔: /*<br> 实现循环队列的基本操作(初始化、判断队空、判断队满、入队、出队)<br> */<br> //在javascript中,可以使用数组来实现一个队列<br> function stack(){<br> this.datastore = new Array(); //初始化<br> this.isEmpty = isEmpty; //判断队...

江口县14716203429: 循环队列的基本操作 -
原霭迪尔: #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(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网