Skip to main content

Multiply two polynomials using linked list in node js

Js program for Multiply two polynomials using linked list. Here problem description and explanation.

/*
    Node JS program for
    Multiplication of two polynomials using linked list
*/
class Node
{
	constructor(data, power)
	{
		this.data = data;
		this.power = power;
		this.next = null;
	}
	// Update node value
	updateRecord(data, power)
	{
		this.data = data;
		this.power = power;
	}
}
class MultiplyPolynomial
{
	constructor()
	{
		this.head = null;
	}
	// Insert Node element
	insert(data, power)
	{
		if (this.head == null)
		{
			// Add first node
			this.head = new Node(data, power);
		}
		else
		{
			var node = null;
			var temp = this.head;
			var location = null;
			// Find the valid new node location
			while (temp != null && temp.power >= power)
			{
				location = temp;
				temp = temp.next;
			}
			if (location != null && location.power == power)
			{
				// When polynomial power already exists
				// Then add current add to previous data
				location.data = location.data + data;
			}
			else
			{
				node = new Node(data, power);
				if (location == null)
				{
					// When add node in begining
					node.next = this.head;
					this.head = node;
				}
				else
				{
					// When adding node in intermediate 
					// location or end location
					node.next = location.next;
					location.next = node;
				}
			}
		}
	}
	// Perform multiplication of given polynomial
	multiplyPolynomials(other)
	{
		// Define some useful variable
		var result = new MultiplyPolynomial();
		// Get first node of polynomial
		var poly1 = this.head;
		var temp = other.head;
		var power_value = 0;
		var coefficient = 0;
		// Execute loop until when polynomial are exist
		while (poly1 != null)
		{
			temp = other.head;
			while (temp != null)
			{
				// Get result info
				power_value = poly1.power + temp.power;
				coefficient = poly1.data * temp.data;
				result.insert(coefficient, power_value);
				// Visit to next node
				temp = temp.next;
			}
			// Visit to next node
			poly1 = poly1.next;
		}
		// return first node
		return result;
	}
	// Display given polynomial nodes
	display()
	{
		if (this.head == null)
		{
			process.stdout.write("Empty Polynomial ");
		}
		process.stdout.write(" ");
		var temp = this.head;
		while (temp != null)
		{
			if (temp != this.head)
			{
				process.stdout.write(" + " + temp.data);
			}
			else
			{
				process.stdout.write("" + temp.data);
			}
			if (temp.power != 0)
			{
				process.stdout.write("x^" + temp.power);
			}
			// Visit to next node
			temp = temp.next;
		}
		process.stdout.write("\n");
	}
}

function main()
{
	var a = new MultiplyPolynomial();
	var b = new MultiplyPolynomial();
	// Add node in polynomial A
	a.insert(9, 3);
	a.insert(4, 2);
	a.insert(3, 0);
	a.insert(7, 1);
	a.insert(3, 4);
	// Add node in polynomial b
	b.insert(7, 3);
	b.insert(4, 0);
	b.insert(6, 1);
	b.insert(1, 2);
	// Display Polynomial nodes
	console.log("\n Polynomial A ");
	a.display();
	console.log(" Polynomial B ");
	b.display();
	var result = a.multiplyPolynomials(b);
	// Display calculated result
	console.log(" Result ");
	result.display();
}
// Start program execution
main();

Output

 Polynomial A
 3x^4 + 9x^3 + 4x^2 + 7x^1 + 3
 Polynomial B
 7x^3 + 1x^2 + 6x^1 + 4
 Result
 21x^7 + 66x^6 + 55x^5 + 119x^4 + 88x^3 + 61x^2 + 46x^1 + 12




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment