top of page

Daily Coding Problem #17

Writer's picture: Mischievous_FaceMischievous_Face

// Let's represent an integer in a linked list format by having each node represent a digit in the number. The nodes make up the number in reversed order.

// For example, the following linked list :

// 1 -> 2 -> 3 -> 4 -> 5

// is the number 54321.

// Given two linked lists in this format, return their sum in the same linked list format.

// For example, given

// 9 -> 9

// 5 -> 2

// return 124 (99 + 25) as:

// 4 -> 2 -> 1 (125)


#include <iostream>

#include <vector>


using namespace std;


class Node {

public:

Node(int data, Node* next = nullptr, Node* prev = nullptr)

{

setPrev(prev);

setNext(next);

setData(data);

}


void setPrev(Node* newPrev) { prev = newPrev; }

void setNext(Node* newNext) { next = newNext; }

void setData(int newData) { data = newData; }


Node* getPrev() { return prev; }

Node* getNext() { return next; }

int getData() { return data; }


private:

Node* prev = nullptr;

Node* next = nullptr;

int data = 0;

};


int generateInt(Node* head)

{

Node* node = head;

int temp = 0;

int result = 0;

unsigned place = 0;


while (node)

{

result += node->getData() * pow(10, (place));

++place;

node = node->getNext();

}


return result;

}


int listSum(Node* list1, Node* list2)

{

return generateInt(list1) + generateInt(list2);

}


int main()

{

Node* head1 = new Node(9);

head1->setNext(new Node(9, nullptr, head1));


Node* head2 = new Node(5);

head2->setNext(new Node(2, nullptr, head2));


auto result = listSum(head1, head2);


cout << "Sum is: " << result << endl;


return 0;

}

20 views0 comments

Recent Posts

See All

Comentarios


© 2020 Josh Painter

bottom of page