SJTU 《算法设计与分析》备考题

621594367878_.pic_hd.jpg

单选题

1、除根结点外,树上每个结点( )。
a. 可有一个孩子、任意多个双亲
b. 可有任意多个孩子、一个双亲
c. 只有一个孩子、一个双亲
d. 可有任意多个孩子、任意多个双亲
2、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为( )。
a. (n+1)/2
b. n/2
c. (n-1)/2
d. n
3、采用二分查找方法查找长度为n的线性表时,每个元素的平均查找长度为( )。
a. O(log2n)
b. O(n2)
c. O(n)
d. O(nlog2n)
4、设顺序线性表中有n个数据元素,则删除表中第i个元素需向前移动( )个元素。
a. n-1-i
b. n-i
c. i
d. n+1-i
5、设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( )。
a. (R-F+M)%M
b. F-R
c. (F-R+M)%M
d. R-F
6、设输入序列是1、2、3、…、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是( )。
a. n-1-i
b. 不能确定
c. n-i
d. n+1-i
7、设输入序列为1、2、3、4、5、6,则通过栈的作用后可以得到的输出序列为( )。
a. 5,3,4,6,1,2
b. 1,5,4,6,2,3
c. 3,1,2,5,4,6
d. 3,2,5,6,4,1
8、设用链表作为栈的存储结构,则退栈操作( )。
a. 必须判别栈是否为满
b. 必须判别栈是否为空
c. 对栈不作任何判别
d. 必须判别栈元素的类型
9、设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为( )。
a. 第i列0元素的个数之和
b. 第i行0元素的个数之和
c. 第i列非0元素的个数之和
d. 第i行非0元素的个数之和
10、设某链表中最常用的操作是在链表的尾部插入或删除元素,则选用下列( )存储方式最节省运算时间。
a. 双向链表
b. 双向循环链表
c. 单向循环链表
d. 单向链表
11、设某棵二叉树的高度为10,则该二叉树上叶子结点最多有( )。
a. 1024
b. 256
c. 20
d. 512
12、设某棵二叉树的中序遍历序列为ABCD,先序遍历序列为CABD,则后序遍历该二叉树得到序列为( )。
a. CDAB
b. BADC
c. CBDA
d. BCDA
13、设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。
a. 9
b. 11
c. 12
d. 10
14、设某棵二叉树中只有度数为0和度数为2的结点,且度数为0的结点数为n,则这棵二叉树中共有( )个结点。
a. n+1
b. 2n
c. 2n+1
d. 2n-1
15、设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有( )条有向边。
a. n-1
b. m
c. n
d. m-1
16、设某无向图有n个顶点,则该无向图的邻接表中有( )个表头结点。
a. 2n-1
b. n
c. n/2
d. 2n
17、设某无向图中有n个顶点e条边,则该无向图中所有顶点的度之和为( )。
a. 2e
b. n
c. e
d. 2n
18、设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为( )。
a. O(n\e)
b. O(n+e)
c. O(n2)
d. O(n3)
19、设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是( )。
a. 图结构
b. 物理结构
c. 线性结构
d. 树型结构
20、设某强连通图中有n个顶点,则该强连通图中至少有( )条边。
a. n(n-1)
b. n
c. n+1
d. n(n+1)
21、设某完全无向图中有n个顶点,则该完全无向图中有( )条边。
a. n
b. n-1
c. n(n-1)
d. n(n-1)/2
22、设某哈夫曼树中有199个结点,则该哈夫曼树中有( )个叶子结点。
a. 99
b. 101
c. 100
d. 102
23、设某二叉树中度数为0的结点数为N0,度数为1的结点数为N1,度数为2的结点数为N2,则下列等式成立的是( )。
a. N0=N1+N2
b. N0=N2+1
c. N0=2N1+1
d. N0=N1+1
24、设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。
a. 7
b. 6
c. 8
d. 5
25、设无向图G中有n个顶点,则该无向图的最小生成树上有( )条边。
a. 2n-1
b. n
c. n-1
d. 2n
26、设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为( )。
a. i/2
b. 2i+1
c. 2i
d. 2i-1
27、设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作为( )。
a. top=top+1;
b. top->next=top;
c. top=top->next;
d. top=top-1;
28、设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为( )。
a. p->next=s; s->prior=p; p->next->prior=s; s->next=p->next;
b. s->prior=p; s->next=p->next; p->next=s; p->next->prior=s;
c. p->next=s; p->next->prior=s; s->prior=p; s->next=p->next;
d. s->prior=p;s->next=p->next;p->next->prior=s; p->next=s;
29、设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为( )。
a. q=p->next;q->data=p->data;p->next=q->next;free(q);
b. q=p->next;p->data=q->data;free(q);
c. q=p->next;p->next=q->next;free(q);
d. q=p->next;p->data=q->data;p->next=q->next;free(q);
30、设指针变量front表示链式队列的队头指针,指针变量rear表示链式队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为( )。
a. front->next=s;front=s;
b. rear->next=s;rear=s;
c. s->next=front;front=s;
d. s->next=rear;rear=s;
31、设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B插入结点X的操作序列为( )。
a. p->next=s->next;s->next=p;
b. p->next=s;s->next=q;
c. s->next=p->next;p->next=-s;
d. q->next=s; s->next=p;
32、设带有头结点的单循环链表的头指针为head,则其判空条件是( )。
a. head->next==head
b. head==NULL
c. head->next==NULL
d. head!= NULL
33、设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指针域。
a. 4m
b. 2m-1
c. 2m+1
d. 2m
34、设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是( )。
a. 任一结点无左孩子
b. 任一结点无右孩子
c. 高度等于其结点数
d. 空或只有一个结点
35、设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为( )。
a. O(1)
b. O(n)
c. O(n2)
d. O(nlog2n)
36、设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长度之和为( )。
a. 40
b. 45
c. 30
d. 20
37、设一棵完全二叉树中有65个结点,则该完全二叉树的深度为( )。
a. 7
b. 6
c. 5
d. 8
38、设一条单链表的头指针为head,且该链表没有头结点,则其判空条件是( )。
a. head==NULL
b. head->next==head
c. head->next==NULL
d. head!=NULL
39、设F是由T1、T2和T3三棵树组成的森林,与F对应的二叉树为B,T1、T2和T3的结点数分别为N1、N2和N3,则二叉树B的根结点的左子树的结点数为( )。
a. N2+N3
b. N1-1
c. N1+N3
d. N2-1
40、若采用邻接表存储结构,则图的深度优先搜索类似于二叉树的(  )
a. 层次遍历
b. 先根遍历
c. 中根遍历
d. 后根遍历
41、若采用邻接表存储结构,则图的广度优先搜索类似于二叉树的(  )
a. 先根遍历
b. 后根遍历
c. 层次遍历
d. 中根遍历
42、若线性表最常用的操作是存取第i个元素及其前驱的值,则采用( )存储方式最节省时间。
a. 双向链表
b. 顺序表
c. 单链表
d. 单循环链表
43、若一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的第一趟结果为( )。
a. 40,38,46,56,79,84
b. 40,38,46,84,56,79
c. 38,40,46,56,79,84
d. 40,38,46,79,56,84
44、若一个图的边集为 {(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)} ,则从顶点 A 开始对该图进行深度优先搜索,得到的顶点序列可能为( )。
a. A,B,C,F,D,E
b. A,C,F,D,E,B
c. A,B,D,F,E,C
d. A,B,D,C,F,E
45、若一个图的边集为 {(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)} ,则从顶点 A 开始对该图进行广度优先搜索,得到的顶点序列可能为( )。
a. A,B,C,F,D,E
b. A,B,C,D,E,F
c. A,B,D,C,E,F
d. A,C,B,F,D,E
46、线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。
a. 连续或不连续都可以
b. 必须是连续的
c. 部分地址必须是连续的
d. 一定是不连续的
47、用链接方式存储的队列,在进行插入运算时( )。
a. 仅修改尾指针
b. 头、尾指针都要修改
c. 仅修改头指针
d. 头、尾指针都不要修改
48、用邻接表存储图所用的空间大小( )。
a. 只与图的边数有关
b. 与图的顶点数和边数都有关
c. 只与图的顶点数有关
d. 与边数的平方有关
49、树的后根遍历序列等同于该树对应的二叉树的( )。
a. 先序序列
b. 中序序列
c. 后序序列
d. 层次序列
50、树型结构最适合用来表示( )。
a. 无序数据元素
b. 有序数据元素
c. 元素之间无联系的数据
d. 元素之间具有分支层次关系的数据
51、栈。和队列的共同点是( )。
a. 只允许在端点处插入和删除元素
b. 都是先进后出
c. 都是先进先出
d. 没有共同点
52、数据结构是研究数据的( )以及它们之间的相互关系。
a. 理想结构,抽象结构
b. 物理结构,逻辑结构
c. 理想结构,物理结构
d. 抽象结构,逻辑结构
53、数据的最小单位是( )。
a. 数据元素
b. 数据项
c. 数据类型
d. 数据变量
54、已知一个有向图的边集为 {<a,b>,<a,c>,<a,d>,<b,d>,<b,e>,<d,e>} ,则由该图产生的一种可能的拓扑序列为( )。
a. a,b,c,d,e
b. a,c,b,e,d
c. a,b,d,e,b
d. a,c,d,b,e
55、对线性表进行二分查找时,要求线性表必须( )。
a. 以链接方式存储
b. 以链接方式存储,且结点按关键字有序排序
c. 以顺序方式存储,且结点按关键字有序排序
d. 以顺序方式存储
56、在长度为n的顺序存储的线性表中插入第i个元素(1≤i≤n)需向后移动( )个元素。
a. n-i
b. i
c. n-1-i
d. n-i+1
57、在用邻接表表示图时,对图进行深度优先搜索遍历的算法的时间复杂度为( )。
a. O(n2)
b. O(n+e)
c. O(n3)
d. O(n)
58、在有向图的邻接表存储结构中,顶点v在链表中出现的次数是( )。
a. 顶点v的度
b. 依附于顶点v的边数
c. 顶点v的入度
d. 顶点v的出度
59、在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是( )。
a. G中有一条从Vi到Vj的路径
b. G中有弧
c. G中没有弧
d. G中有一条从Vj到Vi的路径
60、在下列存储形式中,哪一个不是树的存储形式?( )
a. 孩子链表表示法
b. 顺序存储表示法
c. 孩子兄弟表示法
d. 双亲表示法
61、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行( )。
a. q->next = s;s->next = p;
b. s->next = p->next;p->next = s;
c. p->next = s->next;s->next = p;
d. p->next = s;s->next = q;
62、在一个具有n个顶点的无向图中,每个顶点度的最大值为( )
a. n-1
b. n+1
c. n
d. 2(n-1)
63、图的BFS生成树的树高比DFS生成树的树高( )。
a. 大或相等
b. 小
c. 小或相等
d. 大
64、含有n个结点的二叉树采用二叉链表存储时,空指针域的个数为( )。
a. n
b. n+1
c. n+2
d. n-1
65、关于无向图的邻接矩阵的说法中正确的是( )。
a. 矩阵中的非零元素个数等于图的边数
b. 矩阵中非全零元素的行数等于图中的顶点数
c. 第i行上非零元素个数和第i列上非零元素个数一定相等
d. 第i行上与第i列上非零元素总和等于顶点Vi的度数
66、二叉树的第k层的结点数最多为( )。
a. 2k
b. 2k -1
c.2k
d. 2k-1
67、二叉排序树按( )遍历可以得到一个从小到大的有序序列。
a. 后序
b. 中序
c. 层次
d. 先序
68、下面程序的时间复杂为( )。
for(i=1, s=0; i<=n; i++)
{ t=1;
for(j=1; j<=i; j++)
t=t\
j; s=s+t;
}
a. O(n3)
b. O(n)
c. O(n2)
d. O(n4)
69、下面程序段的时间复杂度为( )。
s=i=0;
do { i=i+1; s=s+i;
} while(i<=n);
a. O(n)
b. O(nlog2n)
c. O(n2)
d. O(1)
70、下面关于线性表的叙述错误的是( )。
a. 线性表采用链式存储不必占用一片连续的存储空间
b. 线性表采用顺序存储必须占用一片连续的存储空间
c. 线性表采用顺序存储便于插入和删除操作的实现
d. 线性表采用链式存储便于插入和删除操作的实现
71、下述编码中哪一个不是前缀编码( )。
a. 0,10,110,111
b. 00,01,10,11
c. 1,01,000,001
d. 0,1,00,11
72、下列说法不正确的是( )。
a. 图的深度遍历不适用于有向图
b. 图的深度遍历是一个递归过程
c. 遍历的基本方法有两种:深度遍历和广度遍历
d. 图的遍历是从给定的源点出发每个顶点仅被访问一次
73、下列有关图遍历的说法中不正确的是(  )。
a. 非连通图不能用深度优先搜索法
b. 连通图的深度优先搜索是一个递归过程
c. 图的遍历要求每一顶点仅被访问一次
d. 图的广度优先搜索中邻接点的寻找具有“先进先出”的特征
74、下列哪种图的邻接矩阵为对称矩阵? ( )
a. 带权有向图
b. 有向图
c. 无向图
d. 有向图或无向图
75、一个带权的无向连通图的最小生成树(  )。
a. 只有一棵
b. 一定有多棵
c. 有一棵或多棵
d. 可能不存在
76、顺序表是线性表的()
a. 链式存储结构
b. 顺序存储结构
c. 索引存储结构
d. 散列存储结构
77、线性表若采用链式存储结构时,要求内存中可用存储单元的地址()
a. 必须是连续的
b. 部分地址必须是连续的
c. 一定是不连续的
d. 连续或不连续都可以
78、一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是()
a. e,d,c,b,a
b. d,e,c,b,a
c. d,c,e,a,b
d. a,b,c,d,e
79、在下列链表中,不能从任一结点出发访问到表中的所有结点的是()
a. 单链表
b. 单向循环链表
c. 双向循环链表
d. 循环链表
80、二叉树结点度的集合为()。
a. (1)
b. (0,1,2)
c. (1,2)
d. (0)
81、以二分查找方法查找一个线性表时,此线性表必须是()。
a. 顺序存储的有序表
b. 链式存储的有序表
c. 链表
d. 顺序表
82、设哈夫曼树的叶子结点的个数为n,那么该树的结点总数为()
a.2n
b.2n+1
c.2n-1
c.不能唯一确定
83、对二叉树来说,第i层上至多有()个结点。
a. 2i
b. 2i-1
c. 2i-1
d. 2i-1-1
84、数据结构包括3个方面的内容,它们是()。
a. 数据、数据元素、数据项
b. 数据元素、数据处理、算法实现
c. 数据元素、数据的逻辑结构、数据的存储结构
d. 数据的逻辑结构、数据的存储结构、数据的操作
85、数据在计算机存储器内表示时,存储结点连续存放且存储顺序与逻辑顺序相同,这种存储方式称为()。
a. 索引存储方式
b. 顺序存储方式
c. 链式存储方式
d. 散列存储方式
86、冒泡排序属于()。
a. 插入排序
b. 选择排序
c. 快速排序
d. 交换排序
87、下列程序段的时间复杂度为()。
i=1;j=0;
while(i+j<=n)
{if(i>j)j++;
elsei++;
}
a. O(n)
b. O(nlog2n)
c. O(i*j)
d. O(i+j)
88、下面程序的时间复杂为()。
for(i=1,s=0;i<=n;i++)
{t=1;for(j=1;j<=i;j++)t=t*j;s=s+t;}
a. O(n)
b. O(n2)
c. O(n3)
d. O(n4)
89、含有n个结点的二叉树采用二叉链表存储时,空指针域的个数为()。
a. n-1
b. n
c. n+1
d. n+2
90、设某完全无向图中有n个顶点,则该完全无向图中有()条边。
a. n(n-1)/2
b. n(n-1)
c. n
d. n-1

判断题

1、调用一次深度优先遍历可以访问到图中的所有顶点。(F)
2、分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。(T)
3、冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。(T)
4、满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。(T)
5、设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。(F)
6、线性表的顺序存储结构比链式存储结构更好。(F)
7、不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”情况。(T)
8、完全二叉树中的叶子结点只可能在最后两层中出现。(T)
9、由树转化成二叉树,该二叉树的右子树不一定为空。(F)
10、线性表中的所有元素都有一个前驱元素和后继元素。(F)

填空题

1、head指向单链表的表头,p指向单链表的表尾结点,则执行p->next=head后,该单链表构成循环链表
2、在单链表中,若p和s是两个指针,且满足p->next与s相同,则语句p->next=s->next的作用是删除s指向的结点。
3、在一个长度为n的顺序表中的第i(1≤i≤n+1)个元素之前插入一个元素时,需向后移动的元素个数为n-i+1
4、设顺序线性表中有n个数据元素,则删除表中第i个元素需向前移动n-i个元素。
5、衡量一个算法,除了正确性之外,主要考虑的两个方面是时间复杂度空间复杂度
6、在一个具有n个顶点的无向完全图中,包含n(n-1)/2条边。
7、对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小为n^2
8、采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为(n+1)/2
9、树型结构最适合用来表示元素之间具有分支层次关系的数据。

简答题

1、已知一棵二叉树的先(前)序遍历序列为ABDEGCFH,中序遍历序列为DBGEACFH,请画出该二叉树,并写出该二叉树的后序序列。

2020-07-10_5f0802a1c7022.png

后序遍历序列为:DGEBHFCA

2、画出一棵二叉树,使其:中序序列为DCBGEAHFIJK,后序序列:DCEGBFHKJIA

2020-07-10_5f0803da172a1.png

3、请写出对(53, 87, 12, 61,98,17, 97, 75, 53, 26)进行一次划分的过程。

快速排序一趟结果如下:(26,17,12,53,98,61,97,75,53,87)

4、有一结点序列为(7,19,2,6,32,3,21,10),要求以该序列作为带权二叉树中结点的权值,构造并画出一棵哈夫曼树,并计算其带权路径长度。

2020-07-10_5f080f4b9ee74.png

WPL=(2+3)5+(6+7+10)4+(19+21+32)*2
=25+92+144
=261

5、对下面所示的无向网,要求构造出一棵最小生成树(中间过程可以省略),并计算该最小生成树的权。

2020-07-10_5f080fafde3c5.png

2020-07-10_5f081041348c5.png

最小生成树的权=4+3+5+4+5+2+3
=26

6、下面所示为有向图的邻接表,试画出该有向图,并给出由顶点V1开始的深度优先遍历和广度优先遍历的结果。

2020-07-10_5f0810795f1c0.png

2020-07-10_5f0810a6b9410.png

深度优先搜索序列:V1, V2, V3, V6, V5, V4
广度优先搜索序列:V1, V2, V5, V4, V3, V6

7、有一结点序列为(45,24,53,12,28,90),要求构造并画出一棵二叉排序树,并输出以中序方式遍历该树的序列。

2020-07-10_5f081a7f0557c.png

中序遍历得到从小到大的有序序列:
12,24,28,45,53,90

-------------本文结束感谢您的阅读-------------
0%