Question: My merge function only prints the second linked list for some reason. here is my code: class Node{ int data; Node next; Node(int d){ data
My merge function only prints the second linked list for some reason. here is my code:
class Node{ int data; Node next; Node(int d){ data = d; next = null; } }
public class LinkedList2{ Node head; Node tail; public static void main(String[] args) { LinkedList2 list = new LinkedList2(); LinkedList2 list2 = new LinkedList2(); LinkedList2 list3 = new LinkedList2(); int arr[] = {3,5,6,7,9}; int arr2[] = {1,3,5,7,9}; Node curr = null; for(int i = 0; i < arr.length; i++) { Node temp = new Node(arr[i]); if(list.head == null) { list.head = temp; curr = temp; } else { curr.next = temp; curr = curr.next; } } for(int i = 0; i < arr2.length; i++) { Node temp = new Node(arr2[i]); if(list2.head == null) { list2.head = temp; curr = temp; } else { curr.next = temp; curr = curr.next; } }public class LinkedList2{ Node head; Node tail; public static void main(String[] args) { LinkedList2 list = new LinkedList2(); LinkedList2 list2 = new LinkedList2(); LinkedList2 list3 = new LinkedList2(); int arr[] = {3,5,6,7,9}; int arr2[] = {1,3,5,7,9}; Node curr = null; for(int i = 0; i < arr.length; i++) { Node temp = new Node(arr[i]); if(list.head == null) { list.head = temp; curr = temp; } else { curr.next = temp; curr = curr.next; } } for(int i = 0; i < arr2.length; i++) { Node temp = new Node(arr2[i]); if(list2.head == null) { list2.head = temp; curr = temp; } else { curr.next = temp; curr = curr.next; } }public class LinkedList2{ Node head; Node tail; public static void main(String[] args) { LinkedList2 list = new LinkedList2(); LinkedList2 list2 = new LinkedList2(); LinkedList2 list3 = new LinkedList2(); int arr[] = {3,5,6,7,9}; int arr2[] = {1,3,5,7,9}; Node curr = null; for(int i = 0; i < arr.length; i++) { Node temp = new Node(arr[i]); if(list.head == null) { list.head = temp; curr = temp; } else { curr.next = temp; curr = curr.next; } } for(int i = 0; i < arr2.length; i++) { Node temp = new Node(arr2[i]); if(list2.head == null) { list2.head = temp; curr = temp; } else { curr.next = temp; curr = curr.next; } }
list3.merge2(list,list2);
list3.print();
}
public void merge2(LinkedList2 list, LinkedList2 list2) { Node p = null; Node p1 = list.head; Node p2 = list2.head; while(p1 != null || p2 != null){ if (p1 != null && p2 != null) { if(p1.data < p2.data){ p = p1; p1 = p2.next; } else{ p = p2; p2 = p2.next; } } else if (p1 != null) { p = p1; p1 = p1.next; } else { p = p2; p2 = p2.next; } if(head == null) { head = p; } p = p.next; } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
