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

Remove Nth Node From End of List

时间:2014-08-06 21:58:02      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:blog   io   for   问题   div   new   log   ad   

问题:删除距离末尾n个距离的结点
分析:先找出距离末尾n个距离的结点其距离开始的距离多少,然后再删除

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    int front;
    int dfs(ListNode *head,int n,int step)
    {
        if(head==NULL) return 0;
        int h=dfs(head->next,n,step+1)+1; 
        if(h==n) { front=step;}
        return h;
    }
    ListNode *removeNthFromEnd(ListNode *head, int n) {
        if(head==NULL) return head;
        front=0;
        dfs(head,n,1);
        ListNode *help = new ListNode(0);
        help->next=head;
        int t=1;
        ListNode *ret=help;
        while(1)
        {
            if(t==front) 
            {
                ret->next=head->next;
                delete head;
                break;
            }
            ret=ret->next;
            head=head->next;
            t++;
        }
        return help->next;
    }
};

  

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

Remove Nth Node From End of List

标签:blog   io   for   问题   div   new   log   ad   

原文地址:http://www.cnblogs.com/zsboy/p/3895326.html

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