public ListNode merge2Lists(ListNode list1, ListNode list2) {
		if (list1 == null && list2 == null)
			return null;
		if (list1 == null)
			return list2;
		if (list2 == null)
			return list1;
		ListNode head1 = null;
		ListNode head2 = null;
		if (list1.val <= list2.val) {
			head1 = list1;
			head2 = list2;
		} else {
			head1 = list2;
			head2 = list1;
		}
		ListNode p1 = head1;
		ListNode p2 = head2;
		ListNode pre1 = head1;
		p1 = p1.next;
		while (p1 != null && p2 != null) {
			if (p1.val > p2.val) {
				ListNode tmp = p2;
				p2 = p2.next;
				tmp.next = p1;
				pre1.next = tmp;
				pre1 = tmp;
			} else {
				pre1 = p1;
				p1 = p1.next;
			}
		}
		if (p1 == null) {
			pre1.next = p2;
		}
		return head1;
	}