题解 | #合并两个排序的链表#

合并两个排序的链表

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)其实是不该有数据的。
    } }

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务