链表 part02
2026.01.31 第四天
24 两两交换链表中的节点
比较简单,画图即可搞清楚。
首先建立一个虚拟头节点,后面挂载传进函数的链表
而后从虚拟头节点后面第一个节点开始两个两个地判断是否有两个元素,若无直接结束,若有保存好两个节点的地址并相应改变指针域皆可,找个草稿纸画图,同时实现代码会比较清楚。
最后返回虚拟头节点后面第一个节点即可。
虚拟头节点立大功。
19 删除链表的倒数第N个节点
由于是单向链表,未知长度,还要操作倒数第N个节点,所以涉及了一个尾部发现链表结束的信息和倒数第N个节点地址的信息,相当于遇到了一个固定长度区间的问题,于是想到使用双指针进行求解。
首先让快指针走N+1步,而后快慢指针一起走,这样当快指针遇到链表尾部nullptr时,慢指针正好指向倒数第N+1个节点,此时慢指针指针域正好保存有倒数第N个节点的地址信息,可以很方便地进行删除。
本题还是用到了虚拟头节点,这个真的很方便也很重要!!!
涉及链表的增删改要使用虚拟头节点。
让快指针先行动N+1次可以用while(n--)~

浙公网安备 33010602011771号