如何在下面的代码中更新sortingPtr变量?

时间:2017-07-28 07:19:54

标签: java data-structures linked-list

需要了解sortingPtr变量如何更新。

public class MergeSortedLinkedLists {

        public static Node mergeLinkedLists(Node head1, Node head2, Node mergedHead){
            Node sortingPtr = null;
            if(head1 == null && head2 != null){
                return head2;
            }
            if(head1 == null && head2 == null){
                return mergedHead;
            }
            while(head1 != null && head2 != null){
                System.out.println("head1.data - " + head1.data);
                System.out.println("head2.data - " + head2.data);
                System.out.println("sortingPtr - " + sortingPtr);
                /*while(sortingPtr != null){
                    System.out.print("sortingPtr.data - " + sortingPtr.data + " ");
                    sortingPtr = sortingPtr.next;
                }*/
                System.out.println();
                if(head1.data < head2.data){
                    System.out.println("head1 < head2");
                    if(mergedHead != null){
                        mergedHead.next = head1;
                        mergedHead = head1;
                    } else{
                        sortingPtr = head1;
                        mergedHead = head1;
                    }
                    head1 = head1.next;
                } else{
                    System.out.println("head2 < head1");
                    if(mergedHead != null){
                        mergedHead.next = head2;
                        mergedHead = head2;
                    } else{ 
                        sortingPtr = head2;
                        mergedHead = head2;
                    }
                    head2 = head2.next;
                }
            }

            if(head1 == null){
                mergedHead.next = head2;
            }
            if(head2 == null){
                mergedHead.next = head1;
            }
            return sortingPtr;
        }

        public static void main(String[] args) {
            SinglyLinkedList linkedList1 = new SinglyLinkedList();
            linkedList1.head = linkedList1.new Node(10);
            linkedList1.head.next = linkedList1.new Node(50);
            linkedList1.head.next.next = linkedList1.new Node(70);
            linkedList1.head.next.next.next = linkedList1.new Node(90);
            linkedList1.head.next.next.next.next = linkedList1.new Node(100);

            SinglyLinkedList linkedList2 = new SinglyLinkedList();
            linkedList2.head = linkedList2.new Node(20);
            linkedList2.head.next = linkedList2.new Node(30);
            linkedList2.head.next.next = linkedList2.new Node(40);
            linkedList2.head.next.next.next = linkedList2.new Node(60);
            linkedList2.head.next.next.next.next = linkedList2.new Node(80);

            SinglyLinkedList mergedList = new SinglyLinkedList();
            mergedList.head = null;
            mergedList.head = mergeLinkedLists(linkedList1.head, linkedList2.head, mergedList.head);

            Node head = mergedList.head;
            while(head != null){
                System.out.print(head.data + " ");
                head = head.next;
            }
        }
    }

    class SinglyLinkedList{
        Node head;
        class Node{
            int data;
            Node next;

            Node(int data){
                this.data = data;
                next = null;
            }
        }
    }

我正在尝试合并2个已排序的链接列表。 mergeLinkedLists方法返回sortingPtr变量中合并列表的头部。但我想了解sortedPtr变量如何更新以返回上述代码中合并列表的头部。

1 个答案:

答案 0 :(得分:0)

else{
                        sortingPtr = head1;
                        mergedHead = head1;
                    }

else{ 
                        sortingPtr = head2;
                        mergedHead = head2;
                    }

这些代码块确保当mergedHead为null(即合并过程尚未开始)时,我们将sortingPtr的值设置为mergedHead的值