這是合併兩個排序鏈表的代碼。現在我的問題在於給出的合併函數。我們爲什麼將new_node1引用到new_node。直接在函數中使用new_node1而不是做 「Node new_node = new_node1;」 (無論如何,我嘗試直接使用,但它沒有生成所需的輸出,它只是生成合並列表的最後一項)new_node對象是否使用默認構造函數?詳細的解釋將非常有用。提前感謝。啓動一個對象到其他對象
static class Node{
int data;
Node next;
Node(int num){
data=num;
next=null;
}
}
// Function for merging two sorted linked list
public void merge(Linkedlist list1,Linkedlist list2){
Linkedlist l=new Linkedlist();
Node new_node1=new Node(0);
Node new_node=new_node1; //This line of code is my doubt!
while(list1.head!=null || list2.head!=null){
if(list1.head!=null && list2.head!=null){
if(list1.head.data<=list2.head.data){
new_node.next=list1.head; // what difference it makes by using new_node.next instead of new_node1
list1.head=list1.head.next;
}
else{
new_node.next=list2.head;
list2.head=list2.head.next;
}
}
else if(list1.head==null){
new_node.next=list2.head;
list2.head=list2.head.next;
}
else if(list2.head==null){
new_node.next=list1.head;
list1.head=list1.head.next;
}
new_node=new_node.next;
//new_node1=new_node1.next;
}
l.printlist(new_node1);
}
由於參考變量。我知道了 –
你可以告訴current_node將使用什麼構造函數嗎?它是定義我的默認構造函數還是構造函數? –
沒有構建新對象。沒有構造函數被調用。這兩個變量都指向同一個對象,該對象只在Node節點head_node = new Node(0);''一行上構建一次。 'current_node'只是指向'head_node'指向的同一個對象。 –