在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给()。
A.elemHead
B.elemTail
C.elemHead->next和elemHead
D.elemTail->next和elemTail
A.elemHead
B.elemTail
C.elemHead->next和elemHead
D.elemTail->next和elemTail
第1题
A.elemHead
B.elemTail
C.elemHead和elemTail
D.elemHead或elemTail
第2题
在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为()。
A.first+1
B.(first+1)%MS
C.(first-1)%MS
D.(first+length)%MS
第3题
A.length+1
B.first+length
C.(first+length-1)%MS
D.(first+length)%MS
第4题
A.length+1
B.first+length
C.(first+length-1)%MS
D.(first+length)%MS
第5题
从大到小的次序链接的,试分别写出从顶点0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历得到的顶点序列。
第6题
A.顺序存储方式只能用于存储线性结构
B.顺序存储方式的优点是存储密度,插入、删除运算效率高
C.链表的每个结点中都恰好包含一个指针
D.队列的存储方式既可以是顺序方式,也可以是链接方式
第7题
判断下列叙述正确与否。
①顺序存储方式只能用于存储线性结构。
②顺序存储方式的优点是存储密度大,且插入、删除运用算效率高。
③链表的每个结点中都恰好包含一个指针。
④散列法存储的基本思想是由关键码的值决定数据的存储地址。
⑤散列表的结点中只包含数据元素自身的信息,不包含任何指针。
⑥负载因子(装填因子)是散列法的一个重要参数,它反映散列表的装满程度。
⑦栈和队列的存储方式既可是顺序方式,也可是链接方式。
⑧用二叉链表法(llink-rlink法)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
⑨用相邻矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中结点个数有关,而与图的边数无关。
⑩邻接表法只能用于有向图的存储,而相邻矩阵法对于有向图和无向图的存储都适用。
第8题
阅读下列函数说明和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);
}
}
}
第9题