0
需要了解如何更新sortingPtr變量。如何在下面的代碼中更新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變量中合併列表的頭部。但我想了解如何更新sortingPtr變量以返回上述代碼中合併列表的頭部。
值'sortingPtr = head1;'? –
但是head1最終會有值90和100. sotringPtr將會有合併列表 – Lizzie