题解 | #合并两个排序的链表#
合并两个排序的链表
http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { ListNode list3 = new ListNode(0);//注意节点值为0,该点类似于头指针。 ListNode head = list3; //建立一个新表的头结点,注意同时要建一个类似于哨兵的节点始终指向新表头结点 //因为随着新表头节点遍历,是一去不复返的,如果不创立指向头结点的节点,会无法返回新链表 while (list1 != null && list2 != null) {//如果当前节点同时不为空,则进行比较 if (list1.val >= list2.val) { //通过对比,较小的连接到新表头节点 list3.next = list2; list2 = list2.next; list3 = list3.next; } else { list3.next = list1; list1 = list1.next; list3 = list3.next; } }//以上新表头结点哨兵head不动,list1,2,3遍历。if (list1 != null) { list3.next = list1; } if (list2 != null) { list3.next = list2; } return head.next;//这里一定要注意加next,因为他是哨兵(头指针),他指的位置(head=list3)其实是不该有数据的。
} }