剑指 Offer 25. 合并两个排序的链表

image.png

解题思路

//ListNode list=new ListNode(0) 初始化一个节点值为0的空节点,最常用最正规写法,new ListNode()默认为0(这其实不就是构造函数吗).相当于初始化一个空节点,=null仅仅声明,没有初始化,啥也没干
基本思路:
1:l1,l2链表都不为空,比较后不断移动
2:l1为空,l2不为空,将l2剩余值利用while循环加入到链表
3:同2
小细节
ListNode dum = new ListNode();//初始化一个节点,值默认为0
ListNode cur=dum;//为什么要这样呢?可以理解为dum和cur都是指针,指向一个节点(也可以理解为节点的等于代表两个节点的等价)。cur一会会指向合并后的链表,因为cur会不断的移动,但dum不会移动,dum其实就是代表合并后的链表,但一定注意返回的是dum.next,因为不能包括dum本身,本身是0

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
          ListNode dum = new ListNode();
         ListNode cur=dum;
         while(l1!=null&&l2!=null){
             if(l1.val

你可能感兴趣的:(剑指 Offer 25. 合并两个排序的链表)