数据结构合卷.docx
《数据结构合卷.docx》由会员分享,可在线阅读,更多相关《数据结构合卷.docx(19页珍藏版)》请在冰豆网上搜索。
数据结构合卷
一、判断题(正确在括号内填√,错误在括号内填×,每题1分,共15分)
()1.线性表采用顺序存储,必须占用一片连续的存储单元。
()2.栈和队列的共同点是只允许在端点处插入和删除元。
()3.数据结构包括数据间的逻辑结构、数据的存储方式和数据的运算三个方面。
。
()4.一棵哈夫曼树中不存在度为1的结点。
()5.散列法是一种对关键字进行运算的查找方法和存储方法。
()6.一个队列的入队序列是1,2,3,4,则队列的出队序列是4,3,2,1。
()7.数据元素是数据的最小单位。
()8.算法的五个特性为:
有穷性、输入、输出、完成性和确定性
()9.线性表采用链式存储结构时,其地址必须是连续的。
()10.二叉树中任何一个结点的度都是2。
()11.直接插入排序是稳定的排序。
()12.n个顶点的无向图最多有n*(n-1)条边。
()13.一个有向图的邻接矩阵一定是一个非对称矩阵。
()14.用二分查找法对一个顺序表进行查找,这个顺序表可以是按各键值排好序的,也可以是没有按键值排好序的。
()15.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为2h-1。
二、单项选择(在备选答案中选出一个正确答案,并将正确答案的序号填在题干后的括号内。
每题1分,共15分)
1.下列算法的时间复杂度为()。
x=n;//n>1
While(x>=(y+1)*(y+1))Y++;
A.O(n1/2)B.O(n2)C.O(log2n)D.O(n)
2.n个顶点的无向连通图的最小生成树包含()条边。
A.n B.n-1 C.n/2 D.n+1。
3.深度为6(根的层次为1)的二叉树最多有()个结点。
A.64B.32C.63D.31
4.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。
A.110B.120C.100D.108
5.在一个单链表中,若删除p所指结点的后续结点,则执行()
A.p->next=p->next->next;B.p=p->next;
C.p->next=p->next;D.p=p->next->next;
6.稀疏矩阵一般的压缩存储方法有两种,即()。
A.二维数组和三维数组B.三元组和十字链表C.散列和十字链表D.三元组和散列
7.按照二叉树的定义,具有3个结点的二叉树有()种。
A.3B.4C.5D.6
8.具有4个顶点的无向完全图有()条边。
A.6B.20C.16D.12
9.经过以下栈运算后,x的值是。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x);
A.aB.bC.1D.0
10.在一个长度为N的顺序表中,删除第i个元素,需向前移动元素的个数()。
A.N-i-1B.N-iC.N-i+1D.i
11.最大容量为n的循环队列,队尾指针是rear,队头是front,则队满的条件是()。
A.rear+1=frontB.rear=front
C.(rear+1)MODn=frontD.(rear-l)MODn=front
12.具有6个顶点的无向图至少应有()条边才能确保是一个连通图。
A.6B.7C.8D.5
13.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为()
A.(n+1)/2 B.n/2 C.n D.(n-1)/2
14.无向图的邻接矩阵是一个()。
A.零矩阵B.对称矩阵C.上三角矩阵D.对角矩阵
15.有一个有序表{1,4,6,10,18,35,42,53,67,71,78,84,92,99},当用二分查找法查找键值为4的结点时,经()比较后查找成功。
A.2B.4C.3D.12
三、简答与应用题(第1题5分,2—6每题7分,共40分)
1.画出5种不同型态的二叉树。
2.对于给定的5个实数W={8,5,13,2,7},试构造Huffman树,并求出该树的最小带权路径长度WPL。
3.对下面的数据序列,写出采用冒泡排序算法排序的每一趟排序的结果。
(50,72,31,80,60,20,96,14)
4.设散列表长度为11,散列函数H(K)=K%11,采用线性探测法处理冲突,若输入序列为(100,90,120,60,78,35,42,31,15,88),要求构造出散列表。
0
1
2
3
4
5
6
7
8
9
10
5.已知一棵二叉树的顺序存储结构如下图所示。
(1)画出此棵二叉树。
(3分)
(2)写出该二叉树的中根遍历和后根遍历的序列。
(4分)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A
B
F
C
G
J
D
E
H
I
K
6.已知某带权无向图,如下图所示。
(1)请用邻接矩阵法表示该图。
(3分)
(2)从顶点0出发,采用Prim算法画示最小生成树的过程。
(4分)
得分
评卷人
四、算法设计题(每题10分,共30分)
1.写出二叉树的前序遍历递归算法。
2.在带头结点单链表head中,若p结点存在,试编写删除某一结点p的算法。
3.编写直接插入排序算法。
一、单项选择(在备选答案中选出一个正确答案,并将其号码填在题干后的横线上。
每题2分,共20分)
1.在数据结构中,与所使用的计算机无关的是。
A.存储结构
B.物理结构
C.物理和存储结构
D.逻辑结构
2.线性表采用链式存储结构时,其地址是。
A.必须是连续的
B.一定是不连续的
C.部分地址必须是连续的
D.连续与否均可以
3.在下列链表中不能从当前结点出发访问到其余各结点的是。
A.单链表
B.单循环链表
C.双向链表
D.双向循环链表
4.设一个栈的进栈序列是a,b,c,d,进栈的过程中可以出栈,不可能的出栈序列是A。
A.d,c,b,a
B.c,d,b,a
C.d,c,a,b
D.a,b,c,d
5.设循环队列中数组的下标是0~N-1,其头尾指针分别为f和r,则其元素个数为。
A.r–f
B.r-f-1
C.(r-f)%N+1
D.(r-f+N)%N
6.串是。
A.不少于一个字母的序列
B.任意个字母的序列
C.不少于一个字符的序列
D.有限个字符的序列
7.对稀疏矩阵采用压缩存储,其缺点之一是。
A.无法判断矩阵有多少行和多少列
B.无法根据行列号查找某个矩阵元素
C.无法根据行列号计算矩阵元素的存储地址
D.使矩阵元素之间的逻辑关系更加复杂
8.以下说法错误的是。
A.一般在哈夫曼树中,权值越大的叶子离根结点越近
B.哈夫曼树中没有度数为1的分支结点
C.若初始森林中共有n棵二叉树,最终求得的哈夫曼树中共有2n-1个结点
D.若初始森林中共有n棵二叉树,进行2n-1次合并后才能剩下最终的哈夫曼树
9.任何一个无向连通图最小生成树。
A.只有一棵
B.有一棵或多棵
C.一定有多棵
D.可能不存在
10.只有在顺序存储结构上才能实现的查找方法是B法。
A.顺序查找
B.二分查找
C.树型查找
D.哈希查找
得分
评卷人
二、简答题(每题5分,共15分)
1.简述数据结构中算法的五种特性?
2.简述栈和队列的特点?
3.简述线性顺序存储和链式存储的区别?
+++++++++++++++++++++++++++++++++++++++++++++++++++
三、应用题(第1、3、4题8分,第2题5分,第5题6分,共35分)
1.设散列函数为h(key)=key%11,散列地址空间为0~10,
对关键字序列27、13、55、32、18、49、24、38、43,
利用线性探测法解决冲突,构造散列表。
2.已知某二叉树中序遍历的结果是ABC,试画出其可能的二叉树五种形态。
3.已知某带权无向图,如下图所示。
(1)请用邻接矩阵法表示该图。
(4分)
(2)从顶点0出发,采用Prim算法画示最小生成树的过程。
(4分)
4.某电文中的8个字符分别是a,b,c,d,e,f,g,h,出现的频率分别为6,15,7,9,16,27,8,12作为权值,建立哈夫曼树(5分),并求出每个字符的哈夫曼编码(3分)。
5.已知排序码值序列{17,18,60,40,7,32,73,65,85},排序后成后非递减序列,请写出冒泡排序每一趟的排序结果。
四、算法设计题(每题10分,共30分)
1.编写算法求求二叉树的深度。
2.编写直接插入排序算法。
3.设计一个算法,产生一个有5个结点的单链表,这些结点的数据域值分别是A,B,C,D,E,且表头指针是head。
一、判断题(10分)
()1.图G由两个集合V(G)和E(G)所组成,其中顶点集V(G)可以为空集,而边集E(G)不能为空。
()2.链表主要缺点是不能随机访问。
()3.栈是一种后进先出的线性表。
()4.数据结构的包括数据的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。
()5.线性表简称为“顺序表”。
()6.从循环单链表的任一结点出发,可以找到表中所有结点。
()7.深度为h的二叉树最多有2h-1个结点。
()8.散列法是一种对关键字进行运算的查找方法和存储方法。
()9.一个结点包含子树的数目,称为该结点的度。
()10.快速排序在任何情况下,都是速度最快的一种排序方法。
二、单选择题(10分)
1.下面的程序段的时间复杂度为.
inti=1;
while(i<=M)
{
for(j=1;j<=N;j++)
A[I][J]=I*J;
i++;
}
A)O(M*M)B)O(M*N)C)O(N*N)D)O(M+N)
2.对于右图二叉树,其后序序列为。
A)ABDECFGB)DBEAFCG
C)DEBFGCAD)GFCEBDA
3.如进栈序列1、2、3、4、进栈过程中可以出栈,则不可能的出栈序列为。
A)3,4,2,1B)2,4,3,1
C)1,4,2,3D)3,2,1,4
4.在一个长度为N的顺序表中,向第I个元素前插入一个新元素时,需向后移动个元素。
A)N-IB)N-I+1
C)N-I-1D)I
5.在一个单链表中,已知Q结点是P结点的前驱接点,若删除P结点,则执行。
A)Q—〉NEXT=P—〉NEXT;free(P);
B)P—〉NEXT=Q—〉NEXT;
C)Q—〉NEXT=P;free(P);
D)P—〉NEXT=Q;free(P);
三、简答题(30)
1.简述线性表的顺序存储结构的优点和缺点。
2.设散列表长度为11,散列函数H(K)=K%11,采用线性探测法处理冲突,若输入序列为(100,90,120,60,78,35,42,31,15),要求构造出散列表。
0
1
2
3
4
5
6
7
8
9
10
3.画出5种不同型态的二叉树。
4.画出下列二叉树所对应的森林。
5.对下面的数据序列,写出采用直接选择排序算法排序的每一趟排序的结果。
(50,72,31,80,60,20,96,14)
6.简述队列的特点。
四、应用题(20)
1.对于给定的5个实数W={8,5,13,2,7},试构造Huffman树,并求出该树的最小带权路径长度WPL。
2.给定无向网如下,写出它的邻接矩阵,并用prim算法从V0开始给出该网的最小生成树。
五、算法设计题(30)
1.在单链表中某一结点p前插入元素x。
2.写出二叉树的先序遍历递归算法。
3.写出二分查找的算法。
一、单项选择
1.在数据结构中,与所使用的计算机无关的是。
A.存储结构B.物理结构
C.物理和存储结构D.逻辑结构
2.线性表采用链式存储结构时,其地址是。
A.必须是连续的B.一定是不连续的
C.部分地址必须是连续的D.连续与否均可以
3.在下列链表中不能从当前结点出发访问到其余各结点的是。
A.单链表B.单循环链表
C.双向链表D.双向循环链表
4.设一个栈的进栈序列是a,b,c,d,进栈的过程中可以出栈,不可能的出栈序列是A。
A.d,c,b,aB.c,d,b,a
C.d,c,a,bD.a,b,c,d
5.设循环队列中数组的下标是0~N-1,其头尾指针分别为f和r,则其元素个数为。
A.r–fB.r-f-1C.(r-f)%N+1D.(r-f+N)%N
6.串是。
A.不少于一个字母的序列B.任意个字母的序列
C.不少于一个字符的序列D.有限个字符的序列
7.对稀疏矩阵采用压缩存储,其缺点之一是。
A.无法判断矩阵有多少行和多少列
B.无法根据行列号查找某个矩阵元素
C.无法根据行列号计算矩阵元素的存储地址
D.使矩阵元素之间的逻辑关系更加复杂
8.以下说法错误的是。
A.一般在哈夫曼树中,权值越大的叶子离根结点越近
B.哈夫曼树中没有度数为1的分支结点
C.若初始森林中共有n棵二叉树,最终求得的哈夫曼树中共有2n-1个结点
D.若初始森林中共有n棵二叉树,进行2n-1次合并后才能剩下最终的哈夫曼树
9.任何一个无向连通图最小生成树。
A.只有一棵B.有一棵或多棵
C.一定有多棵D.可能不存在
10.只有在顺序存储结构上才能实现的查找方法是法。
A.顺序查找B.二分查找C.树型查找D.哈希查找
1.已知某数据的逻辑结构S=(D,R),其中D={a,b,c,d,e,f},R={〈a,b〉,〈b,c〉,〈c,d〉,〈d,e〉,〈e,f〉},请指出它们属于下面的哪种结构:
A.集合B.线性结构C.树形结构D.图形结构
2.若线性表最常用的运算是存取第i个元素及其前趋的值,则采用D存储方式节省时间。
A.单链表B.双链表C.单循环链表D.顺序表
3.单链表中,若*p结点不是末尾结点,在其后插入*s的操作是。
A.s->next=p;p->next=s;
B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;
D.p->next=s;s->next=p;
4.经过以下栈运算后,x的值是。
InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s,x);A.aB.bC.1D.0
5.最适合用作链式队列的链表是A。
A.带队首指针和队尾指针的循环单链表
B.带队首指针和队尾指针的非循环单链表
C.只带队首指针的非循环单链表
D.只带队首指针的循环单链表
6.串是一种特殊的线性表,其特殊性体现在。
A.可以顺序存储B.数据元素是一个字符
C.可以链接存储D.数据元素可以是多个字符
7.对称矩阵压缩存储是为了。
A.方便运算B.节省空间
C.提高运算速度D.以上都不是
8.高度为h的二叉树上至多有_____个结点(h≥1)。
A.2h-1B.2h-1C.2h+1D.2h
9.若图G(V,E)是具有n个顶点和e条边的有向图,若采用邻接表作为存储结构,则构建此邻接表的时间复杂度是C。
A.O(n)B.O(n+2e)无向图
C.O(n+e)D.O(n2)
10.在采用线性探测法处理冲突所构成的闭散列表上进行查找,可能要探测多个位置,在查找成功的情况下,所探测的这些位置上的键值。
A.一定都是同义词B.一定都不是同义词
C.都相同D.不一定都是同义词
二、简答题
1.简述数据结构中算法的五种特性?
2.简述栈和队列的特点?
3.简述线性顺序存储和链式存储的区别?
4.在数据结构中,我们怎样对算法进行评价的?
5.试述顺序查找、二分查找和分块查找对被查找的表中的元素有什么要求?
三、应用题
1.设散列函数为h(key)=key%11,散列地址空间为0~10,
对关键字序列27、13、55、32、18、49、24、38、43,
利用线性探测法解决冲突,构造散列表。
2.已知某二叉树中序遍历的结果是ABC,试画出其可能的二叉树五种形态。
3.已知某带权无向图,如下图所示。
(1)请用邻接矩阵法表示该图。
(2)从顶点0出发,采用Prim算法画示最小生成树的过程。
4.某电文中的8个字符分别是a,b,c,d,e,f,g,h,出现的频率分别为6,15,7,9,16,27,8,12作为权值,建立哈夫曼树(5分),并求出每个字符的哈夫曼编码。
5.已知排序码值序列{17,18,60,40,7,32,73,65,85},排序后成后非递减序列,请写出冒泡排序每一趟的排序结果。
6.已知一棵二叉树的顺序存储结构如下图所示。
(1)画出此棵二叉树。
(2)写出该二叉树的中根遍历和后根遍历的序列。
A
B
F
C
G
J
D
E
H
I
K
7.设无向图有6个结点,依次输入的9条边为(1,2),(1,3),(1,5),(1,6),(2,3),(3,4),(3,5),(4,5),(5,6)。
(1)画出无向图G
(2)画出G的邻接表
8.以关键字序列{10,2,13,15,12,14}为例,用堆排序方法进行排序。
写出每趟排序结束时,关键字序列的状态。
(请按小根堆进行排序)
9.将整数序列{4,5,7,2,1,3,6}中的数依次插入一棵空的二叉排序树中。
(1)画出相应的二叉排序树。
(6分)
(2)求等概率情况下查找成功的平均查找长度。
四、算法设计题
1.编写算法求求二叉树的深度。
intdepth(bitree*t)
{intlh,rh;
if(t==NULL)return0;
else
{
lh=depth(t->lchild);
rh=depth(t->lchild)
return((lh>rh?
lh:
rh)+1);
}
}
2.编写直接插入排序算法。
3.设计一个算法,产生一个有5个结点的单链表,这些结点的数据域值分别是A,B,C,D,E,且表头指针是head。
Typedefstructnode
{
chardata;
structnode*next;
}node;
node*create()
{
node*head,*q,*p;
Chari;
head=(node*)malloc(sizeof(node));
q=head;
for(i=’A’;i<=’E’;i++)
{
P=(node*)malloc(sizeof(node));
P->data=i;q->next=p;q=p;
}
q->next=null;
return(head);
}
4.编写算法求二叉树中叶子结点的个数。
typedefstructnode
{
datatypedata;
structnode*lchild;
structnode*rchild;
}BTNode;
intfun1(BTNode*b)
{intnum1,num2;
if(b==NULL)return0;
elseif(b->lchild==NULL&&b->rchild==NULL)
return1;
else
{num1=fun1(b->lchild);
num2=fun1(b->rchild);
return(num1+num2);
}
}
5.编写二分查找算法。
6.设计一个算法,将一个带头结点的数据域依次为a1,a2,……,an(n≥3)的单链表的的所有结点逆置(即第一个结点的数据域变为an,最后一个结点的数据域变为a1),生成一个新的单链表。
typedefstructLnode
{ElemTypedata;
StructLnode*next;
}LinkList;
voidReverse(LinkList*head)
{LinkList*p
p=head->next;
head->next=null;//采用前插法生成新的单链表
while(p!
=null)//扫描所有结点
{q=p->next;//q指向*p结点的下一个结点
p->next=head->next;//总是将*p作为第一个数据结点
head->next=p;
p=q;
}
}