全国2013年10月高等教育自学考试
数据结构试题
课程代码:02331
一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。
1.算法的时间复杂度表征的是
A.算法的可读性 B.算法的难易程度
C.执行算法所耗费的时间 D.执行算法所耗费的存储空间
2.对需要频繁插入和删除结点的线性表,适合的存储方式是
A.顺序储存 B.链式存储
C.索引存储 D.散列存储
3.在头指针为head的循环链表中,判断指针变量P指向尾结点的条件是
A.p->next->next==head B.p->next==head
C.p->next->next==NULL D.p->next==NULL
4.迪杰斯特拉(Dijkstra)算法的功能是
A.求图中某顶点到其他顶点的最短路径 B.求图中所有顶点之间的最短路径
C.求图的最小生成树 D.求图的拓扑排序序列
5.若栈的进栈序列为1,2,3,4,5,则经过出入栈操作不可能获得的出栈序列是
A.4,5,3,2,1 B.4,3,5,1,2
C.1,2,3,4,5 D.5,4,3,2,1
6.A是7×4的二维数组,按行优先方式顺序存储,元素A[0][0]的存储地址为1 000,若每个元素占2个字节,则元素A[3][3]的存储地址为
A.1015 B.1016
C.1028 D.1030
7.深度为4的完全二叉树的结点数至少为
A.4 B.8
C.13 D.15
8.若采用邻接矩阵A存储有向图G,则结点k的入度等于A中
A.结点k对应行元素之和 B.结点k对应列元素之和
C.结点k对应行和列元素之和 D.非零元素之和
9.无向图G的邻接矩阵一定是
A.对称矩阵 B.对角矩阵
C.三角矩阵 D.单位矩阵
10.下列关于有向带权图G的叙述中,错误的是
A.图G的任何一棵生成树都不含有回路
B.图G生成树所含的边数等于顶点数减1
C.图G含有回路时无法得到拓扑序列
D.图G的最小生成树总是唯一的
11.在下列排序算法中,关键字比较次数与初始排列次序无关的是
A.冒泡排序 B.希尔排序
C.直接插入排序 D.直接选择排序
1 2.对下图进行拓扑排序,可以得到的拓扑序列是
A.a b c d e B.b a c d e
C.b c a d e D.a b d c e
13.下列线性表中,能使用二分查找的是
A.顺序存储(2,12,5,6,9,3,89,34,25) B.链式存储(2,12,5,6,9,3,89,34,25)
C.顺序存储(2,3,5,6,9,12,25,34,89) D.链式存储(2,3,5,6,9,12,25,34,89)
14.在下列查找方法中,平均查找长度与结点数量无直接关系的是
A.顺序查找 B.分块查找
C.散列查找 D.基于B树的查找
15.下列排序算法中,时间复杂度为O(nlog
2 n)的算法是
A.快速排序 B.冒泡排序
C.直接选择排序 D.直接插入排序
二、填空题(本大题共10小题,每小题2分,共20分)
1 6.数据的同一种逻辑结构,可以对应多种不同的__________。
17.若在长度为n的顺序表第i个元素之前插入一个元素,则需要向后移动的元素个数是__________。
18.顺序栈存放在S[m]中,S[0]为栈底,栈顶指针top初始值为-1,则栈满的条件是top= __________。
19.队列只能在队尾进行插入操作,在队首进行__________操作。
20.广义表A=(x,((y,z),a,b)),则函数head(head(tail(A)))的值是__________。
21.以权值分别为4,3,2,1的四个叶子结点构成的哈夫曼树,其带权路径长度WPL是_______。
22.图的遍历方法有两种,一种是深度优先遍历,另一种是__________。
23.如果排序算法是稳定的,则关键字相同的两个记录排序前后相对次序__________。
24.己知散列表表长m=11,散列函数h(key)=key%11,表中存有三个关键字15,27,39,其余地址为空,若采用线性探查法处理冲突,则关键字为60的结点保存的地址是_________。
25.己知图G的邻接表如题25图所示。
从顶点v1出发进行深度优先搜索,得到的深度优先搜索序列是__________.
三、解答题(本大题共4小题,每小题5分,共20分)
26.设Q[M]是有M个元素存储空间的循环队列,若front指向队首元素,rear指向队尾
元素的下一位置,请分别用C语言描述下列操作:
(1)将元素x入队;
(2)将队首元素出队,并保存到变量y中;
(3)计算当前队列中元素个数。
27.己知带权图G=(VE),其中V=(A,B,C,D,E),邻接矩阵如下
(1)画出对应的图G
(2)画出图G的最小生成树
28.已知一组待排记录的关键字序列为(15,11,17,59,14,35,13,17,24,84),请给出对应的小根堆序列。
29.已知二叉树如题29图,请画出该二叉树的前序线索。
四、算法阅读题(本大题共4小题,每小题5分,共20分)
30.阅读下列函数并回答问题
typedef struct node{
DataType data;
struct node *next;
}LinkNode;
Typedef LinkNode*Linklist;
void DeleX(Linklist head,DataType x)
{
LinkNode*p,*q,*s;
p=head;q=p-->next;
while(q!=NULL)
if(q->data==x){
s=q;q=q->next;
free(s);p->next=q;
}
else{
p=q;q=q->next;
}
}
(1)执行该函数后,单链表head中data值为x的结点数是多少?
(2)该函数的功能是什么?
31.阅读下列函数并回答问题
typedef struct node{
DataType data;
struct node *lchild, *rchild;
}BinTNode;
typedef B inTNode *BinTree;
void Inorder(BinTree bt)
{
if(bt!=NULL){
Inorder(bt->lchild);
printf(〃%c〃,bt->data);
Inorder(bt->rchild);
}
}
(1)给出对如题3 1图所示的二叉树执行函数Inorder后得到的输出序列。
(2)该函数的功能是什么?
32.下列函数实现直接插入排序,请填写适当内容,使其功能完整。
void f32(int r[],int N)
{
int i,j;
for(i=2;
(1) ;
(2) )
{ r[0]-r[i];
j=i-1;
while(
(3) )
{ r[j+1]_=r[j];
j=j-1;
}
r[j+l]= r[0];
}
}
33.函数BinSearch实现二分查找,请回答下列问题。
(1)在空白处填写适当内容,使函数功能完整。
(2)查找成功时函数的返回值是什么?
(3)查找失败时函数的返回值是什么?
int BinSearch(SeqList R,KeyType k,int n)
{ int low=0,mid,high=n-1;
while(10w<=high){
mid=
(1) ;
if(R[mid].key==k)
return mid;
if(R[mid].key>k)
high=mid-1;
else
low=mid+l;
}
return-1;
}
五、算法设计题(本题10分)
34.已知:
typedef struct node{
int data;
struct node *next;
} LinkNode;
typedef LinkNode *LinkList;
请编写原型为int Listisequal(LinkList A,LinkList B)的函数,指针A、B分别指向两个带头结点的单链表。函数功能是:若单链表A、B中全部对应结点的data值相等,则返回1,否则返回0。
自考试题下载地址: