Multiply two polynomials using linked list in vb.net
Vb program for Multiply two polynomials using linked list. Here problem description and explanation.
' Include namespace system
Imports System
' Vb.net program for
' Multiplication of two polynomials using linked list
Public Class Node
Public data As Integer
Public power As Integer
Public [next] As Node
Public Sub New(ByVal data As Integer,
ByVal power As Integer)
Me.data = data
Me.power = power
Me.next = Nothing
End Sub
' Update node value
Public Sub updateRecord(ByVal data As Integer,
ByVal power As Integer)
Me.data = data
Me.power = power
End Sub
End Class
public Class MultiplyPolynomial
Public head As Node
Public Sub New()
Me.head = Nothing
End Sub
' Insert Node element
Public Sub insert(ByVal data As Integer,
ByVal power As Integer)
if (Me.head Is Nothing) Then
' Add first node
Me.head = New Node(data, power)
Else
Dim node As Node = Nothing
Dim temp As Node = Me.head
Dim location As Node = Nothing
' Find the valid new node location
while (temp IsNot Nothing AndAlso temp.power >= power)
location = temp
temp = temp.[next]
End While
if (location IsNot Nothing AndAlso
location.power = power) Then
' 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 Is Nothing) Then
' When add node in begining
node.[next] = Me.head
Me.head = node
Else
' When adding node in intermediate
' location or end location
node.[next] = location.[next]
location.[next] = node
End IF
End IF
End IF
End Sub
' Perform multiplication of given polynomial
Public Function multiplyPolynomials(
ByVal other As MultiplyPolynomial) As MultiplyPolynomial
' Define some useful variable
Dim result As MultiplyPolynomial = New MultiplyPolynomial()
' Get first node of polynomial
Dim poly1 As Node = Me.head
Dim temp As Node = other.head
Dim power_value As Integer = 0
Dim coefficient As Integer = 0
' Execute loop until when polynomial are exist
while (poly1 IsNot Nothing)
temp = other.head
while (temp IsNot Nothing)
' 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]
End While
' Visit to next node
poly1 = poly1.[next]
End While
' return first node
Return result
End Function
' Display given polynomial nodes
Public Sub display()
if (Me.head Is Nothing) Then
Console.Write("Empty Polynomial ")
End If
Console.Write(" ")
Dim temp As Node = Me.head
while (temp IsNot Nothing)
if (temp IsNot Me.head) Then
Console.Write(" + " + temp.data.ToString())
Else
Console.Write(temp.data)
End IF
if (temp.power <> 0) Then
Console.Write("x^" + temp.power.ToString())
End If
' Visit to next node
temp = temp.[next]
End While
Console.Write( vbLf )
End Sub
Public Shared Sub Main(ByVal args As String())
Dim a As MultiplyPolynomial = New MultiplyPolynomial()
Dim b As MultiplyPolynomial = 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.WriteLine( vbLf &" Polynomial A ")
a.display()
Console.WriteLine(" Polynomial B ")
b.display()
Dim result As MultiplyPolynomial = a.multiplyPolynomials(b)
' Display calculated result
Console.WriteLine(" Result ")
result.display()
End Sub
End Class
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
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