数据结构 期末习题

  • 格式:doc
  • 大小:50.00 KB
  • 文档页数:7

1 第2章 线性表习题

一、 单项选择题

1、在有n 个结点顺序表中,等概率插入结点所需的结点移动平均次数为 ① ,等概率删除结点所需的结点移动平均次数为 ② 。

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

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

2、在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是 。

A访问第i个结点. (1≤i≤n)

B.在第i个结点之前插入一个新结点(1≤i≤n)

C.删除第i个结点(1≤i≤n)

D.将n个结点从大到小排序(1≤i≤n)

3、顺序表中逻辑上相邻的结点的物理位置 。

A.按照某种规律排序 B.不必相邻

C.一定相邻 D.无要求

4、相对于顺序存储而言,链式存储的优点是 。

A.随机存取 B.增、删操作方便 C.节约空间 D.结点间关系简单

5、在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s所指结点,则应执行的操作是 。

A. q->next=s;s->next=p; B. p->next=s->next;s->next=p;

C. s->next=p->next;p->next=s; D. p->next=s;s->next=q;

6、在一个单链表中,若p所指结点不是最后结点,删除p之后的结点,则执行 。

A. p->next=p->next->next; B. p=p->next;

C. p=p->next->next; D. p->next=p;

7、在一个单链表中,若p所指结点不是最后结点,删除p的直接后继结点,则执行 。

A. p->next=p->next->next; B. p=p->next;

C. p=p->next->next; D. p->next=p;

8、链表不具备的特点是 。

A. 可以随机访问任一结点 B. 插入操作不需要移动元素

C. 不必事先估计存储空间 D. 所需空间与其长度成正比

2 9、不带头结点的单链表L为空的判定条件是 。

A. L!=NULL B. L->next==NULL

C. L->next==L D. L==NULL

10、带头结点的单链表L为空的判定条件是 。

A. L!=NULL B. L->next==NULL

C. L->next==L D. L==NULL

11、带头结点的双循环链表L为空的判定条件是 。

A. L==NULL B. L->next==NULL

C. L->back==NULL D. L->next==L

12、非空循环单链表L的尾结点(由p所指向)满足 。

A. p->next==NULL B. p==NULL

C. p->next==L D. p==L

13、在双循环链表L的p所指结点之前插入s所指向的结点的操作是 。

A. p->back=s;s->next=p;p->back->next=s;s->back=p->back;

B. p->back=s;p->back->next=s;s->next=p;s->back=p->back;

C. s->next=p;s->back=p->back; p->back=s; p->back->next=s;

D. s->next=p; s->back=p->back; p->back->next=s; p->back=s;

14、需要分配较大空间,插入和删除不需要移动元素的线性表其存储结构是 。

A.线性链表 B.单链表 C.静态链表 D.顺序存储

答:C。静态链表是用一维数组实现的链式存储结构,每个数据元素附加一个指针(通常为下一个元素的下标)。它允许不改变各元素的物理位置,只需重新链接就能够改变这些元素的逻辑顺序。需要分配较大空间,插入和删除需要修改指针,不需要移动元素。

15、如果最常用的操作是取第i个结点及其前驱,则采用 。

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

16、在具有n 个结点有序单链表中,插入新结点并仍然保持有序的时间复杂度是 。

A.O(1) B.O(n) C.O(n2) D.O(nlog2n)

17、在不带头结点的单链表L(长度n>1)上,设有头指针和尾指针,执行 操作与链表的长度有关。

A. 删除单链表的第一个元素

B. 删除单链表的最后一个元素

C. 在单链表第一个元素前插入一个新元素

D. 在单链表最后一个元素后插入一个新元素

3 18、线性表有n个元素,以下算法中, 在顺序表上实现比在链表上实现效率更高。

A.输出第i个结点值(1≤i≤n)

B.交换第0个元素和第1个元素的值

C.顺序输出这n个元素的值

D.输出与给定值x相等的元素在线性表中的序号

19、线性表有n个元素,以下算法中, 在单链表中实现要比顺序表上实现效率更高。

A.删除所有值为x的结点 顺序表每删除一个元素都要移动元素

B.在最后一个元素的后面插入一个新元素

C.顺序输出前k个元素

D.交换第i个元素和第n-i个元素的值(1≤i≤n)

20、与单链表相比,双链表的优点之一是 。

A.插入、删除操作更简单

B.可以进行随机访问

C.可以省略表头指针和表尾指针

D.顺序访问相邻结点更灵活

二、 填空题

1、在线性结构中,第一个结点 ① 前驱结点,其余每个结点有且只有 ② 个前驱结点;最后一个结点 ③ 后继结点,其余每个结点有且只有 ④ 个后继结点。

2、线性结构中元素之间存在 ① 关系,树型结构中元素之间存在 ② 关系,图形结构中元素之间存在 ③ 关系。

3、在长度为n的顺序表中,第i个元素(1≤i≤n)之前插入一个元素时,n-i+1 个元素。

4、在长度为n的顺序表中,删除第i个元素(1≤i≤n)时,需要向前移动 n-i 个元素。

5、设线性表L是顺序存储,若起始地址L(a1)=1000,每个元素占4个存储单元,则L(a6)=

1020 。

1000+4*5=

6、在单链表中,删除p所指结点的后继结点的语句是 。

7、访问单链表中的结点,必须沿着 依次进行。

8、在顺序表中插入或删除一个元素,需要平均移动 一半 元素,移动的元素个数与

有关。表长 位置 4

9、顺序表中逻辑上相邻的元素的物理位置 紧邻。单链表中逻辑上相邻的元素的物理位置 紧邻。

10、在单链表中,除首结点外,任一结点的存储位置由 指示。

11、在单链表中设置表头结点作用是 。

12、什么情况下顺序表比链表好?

13、已知L是无表头结点的单链表,p结点位于链表中间,试从下列答案中选择合适的语句序列。

A.在p结点后插入s结点的语句序列是 。

B.在p结点插入s结点的语句序列是 。

C.在表首插入s结点的语句序列是 。

D.在表尾插入s结点的语句序列是 。

(1)p->next=s;

(2)p->next=p->next->next;

(3) p->next=s->next;

(4) s->next=p->next;

(5) s->next=L;

(6) s->next=NULL;

(7) q=p;

(8) while(p->next!=q) p=p->next;

(9) while(p->next!=NULL) p=p->next;

(10) p=q;

(11) p=L;

(12) L=s;

(13) L=p;

14、已知L是带表头结点的单链表,p结点位于链表中间,试从下列答案中选择合适的语句序列。

A.删除p结点的直接后继结点的语句序列是 。

B.删除p结点的直接前驱结点的语句序列是 。

C.删除p结点的语句序列是 。

D.删除首结点的语句序列是 。

E.删除尾结点的语句序列是 。

(1) p=p->next;

(2) p->next=p;

(3) p->next=p->next->next;

(4) p =p->next->next; 5 (5) while(p!=NULL) p=p->next;

(6) while(q->next!=NULL){ p=q;q=q->next;}

(7) while(p->next!=q) p=p->next;

(8) while(p->next->next!=q) p=p->next;

(9) while(p->next->next!=NULL) p=p->next;

(10) q=p;

(11) q=p->next;

(12) p=L;

(13) L=L->next;

(14) free(q);

15、已知p是某双向链表的中间结点,试从下列答案中选择合适的语句序列。

A. 在p结点后插入s结点的语句序列是 。

B. 在p结点前插入s结点的语句序列是 。

C. 删除p结点的直接后继结点的语句序列是 。

D. 删除p结点的直接前驱结点的语句序列是 。

E. 删除p结点的语句序列是 。

(1) p->next=p->next->next;

(2) p->back=p->back->back;

(3) p->next=s;

(4) p->back=s;

(5) s->next=p;

(6) s->back=p;

(7) s->next=p->next;

(8) s->back=p->back

(9) p->back->next=p->next;

(10) p->back->next=p;

(11) p->next->back=p;

(12) p->next->back=s;

(13) p->back->next=s;

(14) p->next->back= p->back;

(15) q= p->next

(16) q= p->back

(17) free(p)

(18) free(q);

16、在 链表上,删除最后一个结点的算法的时间复杂度为O(1)。

17、在非循环的 链表中,可以用尾指针代替表头指针。