题目:https://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/
题意:找到链表中,倒数第n个节点
思路:使用双指针,先让双指针分开n-1个单位长度,一起前进即可
/**
* 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 *p = head,*q =head,*pPre = NULL;
if(head == NULL)
return head;
for(int i =0;i <n-1 ;i++)
q = q->next;
while(q->next){
pPre = p;
p = p->next;
q = q->next;
}
if(pPre ==NULL){
head =head ->next;
delete p;
}
else{
pPre ->next = p->next;
delete p;
}
return head;
}
};