第二章作业题3-链表(2)(带头结点的循环链表)(选择和判断需要再看还有小孩报数问题)

这篇博客讨论了链表操作,特别是关于带头结点的循环链表。重点在于理解如何在不同类型的链表中进行插入和删除操作,如单链表、双向链表和循环链表。内容涵盖了选择题的解析,强调了寻找目标元素位置的重要性,以及在最后一个结点之后插入或删除的效率问题。
摘要由CSDN通过智能技术生成

看到底是要选择什么样的链表,这类题就是看需要找到的元素的位置在哪即可,删除和插入都要找到其前一个位置

一、选择题

1、

这里写图片描述
答案:A

解释:非空且循环,所以尾结点的下一个是头结点


2、

这里写图片描述

答案:D

解释:

在p后面插入某一个结点s的话,先改变要插入结点s的前后指针,再改变p的指针(不管是单链表还是双向链表都是这个样子的)

D是s的前指针指向p,s的下一个为p的下一个,注意这个时候p所指的下一个还没变,p所指的下一个的前一个是s,p的下一个是s(这个时候p所指的下一个才发生了变化)。


3、

这里写图片描述

答案:C
解析:
在这里插入图片描述

删除p所指的结点也就是p,所以就是p的前一个的下一个指向p的下一个,p的下一个的前一个指向p的前一个


4、

这里写图片描述

答案:B

解析:

(1)尾指针的定义: 尾指针,指向最后一个元素

(2)仅有头指针的单链表虽然可以直接获得第一个元素,但是想要获得最后一个元素却需要遍历整个链表。而仅有尾指针的单链表给出的是带有尾结点的单循环链表,这样就可以直接得到最后一个元素,想要得到第一个元素只需要再遍历一个元素就可以

(3)单链表只能往前移动
问题实质是用最快的时间找到 最后一个元素和头元素,根据尾指针通过O(1)的时间找到最后一个元素,然后根据链表是单循环,往前移动一个元素就是头元素,综上所述答案为:仅有尾指针的单循环链表


5、(第四题是最后一个元素,第五题是最后一个结点)

这里写图片描述

答案:D

解析:

(1)题目问的是哪一种方式更省时间

(2)在最后一个结点附近操作,所以要先找到最后一个结点附近

带头结点的双向循环链表,头结点的前驱即可找到最后一个结点,可以快速插入,再向前可以找到最后一二个结点快速删除
单链表找到链表尾部需要扫描整个链表
双链表找到链表尾部也需要扫描整个链表
单循环链表只有单向指针,找到链表尾部也需要扫描整个链表


6、

这里写图片描述

答案:C


7、

这里写图片描述

答案:C

解析:
(1)在最后一个结点之后插入一个结点需要找到最后一个结点,删除最后一个结点需要的是找到最后一个结点的前一个,所以最快的是C。


8、

这里写图片描述

答案:C


9、

这里写图片描述

答案:D

解析:

(1)在最后一个结点之后插入一个结点需要找到最后一个结点,删除最后一个结点需要的是找到最后一个结点的前一个,所以最快的是带表头附加结点的双循环链表,代表头附加结点而且双循环。

(2)问题出现在查找效率上,链表最常用的操作是在末尾插入节点和删除尾节点 在尾巴插入 删除操作。都需要知道他的前导,而单链表要查找到最有一个元素需要遍历全部链表,循环双链表直接可以查到前导。


10、

这里写图片描述

答案:D

解析:
在最后一个结点后插入或删除第一个结点,如果仅仅需要删除第一个结点的话,仅带头结点即可,但是在最后一个结点后插入,必须要找到最后一个元素,这个时候仅有尾指针的单循环链表最快。

前面有很多的选择题是在最后一个结点之后插入一个结点或删除第一个结点,这样的一般是有两种操作

(1)仅有尾指针的单循环链表

(2)带表头附加结点的双循环链表


11、

这里写图片描述

答案:B

解析:
删除最后一个的话,需要找到最后一个元素的前一个,因为是单链表,所以与长度有关。
在单链表最后一个元素后插入一个新元素,因为尾指针和最后一个元素有关,在最后一个元素后插入需要找到的是最后一个元素,所以时间复杂度为O(1)
删除单链表中第一个元素在单链表第一个元素前插入一个新元素与头指针有关


12、

这里写图片描述

答案:C

解析&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值