数据结构复习 联系客服

发布时间 : 星期一 文章数据结构复习更新完毕开始阅读bc2fb713be1e650e52ea9984

}

}

本算法的时间复杂度为O(1)。

(3)算法如下:

void maxmin(int a[], int n, int &max, int &min) { int k;

min=a[0]; max=a[0]; for(k=1;k

if(a[k]>max) max=a[k];

else if(a[k]

本算法的时间复杂度为O(n)。

例题:设n是3的倍数,分析以下算法的时间复杂度(需给出推导过程)。 void fun(int n) { int i, j, x, y;

for(i=0; i<=n;i++) if(3*i<=n)

for(j=3*i; j<=n; j++) { x++; y=3*x+2; } }

第2章线性表

基本知识点:线性表的逻辑结构特征,线性表的基本运算,线性表的两种存储结构,以及在这两种存储结构下线性表的基本运算算法的实现,顺序表和链表的优缺点比较。

重点:掌握线性表的定义和特点,线性表的存储结构;顺序表和链表的组织方法和算法设计。

难点:单链表和双链表的各种算法设计。

选择题部分:

1、 线性表是_________。

(A) 一个有限序列,可以为空 (B) 一个有限序列,不可以为空 (C) 一个无限序列,可以为空 (D) 一个无限序列,不可以为空 2、链表不具有的特点是_________。

(A) 可以随机访问任一元素 (B) 插入删除不需要移动元素

(C) 不必事先估计存储空间 (D) 所需空间与线性表长度成正比 3、线性表采用链式存储结构时,其地址_________。 (A) 必须是连续的 (B) 一定是不连续的 (C) 部分地址必须是连续的 (D) 连续与否均可以

4、在线性表的的下列存储结构中,读取指定序号的元素花费时间最少的是_________。 (A) 单链表 (B) 双链表 (C) 循环链表 (D) 顺序表

5、若线性表最常用的运算是存取第i个元素及其前趋的值,则采用_________存储方式节省时间。

(A) 单链表 (B) 双链表 (C) 循环单链表 (D) 顺序表

6、在一个具有n个结点的有序单链表中插入一个新结点使得仍然有序,其算法的时间复杂度为_________.

(A) O(log2n) (B) O(1) (C) O(n2) (D) O(n)

7、在一个单链表中,删除*p结点之后的一个结点的操作是_________。 (A) p->next=p (B) p->next->next=p->next (C) p->next->next=p (D) p->next=p->next->next

8、在一个长度为n的线性表中顺序查找值为x的元素时,在等概率情况下,查找成功时的平均查找长度为_________。

(A) n (B) n/2 (C) (n+1)/2 (D) (n-1)/2

9、在一个长度为n的顺序表中,删除值为x的元素时需要比较元素和移动元素的总次数是_________。

(A) (n+1)/2 (B) n/2 (C) n (D) n+1

10、在一个顺序表的表尾插入一个元素的时间复杂度是_________。 (A) O(n) (B) O(1) (C) O(n2) (D) O(log2n)

11、在一个顺序表的任何位置插入一个元素的时间复杂度是_________。 (A) O(n) (B) O(1) (C) O(n2) (D) O(log2n)

12、在一个不带头结点(首结点为*head)的单循环链表中,至少有一个结点的条件是_________。

(A) head!=NULL (B) head->next!=NULL (C) head==NULL (D) head->next==NULL

13、在带头结点*head的循环单链表中,至少有一个结点的条件是_________。 (A) head->next!=NULL (B) head->next!=head (C) head==NULL (D) head-

14、带头结点的单链表head为空的判定条件是_________。 (A) head==NULL (B) head->next==NULL (C) head->next==head (D) head!=NULL

15、将两个长度为n的有序表归并为一有序表时,算法的时间复杂度是_________。 (A) O(1) (B) O(n) (C) O(n2) (D) O(log2n)

16、在长度为n的顺序表,当在任何位置上插入一个元素的概率相等时,插入一个元素需要移动的元素的平均个数为( )

(A) n/2 (B)(n-1)/ 2 (C) (n+1)/2 (D) (n+2)/2

17、在长度为n的顺序表中,删除第i个元素(1≤i≤n)需要向后移动( )个元素。 (A) n-i (B) n-i+1 (C) n-i-1 (D) i

18、一个栈的入栈顺序是1、2、3、4、5,则此栈不可能的输出顺序为( )。 (A) 5、4、3、2、1 (B) 4、5、3、2、1 (C) 4、3、5、1、2 (D)1、2、3、4、5

19、一个队列的入队序列是a,b,c,d,则队列的输出序列是( )。 (A)dcba (B)abcd (C)adcb (D)cbda 20、空串是指( )。

(A)空白串 (B)长度为零的串 (C)长度为1的串 (D)仅由空格组成的串 21、在链式存储结构中,一个存储结点存储一个_____。 (A) 数据项 (B) 数据元素 (C) 数据结构 (D) 数据类型 22、算法分析的目的是_______________。

(A) 找出数据结构的合理性 (B)研究算法中输入和输出的关系 (C)分析算法的效率以求改进 (D)分析算法的易读性和文档性 23、一个队列的入队序列是abcd,则队列的输出序列是_____。 (A)dcba (B)abcd (C)adcb (D)cbda

24、在表长为n的顺序表上做插入运算,平均要移动的结点数为( )。 (A)n (B) n/2 (C) n/3 (D) n/4

25、在双链表某结点(己知其地址)前,插入一新结点,其所需时间是( )。 (A)O(1) (B) O(lgn) (C) O(n) (D) O(n2)

26、设长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为( )。

(A) O(1) (B) O(lgn) (C) O(n) D O(n2) 27、在表长为n的顺序表上做删除运算,在等概率的情况下,平均要移动的结点数为( )。 (A)n/2 (B) (n-1)/2 (C) n/3 (D) n/4

28、线性表( a1,a2,?,an)以链接方式存储时,访问第i位置元素的时间复杂性为( ) (A)O(i) (B)O(1) (C)O(n) (D)O(n/2) 29、线性表的下列存储结构中,读取指定序号的元素花费的时间最少的是______。 (A)单链表 (B)顺序表 (C)双链表 (D)循环链表 30、线性表采用链式存储结构时,其地址_________。 (A) 必须是连续的 (B) 一定是不连续的 (C) 部分地址必须是连续的 (D) 连续与否均可

31、在线性表的下列存储结构中,读取指定序号的元素花费时间最少的是____。 (A) 单链表 (B) 双链表 (C)循环链表 (D)顺序表

32、 若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用( )存储方式最省时间。

(A)单链表 (B)双链表 (C)单向循环链表 (D)顺序表 33、在长度为n的顺序表中,向第i个元素(1≤i≤n+1)前插入一个元素需要向后移动( )个元素。

(A) n-i (B) n-i+1 (C) n-i-1 (D) i

34、在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行( )。

(A) q->next=p->next; p->next=q; (B) p->next=q->next; q=p;

(C) p->next=p->next; q->next=q; (D) p->next=q->next; q->nxet=p;

35、在表长为n的顺序表上做插入运算,平均要移动的结点数为( )。 (A)n (B) n/2 (C) n/3 (D) n/4

36、在双链表某结点(己知其地址)前,插入一新结点,其所需时间是( )。 (A)O(1) (B) O(lgn) (C) O(n) (D) O(n2)

37、在长度为n的顺序表中,当在任何位置插入一个元素的概率相等时,插入一个元素需要移动的元素的平均个数是________。

(A)n/2 (B) (n-1)/2 (C) (n+1)/2 (D)(n+2)/2

38、 若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用( )存储方式最省时间。

(A)单链表 (B)双链表 (C)单向循环链表 (D)顺序表 49、在长度为n的顺序表中,向第i个元素(1≤i≤n+1)前插入一个元素需要向后移动( )

个元素。

(A) n-i (B) n-i+1 (C) n-i-1 (D) i

40、在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行( )。

(A) q->next=p->next; p->next=q; (B) p->next=q->next; q=p;

(C) p->next=p->next; q->next=q; (D) p->next=q->next; q->nxet=p;

判断题:

1、顺序查找方法只能在顺序存储结构上进行。 2、线性表的顺序存储结构优于链式存储结构。

3、对于单链表来说,只有从头结点开始才能扫描表中全部结点。 4、对于单链表来说,只有从头结点开始才能扫描表中全部结点。 5、双向链表的特点是很容易找任何一个结点的前趋和后继。 6、线性表的顺序存储结构优于链式存储结构。 7、凡是为空的单链表都是不含任何结点的。

8、向顺序表中插入一个元素,平均要移动大约一半的元素。

9. 线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。

10、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。

11、线性表采用链式存储时,结点和结点内部的存储空间可以是不连续的。 12、单链表中的头结点就是单链表的第一个结点。

13、在带头结点的单循环链表中,任何一个结点的后继结点的指针均非空。

14、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都相同。 15、分配给单链表的内存单元地址必须是连续的。

16、双向链表的特点是很容易找任何一个结点的前趋和后继。 17、线性表的顺序存储结构优于链式存储结构。

18、对于单链表来说,只有从头结点开始才能扫描表中全部结点。 19、线性表就是顺序表。

20、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。

21、在带头结点的单循环链表中,任一结点的后继指针均非空。

22、线性表采用链表方式和顺序表方式存储,执行插入和删除运算的时间复杂度都是O(n),因而两种存储方式的插入、删除运算所花费的时间相同。

23、在带头结点的单循环链表中,任一结点的后继指针均非空。

24、线性表采用链式存储时,结点和结点内部的存储空间可以是不连续的。

填空题:

1、单链表是 的链接存储表示。

2、在有n个元素的顺序表中删除任意一个元素所需移动结点的平均次数是 。 3、在双链表中,每个结点有两个指针域,一个指向 另一个指向 。 4、在带有头结点的单链表L中,第一个元素结点的指针是