删除单链表倒数第n个节点

删除链表的倒数第n个节点

http://www.nowcoder.com/questionTerminal/f95dcdafbde44b22a6d741baf71653f6

思路:首先遍历一次得到链表长度 len , 要删除的结点便是正数第(len - n)个。考虑删除头结点(len - n == 0)的特例,直接返回head->next,否则遍历到第(len - n)- 1个结点,将其指向 ->next->next,返回head。

    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode *cur = head;
        int len = 0;
        while(cur != nullptr){
            cur = cur->next;
            ++len;
        }
        if(len == n) return head->next;
        cur = head;
        while(len - n > 1){
            cur = cur->next;
            --len;
        }
        ListNode *temp = cur->next;
        return head;
    }
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务