题目连接:Leetcode 019 Remove Nth Node From End of List
解题思路:生成两个指针,一个指向头,一个指向第n个结点,然后同时移动,当第二个指针指向空时,前一个指针指向的位置即为需要删除的结点。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* ans = head;
ListNode* move = head;
while (n--) move = move->next;
if (move == NULL) return ans->next;
while (move->next != NULL) { head = head->next, move = move->next; }
head->next = head->next->next;
return ans;
}
};