概述
单链表中的节点应该具有两个属性:val 和 next。
- val 是当前节点的值
- next 是指向下一个节点的指针/引用
-
遍历l2,插入l1对应的位置。
要为l1创建一个虚拟头结点,这样如果l2的最小值小于l1的最小值就可以头插了。l1链表 : l1 在左 , p1 在右 , l1从虚拟头结点开始, p1紧跟其后。
l2链表 : l2 在左 , p2 在右 , l2从第一个结点开始, p2紧跟其后。每次比较 l2所指结点的值 与 p1所指结点的值 , 若满足l2 <= p1 , 则把l2 插到 p1 前面。 然后l2 与 p2 后移一位。
否则 l1 与 p1 后移一位。struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;
struct ListNode newhead, *p1, *p2;//3个形参//声明结构体
newhead.next = l1;//指向下一个节点的指针位置相同//头//结构体下的成员变量
l1 = &newhead;//尾//把l1的地址复制过来但是数值没有过来,数值还是空的 -
//首尾节点相等
while(l2 != NULL) {
p1 = l1->next;//结构体指针下的成员变量->
p2 = l2->next;
if(p1 == NULL) {
l1->next = l2;
break;
}
if(l2->val <= p1->val) { -
l2->next = l1->next;//交换顺序
l1->next = l2;//l1->l2->l1
l2 = p2;
}
l1 = l1->next;
}
return newhead.next;
}
最后
以上就是欢喜天空为你收集整理的链表总结(力扣:合并两个有序链表)的全部内容,希望文章能够帮你解决链表总结(力扣:合并两个有序链表)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复