美文网首页
删除链表中倒数第n个节点

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

作者: 杰米 | 来源:发表于2016-10-07 21:09 被阅读172次
    给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。
    
    
    
     注意事项
    
    链表中的节点个数大于等于n
    
    您在真实的面试中是否遇到过这个题? Yes
    样例
    给出链表1->2->3->4->5->null和 n = 2.
    
    删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.
    
    /**
     * 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
            ListNode* start = new ListNode(0);
            start -> next = head;
            ListNode* fast = start;
            ListNode* slow = start;
            int i = 1;
            while(fast != NULL && i<=n) {
                fast = fast->next;
                i++;
            }
            while(fast->next != NULL) {
                fast  = fast->next;
                slow = slow->next;
            }
            
            slow->next = slow->next->next;
            return start -> next;
            
        }
    };
    
    
    
    

    相关文章

      网友评论

          本文标题:删除链表中倒数第n个节点

          本文链接:https://www.haomeiwen.com/subject/okayyttx.html