(单选)已知一个顺序存储的循环队列Q定义如下: #define MAXSIZE 50 typedef struct { QueueElementType element[MAXSIZE]; int front; //队头指示器 int rear; //队尾指示器 }SeqQueue; 则该非空队列取队头元素操作的语句是() A. Q->element[0]; B. Q->element[1]; C. Q->element[Q->front]; D. Q->element[Q->rear];

(单选)已知一个顺序存储的循环队列Q定义如下: #define MAXSIZE 50 typedef struct { QueueElementType element[MAXSIZE]; int front; //队头指示器 int rear; //队尾指示器 }SeqQueue; 则该非空队列取队头元素操作的语句是() A. Q->element[0]; B. Q->element[1]; C. Q->element[Q->front]; D. Q->element[Q->rear];


参考答案和解析
Q->rear= (Q-> rear +1)%maxsize

相关考题:

设数组data[0…m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为A.sq↑.front:=sq↑.front+1;B.sq↑.front:=(sq↑.front+1)%maxsize ;C.sq↑.rear:=(sq↑.rear+1)%maxsize ;D.sq↑.front:=(sq↑.front+1)%(maxsize+1);

判断一个循环队列Q(最多n个元素)为满的条件是()。 A、Q->rear==Q->frontB、Q->rear==Q->front+1C、Q->front==(Q->rear+1)%nD、Q->front==(Q->rear-1)%n

阅读下列函举说明和C代码,将应填入(n)处的字句写在对应栏内。【说明4.1】假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下:typedef struct {DateType data [MaxSize];int front[2],rear[2];}Queue2;对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数.EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第i个队列的入队操作。【函数4.1】int EnQueue(Queue2 * Q, int i, DateType x){ /*若第i个队列不满,则元素x入队列,并返回1;否则,返回0*/if(i<0‖i>1) return 0;if(Q->rear[i]==Q->front[(1)]return 0;Q->data[(2)]=x;Q->rear[i]=[(3)];return 1;}【说明4.2】函数BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。已知二叉树中的结点类型BinTreeNode定义为:struct BinTreeNode {char data;BinTreeNode * left, * right;};其中dau为结点值域,leR和risht分别为指向左、右子女结点的指针域,【函数4.2】int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2){if(Ti == NULL T2 == NULL)return 1 /*若两棵树均为空,则相等*/else if((4))return 0; /*若一棵为空一棵不为空,则不等*/else if((5)) return 1; /*若根结点值相等并且左、右子树*//*也相等,则两棵树相等,否则不等*/else return 0;}

设数组data[0…m]作为循环队列S q的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )。A.S q↑.front:=S q十.front+1;B.S q↑.front:=(S q十.front+1)%maxsize;C.S q↑.rear:=(s q十.rear+1)%maxsize;D.S q↑.front:=(s q十.front+1)%(maxsize+1);

在队列中,(7)允许插入操作,(7)允许删除操作。A.队头(front)队尾(rear)B.队尾(rear)队头(front)C.队头(front)和队尾(rear)队头(front)D.队头(front)和队尾(rear)队头(front)和队尾(rear)

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。[说明]循环队列的类型定义如下(其中队列元素的数据类型为datatype):typedef struct{datatype data[MAXSIZE]; /*数据的存储区*/int front,rear; /*队首、队尾指针*/int num; /*队列中元素的个数*/}c _ SeQueue; /*循环队*/下面函数及其功能说明如下:(1) c_SeQueue* Init_SeQueue():新建队列;(2) int ln_SeQueue( c_SeQueue *q, datatype x):将元素x插入队列q,若成功返回1否则返回0;(3) int Out_SeQueue (c_SeQueue *q, datatype *x):取出队列q队首位置的元素,若成功返回1否则返回0。[函数]c_SeQueue* Init_SeQueue(){ q=malloc(sizeof(c_SeQueue));q->front=q->rear=MAXSIZE-1;(1);return q;}int In_SeQueue( c_SeQueue *q, datatype x){ if(q->num= =MAXSIZE) return 0; /*队满不能入队*/else {q->rear=(2);q->data[q->rear]=x;(3);return 1; /*入队完成*/}}int Out_SeQueue( c_SeQueue *q, datatype *x){ if (q->num= =0) return 0; /*队空不能出队*/else{*x=(4); /*读出队首元素*/q->front=(5);q->num- -;return 1; /*出队完成*/}}

设数组data[0…m]作为循环队列s q的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )。A.S q↑.front:=s q↑.front+1;B.S q↑.front:=(S q↑.front+1)%maxsize;C.S q↑.rear:=(S q↑.rear+1)%maxsize;D.S q↑.front:=(s q↑.front+1)%(maxsize+1);

设数组data[O…m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为A.sq↑.front:=sq↑.front+1;B.sq↑.front:=(sq↑.front+1)%maxsize;C.sq↑.rear:=(sq↑.rear+1)%maxsize;D.sq↑.front:=(sq↑.front+1)%(maxsize+1);

循环队列A[0…m-1)存放其元素,用front和Feat分别表示队头和队尾,则循环队列满的条件是(35)。A.Q.rear+1==Q.frontB.Q.rear==Q.front+1C.Q.rear==Q.frontD.(Q.rear+1)%m==Q.front

某循环队列的容量为M,队头指针指向队头元素,队尾指针指向队尾元素之后,如下图所示(M=8),则队列中的元素数目为(41)(MOD表示整除取余运算)。A.rear-frontB.front-rearC.(rear-front+M)MODMD.(front-rear+M)MOD M

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。[说明]链式存储的队列称为链队。根据队列的FIFO原则,为了操作上的方便,可以使用带头指针front和尾指针rear的单链表来实现链队。若链队元素的数据类型为datatype,则链队结构描述如下:typedef struct node{ datatypedata;structnode *next;} QNode; /*链队结点的类型*/typedef struct{ QNnode *front,*rear;} LQueue; /*将头尾指针封装在一起的链队*/以下这种链队的几个例子:设q是一个指向链队的指针,即LQueue *q。下面各函数的功能说明如下:(1) LQueue *Init_LQueue():创建并返回一个带头尾结点的空链队;(2) intEmpty_LQueue( LQueue *q):判断链队q是否空;(3) void In_LQueue(LQueue *q, datatypex):将数据x压入链队q;(4) int Out_LQueue(LQuere *q, datatype *x):弹出链队q的第一个元素x,若成功则返回返回1否则返回0。[函数]LQueae *Init_LQueue(){ LQueue *q, *p;q=malloc(sizeof(LQueue)); /*申请链队指针*/P=malloc(sized(QNode));/*申请头尾指针结点*/p->next=NULL;(1)=p;return q;}int Empty_LQueue(LQueue *q){ if(q->front (2) q>rear) return 0;else return 1;}void In_LQueue(LQueue *q, datatype x){ QNoda *p;p=malloc(sizeof(QNnode));/*申请新接点*/p->data=x;p->next=NULL;(3)=p;q->rear=p;}int Out_LQueue(LQueue *q, datatype *x){ QNnode *p;if(Empty_LQueue(q)) return 0; /*队空,操作失败*/else{p=q->front->next;*x=(4);(5)=p->next;free(p);if (q->front->next= =NULL)q->rear=q->front;return 1;}}

设循环队列的结构是: const int MaxSize=100; typedef int Data Type; typedef struct { DataType data[MaxSize]; int front, rear; }Queue; 若有一个Queue类型的队列Q,试问判断队列满的条件应是(33)。A.Q.front=Q.rear;B.Q.front-Q.rear==MaxSize;C.Q.front+Q.rear=MaxSize;D.Q.front==(Q.rear+1)%MaxSize;

阅读以下说明和C函数,填补函数代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。【说明】队列是一种常用的数据结构,其特点是先入先出,即元素的插入在表头、删除在表尾进行。下面采用顺序存储方式实现队列,即利用一组地址连续的存储单元存放队列元素,同时通过模运算将存储空间看作一个环状结构(称为循环队列)。设循环队列的存储空间容量为MAXQSIZE,并在其类型定义中设置base、rear和lengtb三个域变量,其中’base为队列空间的首地址,rear为队尾元素的指针,length表示队列的长度。define maxqstze 100typedef struct {QElemType *base; /*循环队列的存储空间首地址*/int rear; /*队尾元素索引*/int length; /*队列的长度*/) SqQueue;例如,容量为8的循环队列如图3-1所示,初始时创建的空队列如图3一l(a)所示经过一系列的入队、出队操作后,队列的状态如图3-1 (b)所示(队列长度为3)。下面的C函数1、C函数2和C函数3用于实现队列的创建、插入和删除操作,请完善这些代码。【C函数1】创建一个空的循环队列。int initQueue (SqQueue *Q)/*创建容量为MAXQSIZE的空队列,若成功则返回1;否则返回0*/{ Q->base = (QElemType*) malloc(MAXQSIZE* (1) )if (!Q=>base) return 0;。;Q->length=O;Q-’rear =O:Return 1;} /*InitQueue*/【c函数2】元素插入循环队列。int EnQueue(sqQueue *Q. QElemType e)/*元素e入队,若成功则返回1;否则返回0*/{if ( Q->length>=MAXQSIZE) return 0.;Q->rear=(2);Q->base [Q->rear]=e;(3) ;Return 1) /*EnQUeue*/【c函数3】元素出循环队列。int DeQueue (SqQueue *Q. QElemType *e)/*若队列不空,则删除队头元素,由参数e带回其值并返回1;否则返回O*/{1f‘(4),return 0;*e =O->base[ (Q=>rear - Q->length+I+MAXQSTZE) %MAXQSIZE](5) ;returnl;} /*DeQueue*/

试题四(共 15 分)阅读以下说明和 C 函数,填补函数中的空缺,将解答填入答题纸的对应栏内。【说明】简单队列是符合先进先出规则的数据结构,下面用不含有头结点的单向循环链表表示简单队列。函数 enqueue(queue *q,KeyType new_elem) 的功能是将元素new_elem 加入队尾。函数 Dnqueue(queue *q,KeyType *elem)的功能使将非空队列的队头元素出队(从队列中删除),并通过参数带回刚出队的元素。用单向循环链表表示的队列如图 4-1 所示。图 4-1 单向循环链表表示的队列示意图队列及链表结点等相关类型定义如下:enum {errOr, OK};typedef int KeyType;typedef struct qNode﹛KeyType data;Struct qNode*next;﹜qNode,*Linkqueue; Typedef struct﹛int size;Link:queue rear;}queue; 【C 函数】int enqueue(queue*q,KeyType new_elem)﹛ //元素 new_elem 入队列qNode*p;P=(qNode*)malloc(sizeof(qNode));if(!p)return errOr;P->data=new_elem;if(q->rear)﹛P->next=q->rear->next;();﹜elseP->next=p;﹙﹚;q->size++;return OK;﹜ int Dequeue(queue*q,KeyType*elem)﹛ //出队列qNode*p;if(0==q->size) //是空队列return errOr;P=(); //令 p 指向队头元素结点*elem =p->data;q->rear->next=(); //将队列元素结点从链表中去除if(()) //被删除的队头结点是队列中唯一结点q->rear=NULL //变成空队列free(p);q->size--;return OK;﹜

设某循环队列Q的定义中有front和rear两个域变量,其中,front指示队头元素的位置,rear指示队尾元素之后的位置,如下图所示。若该队列的容量为M,则其长度为(57)。A.(Q.rear-Q.front+1)B.(Q.rear-Q.front+M)C.(Q.rear-Q.front+1)%MD.(Q.rear-Q.front+M)%M

在数组表示的循环队列中,front、rear分别为队列的头、尾指针,maxSize为数组的最大长度,队满的条件是()A、front=maxSizeB、(rear+1)%maxSize=frontC、rear=maxSizeD、rear=front

循环队列sq中,用数组elem存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则在队列未满时元素x入队列的主要操作为()。A、sq.rear= (sq.rear+1)mod MAXSIZE; sq.elem[sq.rear]=x;B、sq.elem[sq.rear]=x; sq.rear= (sq.rear+1)mod MAXSIZE;C、sq.front= (sq.front+1)mod MAXSIZE; sq.elem[sq.front]=x;D、sq.elem[sq.front]=x; sq.front= sq.front+1;

在循环队列中用数组A[0..m-1]存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是()A、(front-rear+1)%mB、(rear-front+1)%mC、(front-rear+m)%mD、(rear-front+m)%m

某循环队列的容量MAXSIZE=6,队头指针front=3,队尾指针rear=0,则该队列有()个元素。

循环队列sq中,用数组elem存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则队列满的条件为()。A、sq.front= sq.rearB、sq.front= sq.rear+1C、(sq.front +1)mod MAXSIZE= sq.rearD、(sq.rear+1)mod MAXSIZE= sq.front

循环队列的最大存储空间为MaxSize=6,采用少用一个元素空间以有效地判断栈空或栈满,若队头指针front=4,当队尾指针rear=()时队满,队列中共有()个元素。

循环队列的最大存储空间为MaxSize=8,采用少用一个元素空间以有效的判断栈空或栈满,若队头指针front=4,则当队尾指针rear=()时,队列为空,当rear=()时,队列有6个元素。

循环队列的队头和队尾指针分别为front和rear,则判断循环队列为空的条件是()。A、front==rearB、front==0C、rear==0D、front=rear+1

填空题循环队列的最大存储空间为MaxSize=8,采用少用一个元素空间以有效的判断栈空或栈满,若队头指针front=4,则当队尾指针rear=()时,队列为空,当rear=()时,队列有6个元素。

填空题某循环队列的容量MAXSIZE=6,队头指针front=3,队尾指针rear=0,则该队列有()个元素。

单选题循环队列sq中,用数组elem存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则队列满的条件为()。Asq.front= sq.rearBsq.front= sq.rear+1C(sq.front +1)mod MAXSIZE= sq.rearD(sq.rear+1)mod MAXSIZE= sq.front

单选题在数组表示的循环队列中,front、rear分别为队列的头、尾指针,maxSize为数组的最大长度,队满的条件是()Afront=maxSizeB(rear+1)%maxSize=frontCrear=maxSizeDrear=front

单选题循环队列sq中,用数组elem存放数据元素,sq.front指示队头元素的前一个位置,sq.rear指示队尾元素的当前位置,队列的最大容量为MAXSIZE,则在队列未满时元素x入队列的主要操作为()。Asq.rear= (sq.rear+1)mod MAXSIZE; sq.elem[sq.rear]=x;Bsq.elem[sq.rear]=x; sq.rear= (sq.rear+1)mod MAXSIZE;Csq.front= (sq.front+1)mod MAXSIZE; sq.elem[sq.front]=x;Dsq.elem[sq.front]=x; sq.front= sq.front+1;