已知带头结点的链队列指针Q,则该队列做新元素结点s进队操作的语句是()
A.Q->rear->next=s; Q->rear=s;
B.s->next=Q->front->next; Q->front->next=s;
C.Q->next=s;Q=s;
D.s->next=Q->next ;Q->next=s;
第1题:
在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为
______和r=s;(结点的指针域为next)。
第2题:
A、front->next
B、rear->next
C、front==rear
D、front!=rear
第3题:
此题为判断题。
参考答案:对
第4题:
判定“带头结点的链队列为空”的条件是(56)。
A.Q.front==NULL
B.Q.rear==NULL
C.Q.front==Q.rear
D.Q.front!=Q.rear
第5题:
在一个链队列中,若f,r分别为队首、队尾指针,则插入s所指结点的操作为( )
A.f—>next=c;f=s;
B.r—>next=s;r=s;
C.s—>next=r;r= s
D.s—>next=f,f=s;
第6题:
以下函数为链队列的入队操作,x为要入队的结点的数据域的值,front、rear分别是链队列的队头、队尾指针。
malloc(sizeof(structnode));rear->next=p;p
略
第7题:
以下函数为链队列的入队操作,X为要人队的结点的数据域的值,front,rear分别是链队列的队头、队尾指针。
(1)malloc(sizeof(structnode))
(2)rear->next=p
(3)p
略
第8题:
循环队列的队头指针指示队头元素在数组中实际位置的()位置, 对头指针指示的结点()队列元素。
第9题:
在一个链队中,f和r分别为队头和队尾指针,队结点的指针域为next,则插入一个s所指结点的操作为()和r=s;。
第10题:
仅修改队头指针
仅修改队尾指针
队头、队尾指针都要修改
队头、队尾指针都可能要修改
第11题:
rear->next=p;rear=p;
rear->next=p;p=rear;
p=rear->next;rear=p;
rear=p;rear->next=p;
第12题:
第13题:
A.r=r->next
B.r->next=r
C.f=f->next
D.f->next=f
第14题:
A、rear=front->next
B、rear=rear->next
C、front=front->next
D、front=rear->next
第15题:
在一个有头结点的链队列中,假设f和r分别为队首和队尾指针,则插入s所指的结点的运算是()。
A.f->next=s;f=s;
B.r->next=s;r=s;
C.s->next=r;r=s;
D.s->next=f;f=s;
第16题:
阅读下列函数说明和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;
}
}
第17题:
第18题:
以下函数为链队列的入队操作,x为要入队的结点的数据域的值,front、rear分别是链队列的对头、队尾指针。
略
第19题:
用不带头结点的单链表存储队列,其头指针指向队头结点,尾指针指向队尾结点,则在进行出队操作时()。
第20题:
在带头结点的链队列q中,用q.front表示队头指针,q.rear表示队尾指针,结点结构为data next ,删除链队列的队头结点的主要语句为()。
第21题:
s=q.front;q.front->next=s.next;
s=q.front->next;q.front->next=s.next;
s=q.front->next;q.front=s.next;
s=q;q.front->next=s.next;
第22题:
front->next=s;front=s;
s->next=rear;rear=s;
rear->next=s;rear=s;
s->next=front;front=s;
第23题:
front=p->next;
front->next=p->next;
front=p;
front->next=p;
第24题: