I doubt this might be due to some pointer issues.
Any help would be appreciated.
algo:
my code:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
#include<string.h>
#include<stdlib.h>
#define MAX_LENGTH 100
struct ListNode* addNode(struct ListNode* head, int value)
{
struct ListNode *p;
p = (struct ListNode*)malloc(sizeof(struct ListNode));
p->val = value;
p->next = head->next;
head->next = p;
return p;
}
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
struct ListNode* prev;
struct ListNode* next;
struct ListNode* cur;
struct ListNode* l3;
char arr1[MAX_LENGTH];
memset(arr1, MAX_LENGTH, '\0');
char arr2[MAX_LENGTH];
memset(arr2, MAX_LENGTH, '\0');
char arr3[MAX_LENGTH];
memset(arr3, MAX_LENGTH, '\0');
int i=0, j=0;
long long int num1=0, num2=0, sum=0;
next = NULL;
prev = NULL;
cur = l1;
while(cur != NULL)
{
next = cur->next;
cur->next = prev;
prev = cur;
cur = next;
}
l1 = prev;
cur = l1;
while(cur != NULL)
{
char temp[50];
sprintf(temp, "%d", cur->val);
arr1[i] = temp[0];
cur = cur->next;
i++;
}
num1 = atoll(arr1);
next = NULL;
prev = NULL;
cur = l2;
while(cur != NULL)
{
next = cur->next;
cur->next = prev;
prev = cur;
cur = next;
}
l2 = prev;
cur = l2;
while(cur != NULL)
{
char temp[50];
sprintf(temp, "%d", cur->val);
arr2[j] = temp[0];
cur = cur->next;
j++;
}
num2 = atoll(arr2);
sum = num1 + num2;
printf("\n%lld, %lld, %lld\n", num1, num2, sum);
struct ListNode* newNode;
l3 = (struct ListNode*)malloc(sizeof(struct ListNode));
sprintf(arr3, "%lld", sum);
int k=0;
cur = l3;
cur->next = NULL;
next = NULL;
int counter = 0;
while(arr3[k] != NULL)
{
counter++;
if(counter <= 1)
{
cur->val = arr3[k] - '0';
next = cur;
}
else
{
newNode = addNode(next, arr3[k] - '0');
next = newNode;
next->next = NULL;
}
k++;
}
next = NULL;
prev = NULL;
cur = l3;
while(cur != NULL)
{
next = cur->next;
cur->next = prev;
prev = cur;
cur = next;
}
l3 = prev;
return l3;
}