数据结构复习资料.docx
《数据结构复习资料.docx》由会员分享,可在线阅读,更多相关《数据结构复习资料.docx(8页珍藏版)》请在冰豆网上搜索。
数据结构复习资料
1. 快速排序在最坏情况下的时间复杂度为(D)。
A.O(log2n)B.O(nlog2n)C.O(n)D.O(n2)
2.设一棵二叉树的深度为k,则该二叉树中最多有(D)个结点。
A.2k-1B.2kC.2k-1D.2k-1
3.二叉树中第i(i≥1)层上的结点数最多有(C)个。
A.2iB.2iC.2i-1D.2i-1
4.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为(A)。
A.p->next=p->next->nextB.p=p->next
C.p=p->next->nextD.p->next=p
5.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是(C)。
A.6B.4C.3D.2
6.设有以下四种排序方法,则(B)的空间复杂度最大。
A.冒泡排序B.快速排C.堆排序D.希尔排序
7.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为(B)。
A.3B.4C.5D.1
8.根据二叉树的定义可知二叉树共有(B)种不同的形态。
A.4B.5C.6D.7
9.对一个算法的评价,不包括如下(A)方面的内容。
A.并行性B.健壮性和可读性C.正确性D.时空复杂度
10.在二叉排序树中插入一个结点的时间复杂度为(C)。
A.O
(1)B.O(n)C.O(log2n)D.O(n2)
11.队列是一种(B)的线性表。
A.先进后出B.先进先出C.只能插入D.只能删除
12.采用开放定址法处理散列表的冲突时,其平均查找长度(C)。
A.低于链接法处理冲突B.与链接法处理冲突相同
C.高于链接法处理冲突D.高于二分查找
13.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过(A)。
A.log2n+1B.log2n-1C.log2nD.log2(n+1)
14.从数据结构上讲,字符串是比较特殊的(C)。
A.堆栈B.队列C.线性表D.二叉树
15.函数substring(“DATASTRUCTURE”,5,9)的返回值为(A)。
A.STRUCTUREB.DATA
C.ASTRUCTURD.DATASTRUCTURE
16.队列是一种(B)的线性表。
A.先进后出B.先进先出C.只能插入D.只能删除
17.对一个算法的评价,不包括如下(A)方面的内容。
A.并行性B.健壮性和可读性C.正确性D.时空复杂度
18.从二叉搜索树中查找一个元素时,其时间复杂度大致为(C)。
A.O(n)B.O
(1)C.O(log2n)D.O(n2)
19.采用开放定址法处理散列表的冲突时,其平均查找长度(C)。
A.低于链接法处理冲突B.与链接法处理冲突相同
C.高于链接法处理冲突D.高于二分查找
20.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过(A)。
A.log2n+1B.log2n-1C.log2nD.log2(n+1)
21.下列四种排序中(D)的空间复杂度最大。
A.堆B.冒泡排序C.希尔排序D.快速排序
22.设某二叉树中度数为0的结点数为N0,度数为1的结点数为Nl,度数为2的结点数为N2,则下列等式成立的是(B)。
A.N0=N1+1B.N0=N2+1C.N0=Nl+N2D.N0=2N1+l
23.时间复杂度不受数据初始状态影响而恒为O(nlog2n)的是(B)。
A.冒泡排序B.堆排序C.希尔排序D.快速排序
1.字符串必须以字符’\0’表示串值的终结。
√
2.哈夫曼树中没有度数为1的结点。
√
3.冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。
√
4.设初始记录关键字基本有序,则快速排序算法的时间复杂度为O(nlog2n)。
5.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。
√
6.如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。
√
7.有向图的邻接表和逆邻接表中表结点的个数不一定相等。
8.如果某个有向图的邻接表中第i条单链表为空,则第i个顶点的出度为零。
√
9.线性表中的所有元素都有一个前驱元素和后继元素。
10.带权无向图的最小生成树是唯一的。
11.线性表中的所有元素都有一个前驱元素和后继元素。
12. 非空的双向循环链表中任何结点的前驱指针均不为空。
√
13.图的邻接矩阵法:
n个顶点需要n*n个单元存储边(弧);空间效率为O(n2)。
√
14.稀疏矩阵的压缩存储可以用一个三元组表来表示稀疏矩阵中的非0元素。
15.入栈操作和入队列操作在链式存储结构上实现时需要考虑栈溢出的情况。
16.中序遍历一棵二叉排序树可以得到一个有序的序列。
√
17.顺序表查找指的是在顺序存储结构上进行查找。
1.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X需要执行的语句序列:
s->next=p->next;p->next=s;;。
2.具有n个顶点,__n(n-1)/2___条边的图,称为完全无向图;具有n个顶点,____n(n-1)____条弧的有向图,称为完全有向图。
3.设输入序列为1、2、3,则经过栈的作用后可以得到____5____种不同的输出序列。
4.设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条件是_p->lchild==0&&p->rchild==0___。
5.设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条件是_p->lchild==0&&p->rchild==0________。
6.设一组初始记录关键字序列为(20,18,22,16,30,19),则以20为中轴的一趟快速排序结果为__19,18,16,20,30,22____________________________。
7.for(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的时间复杂度为_____O(n)____。
8.设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的双亲结点编号为____i/2________,右孩子结点的编号为____2i+1_______。
9.设某无向图中顶点数和边数分别为n和e,所有顶点的度数之和为d,则e=_2d______。
10.设有向图G的二元组形式表示为G=(V,E),V={1,2,3,4,5},E={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},则该图的一种拓扑排序序列为___1,3,2,4,5_____________________。
11.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较___7_____次就可以断定数据元素X是否在查找表中。
12.设一组初始记录关键字序列为(49,38,65,97,76,13,27,50),则以d=4为增量的一趟希尔排序结束后的结果为________49,13,27,50,76,38,65,97______________。
13.设某棵二叉树的中序遍历序列为ABCD,后序遍历序列为BADC,则其前序遍历序列为___BADC_______。
14.完全二叉树中第5层上最少有_____1_____个结点,最多有___16______个结点。
15.设有一组初始记录关键字序列为(50,16,23,68,94,70,73),则将它们调整成初始堆只需把16与_____50______相互交换即可。
16.子串的定位运算通常称为串的_串匹配___,是串处理中最重要的运算之一
若n为主串长度,m为子串长度,则串的匹配算法时间复杂度为_m*n___。
17在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为_O(log2n)_______,整个堆排序过程的时间复杂度为_O(nlog2n)_______。
18.具有n个顶点,____n(n-1)/2_________条边的图,称为完全无向图;具有n个顶点,____n(n-1)____________条弧的有向图,称为完全有向图。
19一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,查找关键字62时的比较次数为___2____,查找成功时的平均查找长度_ASL=91*1+2*2+3*4+4*2)=25/9___。
20.设有一组初始记录关键字序列为(50,16,23,68,94,70,73),则将它们调整成初始堆只需把16与____50_______相互交换即可。
1.阅读下面的算法
LinkListmynote(LinkListL){//L是不带头结点的单链表的头指针
if(L&&L->next){
q=L;L=L->next;p=L;
S1:
while(p->next)p=p->next;
p->next=q;q->next=NULL;}
returnL;}
请回答下列问题:
1)说明语句S1的功能;
答:
查询链表的尾结点
2)设链表表示的线性表为(a1,a2,…,an),写出算法执行后的返回值所表示的线性表________(a2,a3,……,an,a1)_______________________。
2. 阅读下面算法:
voidABC(BTNode*BT){
if(BT){
ABC(BT->left);
cout<data<<’’;
ABC(BT->right);
}
}
该算法的功能是:
____递归地后序遍历链式存储的二叉树。
____________。
3.阅读下面算法
voidconversion(){
Stacks;intn;SElemTypee;initstack(s);
printf("Pleaseinputnumber:
");
scanf(“%d”,&n);
while(n){
push(s,n%6);n=n/6;
}
while(!
stackempty(s)){
pop(s,e);printf(“%d”,e);
}}
1)指出该算法的功能。
答:
十进制转六进制
2)若输入数据为10,则输出结果为____14_____________。
4.阅读下列函数
intarrange(inta[],int1,inth,intx){
//1和h分别为数据区的下界和上界
inti,j,t;
i=1;j=h;
while(iwhile(i=x)j--;
while(i=x)i++;
if(it=a[j];a[j]=a[i];a[i]=t;
}}