T19 7月2日 删除链表的倒数第N个节点
这里主要是看的代码随想录的方法,还没有自己的思路
要删除第N个节点,也就是要让操作指针指向第N-1个节点
首先可以创建虚拟节点,方便我们不需要对操作的节点是不是头节点进行特殊判断
创建两个指针,一个快指针,一个慢指针。快指针先移动N个,然后在快慢指针一起移动。
* Definition for singly-linked list.
struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
struct ListNode* dummy = malloc(sizeof(struct ListNode)); #创建虚拟头节点
dummy->next=head; #虚拟头节点连接头节点
struct ListNode* fast =dummy;
struct ListNode* slow = du mmy; #创建两个指针,指向虚拟头节点
int count=0;
while(fast->next!=NULL)
{
if(count<n)
count++;
else slow=slow->next;
fast=fast->next;
}
slow->next=slow->next->next; #删除节点
return dummy->next;
}
最后感想:不是自己想出来的,看的别人的题解。这是第一篇解题博客,希望能一直坚持到大学毕业
问题:这段代码的if循环是什么意思啊?有哪位大神可以为我解答一下吗?谢谢