面试题28:单链表一次遍历删除从后往前的第n个节点

 1 class Solution {
 2 public:
 3     ListNode *removeNthFromEnd(ListNode *head, int n) {
 4 
 5         ListNode* fake = new ListNode(-1);
 6         fake->next = head;
 7         ListNode* p = fake;
 8         while(n >0){
 9             p = p->next;
10             n--;
11         }
12 
13         ListNode* cur = fake;
14         while(p->next){
15             p = p->next;
16             cur = cur->next;
17         }
18         ListNode* tmp = cur->next;
19         cur->next = cur->next->next;
20         delete tmp;
21 
22         return fake->next;
23     }
24 };
原文地址:https://www.cnblogs.com/wxquare/p/6877211.html