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

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

}

}


相关考题:

阅读下列函数说明和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; /*出队完成*/}}

设在一不带头结点的链队列中,front和rear分别为其队头和队尾指针,则删除一个结点的操作是()。 A、rear=front->nextB、rear=rear->nextC、front=front->nextD、front=rear->next

阅读下列函数说明和C函数,将应填入(n)处的字句写对应栏内。[说明]二叉树的二叉链表存储结构描述如下:typedef struct BiTNode{ datatype data;struct BiTNode *lchild, * rchild; /*左右孩子指针*/}BiTNode,* BiTree;对二叉树进行层次遍历时,可设置一个队列结构,遍历从二叉树的根结点开始,首先将根结点指针入队列,然后从队首取出一个元素,执行下面两个操作:(1) 访问该元素所指结点;(2) 若该元素所指结点的左、右孩子结点非空,则将该元素所指结点的左孩子指针和右孩子指针顺序入队。此过程不断进行,当队列为空时,二叉树的层次遍历结束。下面的函数实现了这一遍历算法,其中Visit(datatype a)函数实现了对结点数据域的访问,数组queue[MAXNODE]用以实现队列的功能,变量front和rear分别表示当前队首元素和队尾元素在数组中的位置。[函数]void LevelOrder(BiTree bt) /*层次遍历二叉树bt*/{ BiTree Queue[MAXNODE];int front,rear;if(bt= =NULL)return;front=-1;rear=0;queue[rear]=(1);while(front (2) ){(3);Visit(queue[front]->data); /*访问队首结点的数据域*/if(queue[front]—>lchild!:NULL){ rear++;queue[rear]=(4);}if(queue[front]->rchild! =NULL){ rear++;queue[rear]=(5);}}}

以下函数为链队列的入队操作,x为要入队的结点的数据域的值,front、rear分别是链队列的队头、队尾指针。

以下函数为链队列的入队操作,x为要入队的结点的数据域的值,front、rear分别是链队列的对头、队尾指针。

以下函数为链队列的入队操作,X为要人队的结点的数据域的值,front,rear分别是链队列的队头、队尾指针。

若用一个不带头结点的单链表表示队列,队头和队尾指针分别为front和rear,则判断队空的条件是()。A.front == rearB.front == NULLC.front!==NULLD.rear!==NULL

若采用循环单链表的结构表示链式队列,可以不设队头指针,仅在链尾设置队尾指针。

(判断题)若采用循环单链表的结构表示链式队列,可以不设队头指针,仅在链尾设置队尾指针。A.Y.是B.N.否