s+=B[i][j];
sum=s;
11.下面程序段的时间复杂度是______O(log
n)____________。
i=1;
while(i<=n)
i=i*3;
12.衡量算法正确性的标准通常是__程序对于精心设计的典型合法数据输入得出符合要求的结果_。
13.算法时间复杂度的分析通常有两种方法,即___事后统计______和__事前估计__的方法,通常我们对算法求时间复杂度时,采用后一种方法。
第2章线性表
一、单项选择题
1.线性表是__A______。
A.一个有限序列,可以为空B.一个有限序列,不可以为空
C.一个无限序列,可以为空D.一个无限序列,不可以为空
2.在一个长度为n的顺序表中删除第i个元素(0<=i<=n)时,需向前移动A个元素。
A.n-iB.n-i+lC.n-i-1D.i
3.线性表采用链式存储时,其地址__D______。
A.必须是连续的B.一定是不连续的C.部分地址必须是连续的D.连续与否均可以
4.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较__C_个元素结点。
A.n/2B.nC.(n+1)/2D.(n-1)/2
5.在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是__D__。
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;
6.设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为__A______。
A.p->next=p->next->next;B.p=p->next;
C.p=p->next->next;D.p->next=p;
7.在一个长度为n的顺序表中向第i个元素(0
A.n-iB.n-i+lC.n-i-1D.i
8.在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行B
A.s->next=p->next;p->next=sB.q->next=s;s->next=p
C.p->next=s->next;s->next=pD.p->next=s;s->next=q
9.以下关于线性表的说法不正确的是___B___。
A.线性表中的数据元素可以是数字、字符、记录等不同类型。
B.线性表中包含的数据元素个数不是任意的。
C.线性表中的每个结点都有且只有一个直接前趋和直接后继。
D.存在这样的线性表:
表中各结点都没有直接前趋和直接后继。
10.线性表的顺序存储结构是一种___A____的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取
11.在顺序表中,只要知道__D_____,就可在相同时间内求出任一结点的存储地址。
A.基地址B.结点大小C.向量大小D.基地址和结点大小
12.在等概率情况下,顺序表的插入操作要移动__B____结点。
A.全部B.一半 C.三分之一 D.四分之一
13.在____C__运算中,使用顺序表比链表好。
A.插入 B.删除 C.根据序号查找 D.根据元素值查找
14.在一个具有n个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度是___B____。
A.O
(1) B.O(n) C.O(n2)D.O(log2n)
15.设有一个栈,元素的进栈次序为A,B,C,D,E,下列是不可能的出栈序列____C______。
A.A,B,C,D,EB.B,C,D,E,A
C.E,A,B,C,DD.E,D,C,B,A
16.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为___C___。
A.top不变B.top=0C.top--D.top++
17.向一个栈顶指针为hs的链栈中插入一个s结点时,应执行______。
A.hs->next=s;B.s->next=hs;hs=s;
C.s->next=hs->next;hs->next=s;D.s->next=hs;hs=hs->next;
18.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为________。
A.rear%n==frontB.(front+l)%n==rear
C.rear%n-1==frontD.(rear+l)%n==front
19.在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队空的条件为________。
A.rear%n==frontB.front+l=rear
C.rear==frontD.(rear+l)%n=front
20.在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为________。
A.front=front->next B.rear=rear->next
C.rear=front->next D.front=rear->next
二、填空题
1.线性表是一种典型的_________结构。
2.在一个长度为n的顺序表的第i个元素之前插入一个元素,需要后移____个元素。
3.顺序表中逻辑上相邻的元素的物理位置________。
4.要从一个顺序表删除一个元素时,被删除元素之后的所有元素均需_______一个位置,移动过程是从_______向_______依次移动每一个元素。
5.在线性表的顺序存储中,元素之间的逻辑关系是通过_______决定的;在线性表的链接存储中,元素之间的逻辑关系是通过_______决定的。
6.在双向链表中,每个结点含有两个指针域,一个指向_______结点,另一个指向_______结点。
7.当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用_______存储结构为宜。
相反,当经常进行的是插入和删除操作时,则采用_______存储结构为宜。
8.顺序表中逻辑上相邻的元素,物理位置_______相邻,单链表中逻辑上相邻的元素,物理位置______相邻。
9.线性表、栈和队列都是_______结构,可以在线性表的______位置插入和删除元素;对于栈只能在_______位置插入和删除元素;对于队列只能在_______位置插入元素和在_______位置删除元素。
10.根据线性表的链式存储结构中每个结点所含指针的个数,链表可分为_________和_______;而根据指针的联接方式,链表又可分为________和_________。
11.在单链表中设置头结点的作用是________。
12.对于一个具有n个结点的单链表,在已知的结点p后插入一个新结点的时间复杂度为______,在给定值为x的结点后插入一个新结点的时间复杂度为_______。
13.对于一个栈作进栈运算时,应先判别栈是否为_______,作退栈运算时,应先判别栈是否为_______,当栈中元素为m时,作进栈运算时发生上溢,则说明栈的可用最大容量为_______。
为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存空间时,应将两栈的_______分别设在这片内存空间的两端,这样只有当_______时才产生上溢。
14.设有一空栈,现有输入序列1,2,3,4,5,经过push,push,pop,push,pop,push,push后,输出序列是_________。
15.无论对于顺序存储还是链式存储的栈和队列来说,进行插入或删除运算的时间复杂度均相同为__________。
习题2参考答案
一、单项选择题
1.A2.A3.D4.C5.D6.A7.B8.B9.C10.A11.D12.B13.C14.B15.C16.C17.B18.D19.C20.A
二、填空题
1.线性2.n-i+13.相邻4.前移,前,后5.物理存储位置,链域的指针值
6.前趋,后继7.顺序,链接8.一定,不一定9.线性,任何,栈顶,队尾,队头
10.单链表,双链表,非循环链表,循环链表11.使空表和非空表统一;算法处理一致
12.O
(1),O(n)13.栈满,栈空,m,栈底,两个栈的栈顶在栈空间的某一位置相遇
14.2、315.O
(1)
第3章串
一、单项选择题
1.空串与空格字符组成的串的区别在于()。
A.没有区别B.两串的长度不相等
C.两串的长度相等D.两串包含的字符不相同
2.一个子串在包含它的主串中的位置是指()。
A.子串的最后那个字符在主串中的位置B.子串的最后那个字符在主串中首次出现的位置
C.子串的第一个字符在主串中的位置D.子串的第一个字符在主串中首次出现的位置
3.下面的说法中,只有()是正确的。
A.字符串的长度是指串中包含的字母的个数B.字符串的长度是指串中包含的不同字符的个数
C.若T包含在S中,则T一定是S的一个子串D.一个字符串不能说是其自身的一个子串
4.两个字符串相等的条件是()。
A.两串的长度相等B.两串包含的字符相同
C.两串的长度相等,并且两串包含的字符相同D.两串的长度相等,并且对应位置上的字符相同
5.若SUBSTR(S,i,k)表示求S中从第i个字符开始的连续k个字符组成的子串的操作,则对于S=“Beijing&Nanjing”,SUBSTR(S,4,5)=()。
A.“ijing”B.“jing&”C.“ingNa”D.“ing&N”
6.若INDEX(S,T)表示求T在S中的位置的操作,则对于S=“Beijing&Nanjing”,T=“jing”,INDEX(S,T)=()。
A.2B.3C.4D.5
7.若REPLACE(S,S1,S2)表示用字符串S2替换字符串S中的子串S1的操作,则对于S=“Beijing&Nanjing”,S1=“Beijing”,S2=“Shanghai”,REPLACE(S,S1,S2)=()。
A.“Nanjing&Shanghai”B.“Nanjing&Nanjing”
C.“ShanghaiNanjing”D.“Shanghai&Nanjing”
8.在长度为n的字符串S的第i个位置插入另外一个字符串,i的合法值应该是()。
A.i>0B.i≤n
C.1≤i≤nD.1≤i≤n+1
9.字符串采用结点大小为1的链表作为其存储结构,是指()。
A.链表的长度为1
B.链表中只存放1个字符
C.链表的每个链结点的数据域中不仅只存放了一个字符
D.链表的每个链结点的数据域中只存放了一个字符
二、填空题
1.计算机软件系统中,有两种处理字符串长度的方法:
一种是___________,第二种是___________________。
2.两个字符串相等的充要条件是_____________________和___________________。
3.设字符串S1=“ABCDEF”,S2=“PQRS”,则运算S=CONCAT(SUB(S1,2,LEN(S2)),SUB(S1,LEN(S2),2))后的串值为___________________。
4.串是指___________________。
5.空串是指___________________,空格串是指___________________。
习题3参考答案
一、单项选择题
1.B2.D3.C4.D5.B6.C7.D8.C9.D
二、填空题
1.固定长度,设置长度指针2.两个串的长度相等,对应位置的字符相等3.“BCDEDE”
4.含n个字符的有限序列(n≥0)5.不含任何字符的串,仅含空格字符的字符串
第4章数组
一、单项选择题
1.设二维数组A[0…m-1][0…n-1]按行优先顺序存储在内存中,第一个元素的地址为p,每个元素占k个字节,则元素aij的地址为()。
A.p+[i*n+j-1]*kB.p+[(i-1)*n+j-1]*k
C.p+[(j-1)*n+i-1]*kD.p+[j*n+i-1]*k
2.已知二维数组A10×10中,元素a20的地址为560,每个元素占4个字节,则元素a10的地址为()。
A.520B.522C.524D.518
3.若数组A[0…m][0…n]按列优先顺序存储,则aij地址为()。
A.LOC(a00)+[j*m+i]B.LOC(a00)+[j*n+i]
C.LOC(a00)+[(j-1)*n+i-1]D.LOC(a00)+[(j-1)*m+i-1]
二、填空题
1.一维数组的逻辑结构是______________,存储结构是______________;对于二维或多维数组,分为______________和______________两种不同的存储方式。
2.对于一个二维数组A[m][n],若按行序为主序存储,则任一元素A[i][j]相对于A[0][0]的地址为______________。
3.一个稀疏矩阵为,则对应的三元组线性表为_____________。
4.一个n×n的对称矩阵,如果以行为主序或以列为主序存入内存,则其容量为______________。
5.数组A[1…10,-2…6,2…8]以行优先的顺序存储,设第一个元素的首地址是100,每个元素占3个存储长度的存储空间,则元素A[5,0,7]的存储地址为______________。
习题4参考答案
一、单项选择题
1.A2.A3.A
二、填空题
1.线性结构,顺序结构,以行为主序,以列为主序2.i×n+j个元素位置
3.((0,2,2),(1,0,3),(2,2,-1),(2,3,5))4.n×(n+1)/25:
913
第5章树
一、单项选择题
1.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个。
A.4B.5C.6D.7
2.假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为()个。
A.15B.16C.17D.47
3.假定一棵三叉树的结点数为50,则它的最小高度为()。
A.3B.4C.5D.6
4.在一棵二叉树上第4层的结点数最多为()。
A.2B.4C.6D.8
5.用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1..n],结点R[i]若有左孩子,其左孩子的编号为结点()。
A.R[2i+1]B.R[2i]C.R[i/2]D.R[2i-1]
6.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()。
A.24B.48C.72D.53
7.线索二叉树是一种()结构。
A.逻辑B.逻辑和存储C.物理D.线性
8.线索二叉树中,结点p没有左子树的充要条件是()。
A.p->lc=NULLB.p->ltag=1
C.p->ltag=1且p->lc=NULLD.以上都不对
9.设n,m为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是()。
A.n在m右方B.n在m左方
C.n是m的祖先D.n是m的子孙
10.如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的()。
A.中序B.前序C.后序D.层次序
11.欲实现任意二叉树的后序遍历的非递归算法而不必使用栈,最佳方案是二叉树采用()存储结构。
A.三叉链表B.广义表C.二叉链表D.顺序
12.下面叙述正确的是()。
A.二叉树是特殊的树B.二叉树等价于度为2的树
C.完全二叉树必为满二叉树D.二叉树的左右子树有次序之分
13.任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序()。
A.不发生改变B.发生改变
C.不能确定D.以上都不对
14.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为()。
A.1B.2C.3D.4
15.根据先序序列ABDC和中序序列DBAC确定对应的二叉树,该二叉树()。
A.是完全二叉树B.不是完全二叉树
C.是满二叉树D.不是满二叉树
三、填空题
1.假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为_____,树的深度为_____,终端结点的个数为______,单分支结点的个数为______,双分支结点的个数为______,三分支结点的个数为_______,C结点的双亲结点为_______,其孩子结点为_______和_______结点。
2.设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的结点有_______个。
3.对于一个有n个结点的二叉树,当它为一棵________二叉树时具有最小高度,即为_______,当它为一棵单支树具有_______高度,即为_______。
4.由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为___。
5.在一棵二叉排序树上按_______遍历得到的结点序列是一个有序序列。
6.对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为_______个,其中_______个用于链接孩子结点,_______个空闲着。
7.在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0=______。
8.一棵深度为k的满二叉树的结点总数为_______,一棵深度为k的完全二叉树的结点总数的最小值为_____,最大值为______。
9.由三个结点构成的二叉树,共有____种不同的形态。
10.设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为____。
11.一棵含有n个结点的k叉树,______形态达到最大深度,____形态达到最小深度。
12.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n),则它的左孩子结点的编号为________,右孩子结点的编号为________,双亲结点的编号为________。
13.对于一棵具有n个结点的二叉树,采用二叉链表存储时,链表中指针域的总数为_________个,其中___________个用于链接孩子结点,_____________个空闲着。
14.哈夫曼树是指____________________________