LeetCode19.删除链表的倒数第N个节点(C语言)
题目:
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
简单画图分析:
使用双指针进行处理,同时注意对NULL值的处理。
(1) 建立两个指针,同时指向头结点;
(2) first向后走n步,假设n = 2,所以first由(1)中位置移动到(2)中位置;
(3) first和second同时向后走,当first走到末尾时终止;
(4) 将second指向second的next的next。
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct Li