Это код для объединения двух отсортированных связанных списков. Теперь мой вопрос заключается в заданной функции слияния. Почему мы ссылаемся на 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'. –