• 1000 ListNode, где он затем установит свойство
next на ListNode, который будет добавлен. Я думаю, у меня есть вопрос, как не теряется ГОЛОВА списка при вызове этого метода? Если вы пройдетесь по коду, кажется, что должен быть возвращен связанный список только с двумя узлами. Я воссоздал проблему в своей среде IDE и решил ее с помощью отладчика, но это все еще кажется неясным. Я опубликую полный контекст своего кода ниже на случай, если мне что-то не нужно учитывать. Спасибо за помощь!
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode resultHEAD = new ListNode();
ListNode pointer1 = l1;
ListNode pointer2 = l2;
if (l1 == null)
return l2;
else if (l2 == null)
return l1;
while (pointer1 != null && pointer2 != null)
{
if (pointer1.val < pointer2.val)
{
appendToTail(resultHEAD, pointer1.val);
pointer1 = pointer1.next;
}
else if (pointer1.val > pointer2.val)
{
appendToTail(resultHEAD, pointer2.val);
pointer2 = pointer2.next;
}
else
{
// Arbitrarily select from l1
appendToTail(resultHEAD, pointer1.val);
pointer1 = pointer1.next;
}
}
// Check which list is empty and append the rest of that list
if (pointer1 != null)
{
while(pointer1 != null)
{
appendToTail(resultHEAD, pointer1.val);
pointer1 = pointer1.next;
}
}
else
{
while(pointer2 != null)
{
appendToTail(resultHEAD, pointer2.val);
pointer2 = pointer2.next;
}
}
return resultHEAD.next;
}
public ListNode appendToTail (ListNode head, int valueOfNodeToAdd)
{
ListNode traveller = head;
while (traveller.next != null)
{
traveller = traveller.next;
}
traveller.next = new ListNode(valueOfNodeToAdd);
return traveller;
}
}