class Node {
constructor(coeff, pow) {
this
.coeff = coeff;
this
.pow = pow;
this
.next =
null
;
}
}
function
createNode(x, y, temp) {
let r =
new
Node(x, y);
if
(temp ===
null
) {
temp = r;
}
else
{
let current = temp;
while
(current.next !==
null
) {
current = current.next;
}
current.next = r;
}
return
temp;
}
function
show(node) {
if
(node ===
null
) {
return
;
}
while
(node.next !==
null
) {
console.log(`${node.coeff}x^${node.pow}`);
node = node.next;
if
(node.next !==
null
) {
console.log(
" + "
);
}
}
}
function
addPolynomial(p1, p2) {
let result =
null
;
let currentResult =
null
;
let current1 = p1;
let current2 = p2;
while
(current1 !==
null
&& current2 !==
null
) {
if
(current1.pow === current2.pow) {
let sumCoeff = current1.coeff + current2.coeff;
if
(sumCoeff !== 0) {
result = createNode(sumCoeff, current1.pow, result);
current1 = current1.next;
current2 = current2.next;
}
}
else
if
(current1.pow > current2.pow) {
result = createNode(current1.coeff, current1.pow, result);
current1 = current1.next;
}
else
{
result = createNode(current2.coeff, current2.pow, result);
current2 = current2.next;
}
}
while
(current1 !==
null
) {
result = createNode(current1.coeff, current1.pow, result);
current1 = current1.next;
}
while
(current2 !==
null
) {
result = createNode(current2.coeff, current2.pow, result);
current2 = current2.next;
}
let reversedResult =
null
;
while
(result !==
null
) {
let next = result.next;
result.next = reversedResult;
reversedResult = result;
result = next;
}
return
reversedResult;
}
function
main() {
let poly1 =
null
;
let poly2 =
null
;
poly1 = createNode(5, 2, poly1);
poly1 = createNode(4, 1, poly1);
poly1 = createNode(2, 0, poly1);
poly2 = createNode(5, 1, poly2);
poly2 = createNode(5, 0, poly2);
console.log(
"1st Number: "
);
show(poly1);
console.log(
"2nd Number: "
);
show(poly2);
console.log(
"Added polynomial: "
);
let result = addPolynomial(poly1, poly2);
show(result);
}
main();