码迷,mamicode.com
首页 > 其他好文 > 详细

Remove Nth Node From End of List

时间:2014-08-07 18:19:10      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   for   div   代码   log   

这道题可以用双指针的方法解,将两个指针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 };

 

Remove Nth Node From End of List,布布扣,bubuko.com

Remove Nth Node From End of List

标签:style   blog   color   io   for   div   代码   log   

原文地址:http://www.cnblogs.com/Kai-Xing/p/3897516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!