以下函数为链队列的入队操作,X为要人队的结点的数据域的值,front,rear分别是链队列的队头、队尾指针。 <img src="//img.examk.com/exam/y/q/wEpN3KqLoBy61D6xA3EMmwM3hhfAQd1T.jpg">

题目
以下函数为链队列的入队操作,X为要人队的结点的数据域的值,front,rear分别是链队列的队头、队尾指针。
参考答案和解析
(1)malloc(sizeof(structnode))
(2)rear->next=p
(3)p
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在队列中,(7)允许插入操作,(7)允许删除操作。

A.队头(front)队尾(rear)

B.队尾(rear)队头(front)

C.队头(front)和队尾(rear)队头(front)

D.队头(front)和队尾(rear)队头(front)和队尾(rear)


正确答案:B
解析:队列是一种先进先出的线性表,它只允许在队尾插入,在队头删除。

第2题:

设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则删除一个结点的操作是()。

A、rear=front->next

B、rear=rear->next

C、front=front->next

D、front=rear->next


正确答案:C

第3题:

循环队列Q的元素入队时的队尾指针操作是()。

A、rear=(rear+1)%size

B、rear=rear+1

C、front==(rear+1)%n

D、front==(rear-1)%n


参考答案:A

第4题:

设循环队列Q的定义中有front和size两个域变量,其中front表示队头元素的指针,size表示队列的长度,如下图所示(队列长度为3,队头元素为x,队尾元素为z)。设队列的存储空间容量为M,则队尾元素的指针为 (58)。

A.(Q.front+Q.size-1)

B.(Q.front+Q.size-1+M)%M

C.(Q.front-Q.size)

D.(Q.front-Q.size+M)%M


正确答案:B
本题考查循环队列队尾指针的计算方法。从图示可以看出,要得到z的值可进行Q.front+Q.size-1操作,但在此不容忽视的一个问题是,循环队列在进行了多次入队出队操作之后,Q.front+Q.size-1有可能大于M,如Q.front指向M-1空间时,Q.front+Q.size-1=M+1,这已超出队列长度,所以需要让其与M进行求模操作,修正位置号。

第5题:

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

A.rear-front

B.front-rear

C.(rear-front+M)MODM

D.(front-rear+M)MOD M


正确答案:C
解析:本题考查数据结构中队列的础知识。队列是仅在表头删除元素、在表尾插入元素的操作受限的线性表,其特点是先入先出。应用中可以将队列看作容器。队列采用顺序存储结构(一维数组,顺序队列)时,为了降低运算的复杂度,元素入队时,只需修改队尾指针rear,(rear+1→rear);元素出队时,只需修改队头指针front(front+1→front)。由于顺序队列的存储空间是提前设定的,所以队尾指针会有一个上限值,当队尾指针达到其上限时,就不能只通过修改队尾指针来实现新元素的入队操作了。此时,可将顺序队列假想成一个环状结构,称为循环队列。队列容量为M时,队头指针front和队尾指针rear的值循环地在0~M-1之间变化,当rear>front时,队列中元素数目为rear-front;当rearfront时,队列中元素数目为rear-front +M。综上,队列中元素数目为(rear-front+M)MOD M。

第6题:

设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则判定该队中只有一个结点的条件是()。

A、front->next

B、rear->next

C、front==rear

D、front!=rear


正确答案:C

第7题:

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

(41)

A. rear – front

B. front – rear

C. (rear –front + M) MOD M

D. (front – rear + M) MOD M


正确答案:C

第8题:

在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为()。

A、front=front->next

B、rear=rear->next

C、rear=front->next

D、front=rear->next


参考答案:A

第9题:

阅读下列函数说明和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;

}

}


正确答案:(1) q->front=q->rear (2) = = (3)q-> rear->next (4) p->data (5) q->front->next
(1) q->front=q->rear (2) = = (3)q-> rear->next (4) p->data (5) q->front->next 解析:(1)初始化链队q时,需要初始化其头尾指针,空链队的头尾指针相等;
(2)链队头尾指针重合当且仅当链队为空;
(3)向链队插入新元素的操作是在链队末尾进行的,需要将新元素结点接在原链队队尾,再让新的尾指针指向这一新结点;
(4)~(5):链队q的第一个元素存放在其头结点之后的第一个结点(即p=q->front->next)中。*x= p->data表示将这个元素取出,以参数*x的形式返回:q->front->next=p->next表示将结点p从链队中取出。

第10题:

假定一个链队列的队首和队尾指针分别为front和rear,则判断队空的条件为( )。

A.front==rear

B.front!=NULL

C.rear!=NULL

D.front==NULL


正确答案:D
解析:链队列是用链表的方法来表示的队列,对链队列的插入删除操作只需要修改头指针或尾指针,当删除头指针时,若队列中还有其他元素,则头指针指向其直接后继,若删除非头指针,否则头指针保持不变,也就是说只要队列不空,头指针始终指向一个元素。

更多相关问题