代码随想录Day03|移除链表元素|设计链表|反转链表
移除链表元素
解题思路
通过设置一个虚拟头指针,然后遍历整个链表,找到需要删除的内存移除就行,注意需要修改前一个链表的下一个指向
知识点
链表,指针,内存
心得
我没有用虚拟头指针,所以写的代码较为复杂。
【二刷】注意指针向下一个遍历的时候,如果那个值是我们要删除的值,就进行删除操作,否则继续往下遍历,不能删除完后在这次循环中再遍历一次。
设计链表
解题思路
这是实现接口,考验基本功,一定要考虑头节点是否为空,以及指针是否不为空
知识点
链表的理解
心得
感觉基本功有点差,没有使用虚拟头指针,代码写的太复杂了,而且没有记录整个链表的大小
【二刷】在addatIndex函数中,注意一定要算好链表的长度,当我们在这个函数内调用完addAtHead和addAtTail后就不应该额外再加一次链表的长度
题目3
解题思路
双指针,不断替换链表的next来进行反转。
我的思路是通过交换链表的值来进行反转,在循环中,头和尾的值进行互换,这样就不用考虑next会指向null的情况,但是代码会更为复杂
知识点
双指针
心得
双指针不够熟练,没有想到可以保存链表的下个节点
【二刷】注意头节点的next要设置为nullptr,否则反转后会产生循环链表的问题