public static void Main()
var listNode1 = new ListNode(1, new ListNode(2, new ListNode(4)));
var listNode2 = new ListNode(1, new ListNode(3, new ListNode(4)));
var result = new ListsMerger().Merge(listNode1, listNode2);
public static void PrintListNode(ListNode listNode)
Console.WriteLine(listNode.val);
listNode = listNode.next;
public ListNode Merge(ListNode listNode1, ListNode listNode2)
if (listNode1.val < listNode2.val)
listNode1 = listNode1.next;
listNode2 = listNode2.next;
while(listNode1 != null || listNode2 != null)
if(listNode1 == null && listNode2 != null)
tmpListNode.next = listNode2;
listNode2 = listNode2.next;
else if(listNode2 == null && listNode1 != null)
tmpListNode.next = listNode1;
listNode1 = listNode1.next;
else if (listNode1.val < listNode2.val)
tmpListNode.next = listNode1;
listNode1 = listNode1.next;
tmpListNode.next = listNode2;
listNode2 = listNode2.next;
tmpListNode = tmpListNode.next;
public ListNode(int val=0, ListNode next=null)