
合并两个有序链表

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *l3=new ListNode(0);
ListNode *head=l3;
while(l1&&l2)
{
if(l1->val<l2->val)
{
l3->next=l1;
l3=l3->next;
l1=l1->next;
}
else
{
l3->next=l2;
l3=l3->next;
l2=l2->next;
}
}
if(l1) l3->next=l1;
if(l2) l3->next=l2;
return head->next;
}
};
两数相加

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* l3=new ListNode(0);
ListNode* head=l3;
int num=0;
int add=0;
while(l1||l2)
{
int x=(l1!=NULL)?l1->val:0;
int y=(l2!=NULL)?l2->val:0;
num=x+y+add;
add=num/10;
num%=10;
ListNode* node=new ListNode(num);
l3->next=node;
l3=l3->next;
if(l1) {l1=l1->next;}
if(l2) {l2=l2->next;}
}
if(add>0)
{
l3->next=new ListNode(add);
}
return head->next;
}
};
参考:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/jian-dan-de-liang-chong-ban-fa-by-dong-dong-da-ren/
https://zhuanlan.zhihu.com/p/38094131
本文深入解析了链表数据结构的两种关键操作:合并两个有序链表与两数相加。通过具体实例与代码实现,详细阐述了算法设计思路与执行流程,为读者提供了清晰的链表操作指南。
326

被折叠的 条评论
为什么被折叠?



