首页 > 代码库 > Remove Nth Node From End of List
Remove Nth Node From End of List
这道题可以用双指针的方法解,将两个指针p,q的距离保持在n-1,然后移动q到List的最后一个元素,那么此时p指向的便是the Nth node from the end。要删除这个node,要分两种情况,一种是该node为head,另一种该node是中间node。对于第一种情况,可以简单的采用以下操作: head = head->next。对于第二种情况,我们需要引入额外的一个指针prev_p指向p的前一个node,这样便可以通过prev_p->next = prev_p->next->next删除该node。代码如下:
1 class Solution { 2 public: 3 ListNode *removeNthFromEnd(ListNode *head, int n) { 4 ListNode * p = head, * q = head, * prev_p = NULL; 5 for(int i = 0; i < n-1; i++) 6 q = q->next; 7 for(;q->next;q = q->next, prev_p = p,p = p->next); 8 if(p == head) head = head->next; 9 else 10 prev_p->next = p->next;11 return head;12 }13 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。