哈哈,有木有感觉我复习的很快!(希望以后的几张也能这么快)
对,我提一下,我的复习方法是先看网易云课堂上小甲鱼的数据结构与算法这门课,边听便在书上做笔记,然后去做对应的习题。
1.选择题
(1)顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( B )。
A.110 B.108 C.100 D.120
解释:顺序表中的数据连续存储,所以第5个元素的地址为:100+2*4=108。
(2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( A )。
A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)
B.在第i个结点后插入一个新结点(1≤i≤n)
C.删除第i个结点(1≤i≤n)
D.将n个结点从小到大排序
解释:在顺序表中插入一个结点的时间复杂度都是O(n),排序的时间复杂度为O(n2)或O(nlog2n)。顺序表是一种随机存取结构,访问第i个结点和求第i个结点的直接前驱都可以直接通过数组的下标直接定位,时间复杂度是O(1)。
(3)线性表若采用链式存储结构时,要求内存中可用存储单元的地址( D )。
A.必须是连续的 B.部分地址必须是连续的
C.一定是不连续的 D.连续或不连续都可以
解释:若采用链式存储结构,内存中可用存储单元的地址是不需要连续的,因为有每个元素都是由数据域和指针域构成的,而指针域就可以告诉后继元素的位置。
(4)线性表L在( B )情况下适用于使用链式结构实现。
A.需经常修改L中的结点值 B.需不断对L进行删除插入
C.L中含有大量的结点 D.L中结点结构复杂
解释:链表最大的优点在于插入和删除时不需要移动数据,直接修改指针即可。
(5)将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是( A )。
A.n B.2n-1 C.2n D.n-1
解释:当第一个有序表中所有的元素都小于(或大于)第二个表中的元素,只需要用第二个表中的第一个元素依次与第一个表的元素比较,总计比较n次。
(6)在一个长度为n的顺序表中,在第i个元素(1≤i≤n+1)之前插入一个新元素时须向后移动( B )个元素。
A.n-i B.n-i+1 C.n-i-1 D.I
解释:比如说现在有 1 2 3 4 5,共计5(为题中的n)个元素,要在3和4(为题中的i)之间插入x元素,需要把5-4+1个元素后移
(7) 创建一个包括n个结点的有序单链表的时间复杂度是( C )。
A.O(1) B.O(n) C.O(n2) D.O(nlog2n)
解释