Interview Question: Merge two sorted singly linked lists without creating new nodes

后端 未结 26 2936
有刺的猬
有刺的猬 2020-12-02 04:09

This is a programming question asked during a written test for an interview. \"You have two singly linked lists that are already sorted, you have to merge them and return a

26条回答
  •  离开以前
    2020-12-02 04:33

    // Common code for insert at the end
            private void insertEnd(int data) {
                    Node newNode = new Node(data);
                    if (head == null) {
                        newNode.next = head;
                        head = tail = newNode;
                        return;
                    }
                    Node tempNode = tail;
                    tempNode.next = newNode;
                    tail = newNode;
                }
    
        private void mergerTwoSortedListInAscOrder(Node tempNode1, Node tempNode2) {
    
                if (tempNode1 == null && tempNode2 == null)
                    return;
                if (tempNode1 == null) {
                    head3 = tempNode2;
                    return;
                }
                if (tempNode2 == null) {
                    head3 = tempNode1;
                    return;
                }
    
                while (tempNode1 != null && tempNode2 != null) {
    
                    if (tempNode1.mData < tempNode2.mData) {
                        insertEndForHead3(tempNode1.mData);
                        tempNode1 = tempNode1.next;
                    } else if (tempNode1.mData > tempNode2.mData) {
                        insertEndForHead3(tempNode2.mData);
                        tempNode2 = tempNode2.next;
                    } else {
                        insertEndForHead3(tempNode1.mData);
                        insertEndForHead3(tempNode2.mData);
                        tempNode1 = tempNode1.next;
                        tempNode2 = tempNode2.next;
                    }
    
                }
                if (tempNode1 != null) {
                    while (tempNode1 != null) {
                        insertEndForHead3(tempNode1.mData);
                        tempNode1 = tempNode1.next;
                    }
                }
                if (tempNode2 != null) {
                    while (tempNode2 != null) {
                        insertEndForHead3(tempNode2.mData);
                        tempNode2 = tempNode2.next;
                    }
                }
            }
    

    :)GlbMP

提交回复
热议问题