算法通关村第一关——链表青铜挑战笔记

单链表增加元素,首部、中间和尾部分别会有什么问题,该如何处理?

(1)在链表的首部插入节点
链表表头插入新节点时,我们需要创建一个新的节点newNode,最主要的就是要把新节点的next指向head头部节点,之后遍历新链表从newNode开始一路next下去就可以了。如图:

个人理解:在头部插入节点即新节点为头部节点,首先要找到链表的head头部节点,新节点后继只想head的节点,head更新为新节点为头部节点,然后往下遍历输出链表。如链表为空则直接插入节点为头部节点

(2)在链表中间插入节点
在中间位置插入,我们必须先遍历找到要插入的位置,然后将当前位置接入到前驱节点和后继节点之间,但是到了该位置之后我们却不能获得前驱节点了,也就无法将节点接入进来,因此,我们要在目标节点的前一个位置停下来,然后用cur.next的值而不是cur的值来判断,这是链表最常用的策略。由于每个节点都只有一个next,因此执行了node(15)=new之后,节点15和7之间的连线就自动断开了。如图:

在新增new的时候,在7前面插入,要让15的后继指向new,new的后续指向7,顺序不能颠倒,因为单链表是环环相扣,核心是一个节点只能有一个后续的,所以顺序不能颠倒。
(3)在链表的尾部插入节点
我们只要将尾部节点指向新节点就可以了。如图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值