风顺水流

never stop.

LintCode-剑指Offer-(174)删除链表中倒数第n个节点

/**
 * Definition of ListNode
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *         this->val = val;
 *         this->next = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     * @param head: The first node of linked list.
     * @param n: An integer.
     * @return: The head of linked list.
     */
    ListNode *removeNthFromEnd(ListNode *head, int n) {
        // write your code here

        if(head->next==NULL)//如果只有一个节点
            return NULL;
        ListNode* tmp=head;
        int count=0;
        while(tmp!=NULL){
            count++;
            tmp=tmp->next;
        }
        if(n==count)//如果要删除的是头结点
        {
            head=head->next;
            return head;
        }
        tmp=head;
        while(count>n+1){//否则找到节点,进行删除
            tmp=tmp->next;
            count--;
        }
        tmp->next=tmp->next->next;
        return head;
    }
};
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011464853/article/details/49967573
个人分类: LintCode
上一篇LintCode-剑指Offer-(245)子树
下一篇LintCode-剑指Offer-(165)合并两个排序链表
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭