class Node {
constructor(coeff, pow) {
this.coeff = coeff;
this.pow = pow;
this.next = null;
}
}
// Function to create a new node
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;
}
// Display Linked list
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 to print the required sum of a polynomial p1 and p2
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;
}
}
// Add any remaining terms from p1 and p2
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;
}
// Reverse the result linked list for correct order
let reversedResult = null;
while (result !== null) {
let next = result.next;
result.next = reversedResult;
reversedResult = result;
result = next;
}
return reversedResult;
}
// Driver function
function main() {
let poly1 = null;
let poly2 = null;
// Create the first list of 5x^2 + 4x^1 + 2x^0
poly1 = createNode(5, 2, poly1);
poly1 = createNode(4, 1, poly1);
poly1 = createNode(2, 0, poly1);
// Create the second list of 5x^1 + 5x^0
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();