Skip to content

Instantly share code, notes, and snippets.

@ony19161
Created November 22, 2022 19:08
Show Gist options
  • Save ony19161/d8f21aaa27b9c07fe2ab5707c1665543 to your computer and use it in GitHub Desktop.
Save ony19161/d8f21aaa27b9c07fe2ab5707c1665543 to your computer and use it in GitHub Desktop.
AddTwoNumber using linked list
void append(ListNode **head_ref, int new_data)
{
ListNode *new_node = new ListNode();
ListNode *last = *head_ref;
new_node->val = new_data;
new_node->next = NULL;
if (*head_ref == NULL)
{
*head_ref = new_node;
return;
}
while (last->next != NULL)
{
last = last->next;
}
last->next = new_node;
return;
}
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
struct ListNode *output = NULL;
int reminder = 0;
int result = 0;
int sum = 0;
do
{
sum = l1->val + l2->val + reminder;
result = sum % 10;
append(&output, result);
reminder = sum / 10;
l1 = l1->next;
l2 = l2->next;
} while (l1 != NULL && l2 != NULL);
while (l1 != NULL)
{
sum = l1->val + reminder;
result = sum % 10;
append(&output, result);
reminder = sum / 10;
l1 = l1->next;
}
while (l2 != NULL)
{
sum = l2->val + reminder;
result = sum % 10;
append(&output, result);
reminder = sum / 10;
l2 = l2->next;
}
if (reminder > 0)
{
append(&output, reminder);
}
return output;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment