/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{
struct ListNode* l3 = NULL;
struct ListNode* curr = l3;
bool cnt = false;
if (l3==NULL)
{
int n1 = l1 == NULL ? 0 : l1->val;
int n2 = l2 == NULL ? 0 : l2->val;
struct ListNode* new_node = malloc(sizeof(struct ListNode));
new_node->val = n1 + n2;
if (new_node->val >= 10)
{
new_node->val %= 10;
cnt = true;
}
new_node->next = NULL;
l3 = new_node;
curr = new_node;
if (l1 != NULL)
{
l1 = l1->next;
}
if (l2 != NULL)
{
l2 = l2->next;
}
}
for (int i = 0; l1 != NULL || l2 != NULL; i++)
{
int n1 = l1 == NULL ? 0 : l1->val;
int n2 = l2 == NULL ? 0 : l2->val;
struct ListNode* new_node = malloc(sizeof(struct ListNode));
new_node->val = n1 + n2;
if (cnt==true)
{
new_node->val += 1;
cnt = false;
}
if (new_node->val >= 10)
{
new_node->val %= 10;
cnt = true;
}
curr->next = new_node;
curr = curr->next;
new_node->next = NULL;
if (l1 != NULL)
{
l1 = l1->next;
}
if (l2 != NULL)
{
l2 = l2->next;
}
}
if (cnt==false)
{
return l3;
}
else
{
struct ListNode* new_node = malloc(sizeof(struct ListNode));
new_node->val = 1;
new_node->next = NULL;
curr->next = new_node;
return l3;
}
}
2. 两数相加
最新推荐文章于 2024-06-13 14:02:06 发布