解题思路
此处撰写解题思路
代码
/**
* 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 dumNode=new ListNode(0);//伪头节点,在这之后添加数据
ListNode curNode=dumNode;//新链表的当前节点
while(l1!=null && l2!=null){
if(l1.val<l2.val){
curNode.next=l1;
l1=l1.next;
}else{//l1.val>=l2.val的时候
curNode.next=l2;
l2=l2.next;
}
curNode=curNode.next;
}
//当跳出循环时,代表l1为空,或者l2为空;
if(l1!=null){
curNode.next=l1;
}else{
curNode.next=l2;
}
return dumNode.next;
}
}
`#阅读题目可知,需要使用指针遍历两个链表,边遍历边比较大小,把较小的值存入新的链表`
#首先,由于新的链表并没有起始节点,因此先定义一个伪头节点。ListNode dumNode= new ListNode(0);`
#继续定义一个当前节点curNode,用于向新链表中添加节点。
#接下来遍历当前两个链表,当两个链表都不为空时,
#l1.val<l2.val,就把l1添加到curNode.next,l1后移,l1=l1.next;
#l1.val>=l2.val,就把l2添加到curNode.next,l2后移,l2=l2.next;
#把当前节点向下移动一个,持续向新链表中添加值
#当l1或l2其中一个为空时,l1不为空,就把l1添加到新链表,如果l2不为空,就把l2添加到新链表
#最后返回的时候,要返回伪头节点的下一个,才是新链表的第一个值。