计算机专业基础综合(数据结构)模拟试卷34
单选题
1.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储( )。(C)
A. 数据的处理方法
B. 数据元素的类型
C. 数据元素之间的关系
D. 数据的存储方法
解析:在存储数据时,需要存储数据元素的值和数据元素之间的关系。
2.有以下算法,其时间复杂度为( )。
void fun(int i)
{
int i=0;
while(i*i*i<=n)
i++;
}(C)
A. O(n)
B. O(nlog2n)
C. O(D. O(
解析:基本运算是语句i++,设其执行次数为T(n),用T(n)来衡量算法的时间复杂度。则有:T(n)×T(n)×T(n)≤n,即T(n)3≤n;所以有:
3.在非空循环双链表中q所指的结点前插入一个由P所指结点的过程依次为:( )
p->next=q;p->prior=q->prior;q->prior=p。(C)
A. q->next=p:
B. q->prior->next=p;
C. q->prior->next=p;
D. q->next->prior=p;
解析:p->next=q;p->prior=q->prior;两部操作实现P所指结点插入双链表的一个方向。接下来还须连通另一个方向:需要将原来链表q->prior所指的节点的next指针指向新插入的节点P(q->prior->next=p)和将q的prior指针指向P(q->prior=p)。另外,因为前两步操作的影响,P->prior和q->prior指向同一个结点。
4.头指针为head的带头结点的循环链表为空的判定条件是( )。(C)
A. head=null
B. head->next=null
C. head->next=head
D. head->null
解析:循环链表为空,即头结点的后继结点是头结点本身,具体的操作语句为head->next=head。
5.如果以链表作为栈的存储结构,则退链栈操作时( )。(C)
A. 必须判断链栈是否满
B. 判断链栈元素的类型
C. 必须判断链栈是否空
D. 对链栈不做任何判断
解析:在链表的退链栈操作时,如果栈已空,就没有元素可供退栈,返回退栈失败信息,所以必须判断链栈是否空。
6.有六个元素6,5,4,3,2,1的顺序进栈,下列选项中,( )不是合法的出栈序列。(C)
A. 543612
B. 453126
C. 346521
D. 234156
解析:根据栈的后进先出的特点,对于C选项中前两个元素得出栈顺序可以看出,4在5和6前先出栈,有根据入站顺序,4在5和6后入栈,因此4出栈时,5和6必定在栈内,且5在6之上,所以出栈时5要比6先出栈。
7.用链接方式存储的队列,在进行删除运算时,下面正确的是( )。(D)
A. 仅修改头指针
B. 仅修改尾指针
C. 头、尾指针都要修改
D. 头、尾指针可能都要修改
解析:链队列中删除元素一般仅修改队头指针。但只有一个元素时,出队后队空,此时需要修改队尾指针。
8.设二维数组 A[6][0],每个数组元素占用4个存储单元,若按行优先顺序存放的数组元素,a[0][0]的存储地址为860,则a[3][5]的存储地址为( )。(A)
A. 1000
B. 860
C. 1140
D. 1200
解析:每个数组元素占用4个存储单元,按行优先顺序存放的数组元素,则a[3][5]的存储地址为860+(3×10+5)×4=1000。
9.下列叙述正确的个数是( )
1)向二叉排序树中插入一个结点,所需比较的次数可能大于此二叉排序树的高度。
2)对B一树中任一非叶子结点中的某关键字K,比K小的最大关键字和比K大的最小关键字一定都在叶子结点中。
3)所谓平衡二叉树是指左、右子树的高度差的绝对值不大于1的二叉树。
4)删除二叉排序树中的一个结点,再重新插入,一定能得到原来的二又排序树。(D)
A. 4
B. 3
C. 2
D. 1
解析:只有第3项是正确的。
10.下面过程是二叉树的( )遍历方法。
Procedure traverse(p: pointer);
Begin
If p<>nil
Then begin.
Process (p);
Traverse (p^.left):
Travrse (p^.right)
end
end(B)
A. 中序
B. 前序
C. 后序
D. 层次
解析:根据Process (p);Traverse (P^.left);Travrse(P^.right)语句的顺序可知其遍历的顺序是根一左一右次序,所以为先序遍历算法。
11
本文档预览:3000字符,共9019字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载