Title Description:
Enter two incrementally sorted lists, merge the two linked lists, and make the nodes in the new list still in ascending order
Ideas:
Recursively scan two arrays each time you point the next pointer to a smaller value for the current node in the linked list
public static ListNode mergeorderedlist (ListNode list1, ListNode list2) {
if (List1 = = null) {
return list2;
}
if (list2==null) {
return list1;
}
ListNode node;
if (List1.data < list2.data) {
node = List1;
Node.next = Mergeorderedlist (List1.next, List2);
} else {
node = list2;
Node.next = Mergeorderedlist (List1, List2.next);
}
return node;
}
public class Mergeorderedlisttest extends Basetest {private ListNode list1;
Private ListNode List2;
@Override @Before public void SetUp () throws Exception {Super.setup ();
int[] data1 = new Int[]{1, 2, 3, 4, 5};
int[] data2 = new int[]{2, 3, 4, 7, 8};
List1 = Initlist (data1);
List2 = Initlist (data2); } @Test public void Test () throws Exception {ListNode ListNode = mergeorderedlist.mergeorderedlist (list1
, List2);
Printlist (ListNode);
} private ListNode Initlist (int[] data) {listnode[] node = new Listnode[data.length];
for (int i = 0; i < node.length; i++) {Node[i] = new ListNode (Data[i]);
} for (int i = 0; i < node.length-1; i++) {node[i].next = node[i + 1];
} return node[0];
} private void Printlist (ListNode node) {while (node! = null) {System.out.print (node.data+ ""); node = Node.next; }
}
}
Output results
1 2 2 3 3 4 4 5 7 8