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

#19 Remove Nth Node From End of List

时间:2015-04-23 17:17:07      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

Given a linked list, remove the nth node from the end of list and return its head.

For example.

Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.

题目很简单,设置两个指针相隔n-1,一起走,走后一个指针走到头时,前一个指针正好在要删除的节点位置。要注意链表长度小于n的情况。

我的代码:

/**
* 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) {
        if (head == NULL || n == 0)
            return head;
        ListNode *pf, *pl,*temp=NULL;
        pf = pl = head;
        int i = 0;
        for (; i < n-1; ++i){
            if (pl->next)
                pl = pl->next;
            else
                return head;
        }
        while (pl->next){
            temp = pf;
            pl = pl->next;
            pf = pf->next;
        }
        if (temp == NULL){
            head = pf->next;
            delete pf;
        }
        else{
            temp->next = pf->next;
            delete pf;
        }
        return head;
    }
};

 

#19 Remove Nth Node From End of List

标签:

原文地址:http://www.cnblogs.com/Scorpio989/p/4450913.html

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