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

后端 未结 26 3033
有刺的猬
有刺的猬 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

            /* Simple/Elegant Iterative approach in Java*/    
            private static LinkedList mergeLists(LinkedList list1, LinkedList list2) {
                        Node head1 = list1.start;
                        Node head2 = list2.start;
                        if (list1.size == 0)
                        return list2;
                        if (list2.size == 0)
                        return list1;               
                        LinkedList mergeList = new LinkedList();
                        while (head1 != null && head2 != null) {
                            if (head1.getData() < head2.getData()) {
                                int data = head1.getData();
                                mergeList.insert(data);
                                head1 = head1.getNext();
                            } else {
                                int data = head2.getData();
                                mergeList.insert(data);
                                head2 = head2.getNext();
                            }
                        }
                        while (head1 != null) {
                            int data = head1.getData();
                            mergeList.insert(data);
                            head1 = head1.getNext();
                        }
                        while (head2 != null) {
                            int data = head2.getData();
                            mergeList.insert(data);
                            head2 = head2.getNext();
                        }
                        return mergeList;
                    }
    
    /* Build-In singly LinkedList class in Java*/
    class LinkedList {
        Node start;
        int size = 0;
    
        void insert(int data) {
            if (start == null)
                start = new Node(data);
            else {
                Node temp = start;
                while (temp.getNext() != null) {
                    temp = temp.getNext();
                }
                temp.setNext(new Node(data));
            }
            size++;
        }
    
        @Override
        public String toString() {
    
            String str = "";
            Node temp=start;
            while (temp != null) {
                str += temp.getData() + "-->";
                temp = temp.getNext();
            }
            return str;
        }
    
    }
    

提交回复
热议问题