当前位置: 首页> 健康> 知识 > LeetCode 19.删除链表的倒数第N个结点 C写法

LeetCode 19.删除链表的倒数第N个结点 C写法

时间:2025/7/14 11:46:28来源:https://blog.csdn.net/m0_63816268/article/details/141098048 浏览次数:0次

LeetCode 19.删除链表的倒数第N个结点 C写法

image-20240810221320537

思路🤔:

  我们先创建一个哨兵位,这样便于我们头删,然后利用双指针,一个指针先走n+1步(带哨兵位要多走一步),然后两个指针再一起走,当先走的指针结束,那么后走的指针下一个就是我们要删除的结点,最后用新的头结点接收即可。

calculate

代码🔎:

struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {struct ListNode* guard = (struct ListNode*)malloc(sizeof(struct ListNode)); //创建哨兵位guard->next = head;struct ListNode* fast = guard;struct ListNode* slow = guard;while(n >= 0) //先走n+1步{fast = fast->next;n--;}while(fast != NULL) //fast走到空就结束,此时slow刚好在删除的前一个{slow = slow->next;fast = fast->next;}struct ListNode* del = slow->next;slow->next = slow->next->next;  //更新结点free(del);struct ListNode* newhead = guard->next; //创建新头free(guard);return newhead;
}

image-20240810225434964

关键字:LeetCode 19.删除链表的倒数第N个结点 C写法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: