JSFiddle - React, Tailwind, and code Playground

by danbeam

JavaScript

function print(head) {
    var tmp = head;
    var data = [];
    while (tmp) {
        data.push(tmp.data);
        tmp = tmp.next;
    }
    console.log(data.join(' '));
}

function add(head1, head2) {
    var list = null, curr = null;
    var tmp1 = head1, tmp2 = head2;
    var carry = false;
    while (tmp1 || tmp2) {
        var val = (tmp1 ? tmp1.data : 0) + (tmp2 ? tmp2.data : 0) + carry;
        var item = {data: val % 10};
        if (curr) {
            curr.next = item;
            curr = item;
        } else {
            list = item;
            curr = list;
        }
        if (tmp1)
            tmp1 = tmp1.next;
        if (tmp2)
            tmp2 = tmp2.next;
        carry = val >= 10;
    }    
    if (carry)
        curr.next = {data: 1};
    return list;
}

var a = {data: 3};
a.next = {data: 1};
a.next.next = {data: 5};

var b = {data: 5};
b.next = {data: 9};
b.next.next = {data: 4};

print(a);
print(b);
print(add(a, b));