0
点赞
收藏
分享

微信扫一扫

算法与数据结构课后习题第二章

niboac 2022-01-12 阅读 68

第2章-线性表-作业

一、单选题(共18题,90分)

1. 根据教科书中线性表的实现方法,线性表中的元素必须是( )。

A. 整数类型

B. 字符类型

C. 相同类型

D. 结构类型

我的答案: C正确答案: C答案解析:线性表的概念

2. 线性表的顺序存储结构是一种( )的存储结构。

A. 随机存取

B. 顺序存取

C. 索引存取

D. Hash存取

我的答案: A正确答案: A答案解析:顺序存储结构

3. 对于顺序表的优缺点,以下说法错误的是( )。

A. 无需为表示结点间的逻辑关系而增加额外的存储空间

B. 可以方便地随机存取表中的任一结点

C. 插入和删除运算较方便

D. 由于顺序表要求占用连续的空间,存储分配只能预先进行(静态分配)

我的答案: C正确答案: C答案解析:顺序存储结构的优缺点

4. 下述哪一条是顺序存储结构的优点?( )

A. 存储密度大

B. 插入运算方便

C. 删除运算方便

D. 可方便地用于各种逻辑结构的存储表示

我的答案: A正确答案: A答案解析:顺序存储结构的优缺点

5. 对于顺序表,访问第i位置结点和增加、删除结点的时间复杂度为( )。

A. O(n) O(n)

B. O(n) O(1)

C. O(1) O(n)

D. O(1) O(1)

我的答案: C正确答案: C答案解析:顺序表的操作

6. 若长度为n的线性表采用顺序存储结构,在其第i个位置之前插入一个新元素的算法的移动结点的平均次数为( )。

A. n

B. n/2

C. (n-1)/2

D. (n+1)/2

我的答案: B正确答案: B答案解析:顺序表的操作

7. 单链表中,增加一个头结点的目的是( )。

A. 使单链表至少有一个结点

B. 标识表结点中首结点的位置

C. 方便运算的实现

D. 说明单链表是线性表的链式存储

我的答案: C正确答案: C答案解析:链表的概念

8. 线性表以链接方式存储时,访问第i位置元素的时间复杂性为( )。

A. O(i)

B. O(1)

C. O(n)

D. O(i-1)

我的答案: C正确答案: C答案解析:链表的操作

9. 将长度为n的单向链表链接在长度为m的单向链表之后的算法的时间复杂度为( ) 。

A. O(1)

B. O(n)

C. O(m)

D. O(m+n)

我的答案: C正确答案: C答案解析:链表的操作

10. 在一个单链表中,已知指针p指向其中的某个结点,若在该结点前插入一个由指针s指向的结点,则需执行( )。

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

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

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

D. 仅靠已知条件无法实现

我的答案: D正确答案: D答案解析:链表的操作

11. 链表不具有的特点是( ) 。

A. 插入、删除不需要移动元素

B. 可随机访问任一元素

C. 不必事先估计存储空间

D. 所需空间与线性长度成正比

我的答案: B正确答案: B答案解析:链式存储结构的优缺点

12. 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。

A. 顺序表

B. 双链表

C. 带头结点的双循环链表

D. 单循环链表

我的答案: A正确答案: A答案解析:线性表的操作

13. 某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。

A. 单链表

B. 仅有头指针的单循环链表

C. 双链表

D. 仅有尾指针的单循环链表

我的答案: D正确答案: D答案解析:线性表的操作

14. 若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( )存储方式最节省运算时间。

A. 单链表

B. 双链表

C. 单循环链表

D. 带头结点的双循环链表

我的答案: D正确答案: D答案解析:线性表的操作

15. 若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式是( )。

A. 单链表

B. 双向链表

C. 单循环链表

D. 顺序表

我的答案: D正确答案: D

答案解析:线性表的操作

16. 非空循环单链表head的尾结点*p满足( )。

A. p->next=NULL

B. p=NULL

C. p->next=head

D. p=head

我的答案: C正确答案: C答案解析:循环链表

17. 设单循环链表中结点的结构为(data,next),且rear是指向非空的带头结点的单循环链表的尾结点的指针。若要删除链表的第一个结点,正确的操作是( )。

A. s=rear; rear=rear->next; free(s);

B. rear=rear->next; free(s);

C. rear=rear->next->next; free(s);

D. s=rear->next->next; rear->next->next=s->next; free(s);

我的答案: D正确答案: D答案解析:循环链表

18. 对于双向循环链表,在p指针所指的结点之后插入s指针所指结点的操作应为( )。

A. p->right=s; s->left=p; p->right->left=s; s->right=p->right;

B. p->right=s; p->right->left=s; s->left=p; s->right=p->right;

C. s->left=p; s->right=p->right; p->right=s; p->right->left=s;

D. s->left=p; s->right=p->right; p->right->left=s; p->right=s;

我的答案: D正确答案: D答案解析:循环链表

二、多选题(共1题,5分)

19某线性表用带头结点的循环单链表存储,头指针为head,当head->next->next->next==head成立时,线性表长度可能是( )。

A. 0.0

B. 1.0

C. 2.0

D. 3.0

我的答案: AC正确答案: AC答案解析:循环链表

完整版连接大学课程数据结构习题.pdf-算法与数据结构文档类资源-CSDN下载

举报

相关推荐

0 条评论