From ce97c38f1b73e5a4d94c8bae4d56b488356c6ffc Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Sun, 9 Feb 2025 16:22:52 -0600 Subject: [PATCH] Initial attempt at add-two-numbers. --- .gitignore | 3 +- add-two-numbers/.gitignore | 1 + add-two-numbers/Makefile | 5 ++++ add-two-numbers/addTwoNumbers.c | 50 +++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 add-two-numbers/.gitignore create mode 100644 add-two-numbers/Makefile create mode 100644 add-two-numbers/addTwoNumbers.c diff --git a/.gitignore b/.gitignore index 693222e..9f4068e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -*.dSYM \ No newline at end of file +*.dSYM +.vscode \ No newline at end of file diff --git a/add-two-numbers/.gitignore b/add-two-numbers/.gitignore new file mode 100644 index 0000000..3ca0d84 --- /dev/null +++ b/add-two-numbers/.gitignore @@ -0,0 +1 @@ +addTwoNumbers \ No newline at end of file diff --git a/add-two-numbers/Makefile b/add-two-numbers/Makefile new file mode 100644 index 0000000..5c9e371 --- /dev/null +++ b/add-two-numbers/Makefile @@ -0,0 +1,5 @@ +addTwoNumbers: addTwoNumbers.c + gcc -g -Wall -std=gnu99 -o addTwoNumbers addTwoNumbers.c + +run: addTwoNumbers + ./addTwoNumbers \ No newline at end of file diff --git a/add-two-numbers/addTwoNumbers.c b/add-two-numbers/addTwoNumbers.c new file mode 100644 index 0000000..3c5194d --- /dev/null +++ b/add-two-numbers/addTwoNumbers.c @@ -0,0 +1,50 @@ +#include +#include + +struct ListNode { + int val; + struct ListNode *next; +}; + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ + struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { + struct ListNode *first = NULL, *current = NULL; + while (l1 != NULL) { + if (current == NULL) { + current = malloc(sizeof(struct ListNode)); + first = current; + } else { + current->next = malloc(sizeof(struct ListNode)); + current = current->next; + } + current->val = l1->val + l2->val; + l1 = l1->next; + l2 = l2->next; + } + return first; +} + +int main() { + struct ListNode *l1 = malloc(sizeof(struct ListNode)); + l1->val = 1; + l1->next = malloc(sizeof(struct ListNode)); + l1->next->val = 2; + l1->next->next = NULL; + + struct ListNode *l2 = malloc(sizeof(struct ListNode)); + l2->val = 3; + l2->next = malloc(sizeof(struct ListNode)); + l2->next->val = 4; + l2->next->next = NULL; + + struct ListNode *result = addTwoNumbers(l1, l2); + printf("[%d, %d]\n", result->val, result->next->val); + + return 0; +} \ No newline at end of file