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

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

 

链表表头插入

        问题:执行newNode=head后,容易忘记head重新指向表头

        处理:使用head=newNode让head重新指向表头

链表中间插入

        问题:我们遍历找要插入的位置时,需要在目标的前一个位置停下来,也就是前驱结点cur。插入操作前用cur.next的值判断目标的前一个位置而不是cur的值判断,而插入的时候,容易因为插入过程中插入结点的前后指向顺序颠倒而发生错误。

        处理:先处理插入结点指向后驱结点new.next=cur.next,然后再处理前驱结点指向插入结点cur.next=new。而为什么不能颠倒呢?因为每个结点都只有一个next,先执行cur.next=new的话,链表中原先的cur.next与cur的连接就会断开,new就指向不到链表原先的cur.next

单链表结尾插入结点

        问题:结尾插入结点比较简单,没什么常见的问题。

        处理:只需要将尾结点指向新结点就行了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值