假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个
A.(Q.rear+Q.len-1)
B.(Q.rear+Q.1en-1+M)%M
C.(Q.rear-Q.1en+1)
D.(Q.rear-Q.1en+1+M)%M
(57)
A. (Q.rear+Q.len-1)
B. (Q.rear+Q.len-1+M)%M
C. (Q.rear-Q.len+1)
D. (Q.rear-Q.len+1+M)%M
A.rear-length
B.(rear-length+m) mod m
C.(1+rear+m-length) mod m
D.m-length
A.rear-length
B.(rear-length+m)mod m
C.(1+rear+m-length)mod m
D.m-length
A.rear-length
B.(rear-length+m)mod m
C.(1+rear+m-length)mod m
D.m-length
阅读下列函数说明和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);
}
}
}
设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。
A.20
B.0或35
C.15
D.16
在-个容量为32的循环队列中,若头指针front3,尾指针rear=2,则该循环队列中共有元素个数为()。
A.29
B.30
C.31
D.32
设循环队列的存储空间为Q(1:3),初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有()个元素。
判定一个循环队列qu(最多元素为MaxSize)为空的条件是()。
A.QU->rear - QU->front = =MaxSize
B.QU->rear - QU->front -1= =MaxSize
C.QU->front = = QU->rear
D.QU->front = = QU->rear+1