龙空技术网

力扣21.合并两个有序链表

一曲流年似水 275

前言:

而今你们对“链表合并流程图”都比较关注,小伙伴们都需要剖析一些“链表合并流程图”的相关文章。那么小编同时在网摘上汇集了一些有关“链表合并流程图””的相关知识,希望你们能喜欢,姐妹们快快来了解一下吧!

想法:

1、要合并两个有序的链表,首先想到要新生成第三个链表,所以要新建个虚拟节点;

2、新链表还需要一个指针,标记新链表的节点位置;

3、还需要两个指针,标记这两个有序链表的节点位置;

4、过程就是把其中一个链表的节点完全接到新链表为止,然后把另一个链表剩余的接上,返回虚拟节点的下一个节点即可。

public ListNode mergeTwoLists(ListNode p1, ListNode p2) {    ListNode vhead = new ListNode(-1);//建个虚拟头结点方便连接后续节点    ListNode p = vhead;//变量节点,要往上面接节点    while (p1!=null && p2!=null){//都不为null的时候进行循环        if(p1.val > p2.val){            p.next = p2;//接p2节点            p2 = p2.next;//p2前移        }else {            p.next = p1;//接p1节点            p1 = p1.next;//p1前移        }        p = p.next;//无论接哪个节点,合并的链表都需要前移    }    if(p1 != null){//p2链表接没了        p.next = p1;//把p1剩下的节点接上    }    if(p2 != null){//p1链表接没了        p.next = p2;//把p2剩下的节点接上    }    return vhead.next;//返回虚拟节点的后面节点就是合并后的}

标签: #链表合并流程图