关于 移除链表元素
- 要把哪个元素排除出链表 只需要使得没有指向它的指针 如果cur指向2那么只能更改2的next指针 对删除它本身没有作用
- 注意点:指针问题, 大家今天写删除链表题的时候经常少了else判断, 链表首要想好指针是怎么移动的,是否会移动会访问null即可
- 大家遇到问题的时候对于链表问题可以多用笔画画图,这样会加深你对指针和节点实体的理解,代码的鲁棒性如何通常可以利用边界case尝试,今天很多人都是因为空指针的错误其实大多是一些if,while中不小心取到了空和循环次数和条件有关这种可以设计简单case比如1-2-3-null这种手动画图走一遍自己的代码就解决了。
- 是否要添加虚拟头结点 :
虚拟头结点的主要目的是为了避免对头结点的特殊处理;这个处理就指的是修改操作。所以可以这样:涉及到对链表修改(如插入,删除,移动)的,都加个dummy,只是遍历取点就可以不用加 - 大家空针异常优先在节点前debug判断一下是否为null来定位!
- 关于递归来做这道题 可以看看这边博客的思维三道题套路解决递归问题 | lyl's blog
关于 设计链表
- 设计链表因为调用了很多函数,一旦出错可能不知道调试从何下手,因此建议把代码放到本地IDE上,一个一个函数去测试看出错在什么地方