//两个有序链表,合并成一个链表
public class Code01_MergeTwoSortedLinkedList {
public static class ListNode {
public int val;
public ListNode next;
}
public static ListNode MergeTwoSortedLinkedList(ListNode head1,ListNode head2){
if(head1 == null || head2 == null){
return head1 == null ?head2:head1;
}
//这里确定那个链表的头部的值小,那个小,那个作为头部返回
ListNode head = head1.val < head2.val ? head1:head2;
//这里设置变量,因为head头部已经定下来,所以cur1就是头部节点的下一个
ListNode cur1 = head.next;
//设置变量cur2,为大头节点
ListNode cur2 = head == head1 ?head2:head1;
//下面串节点用的,默认头部为第一个
ListNode pre = head;
while (cur1 != null && cur2 != null){
//if else里面的判断,就是谁的值小,谁让pre.next指上,并且自己往下移动
if(cur1.val <= cur2.val){
pre.next = cur1;
cur1 = cur1.next;
}else{
pre.next = cur2;
cur2 = cur2.next;
}
//同时pre也向下移动,为下次循环指向做准备
pre = pre.next;
}
pre.next = cur1 ==null?cur2:cur1;
return head;
}
}
链表(两个有序链表,合并成一个有序链表)
最新推荐文章于 2023-04-23 16:12:34 发布