Sunday, November 4, 2007

Polynomial Addition

Program :


import java.io.*; //To implement I/O operations

class link
{
int coef,exp; //data part for the link list
link next; //next link in list

link(int a,int b) //constructor
{
coef=a; //initialize data
exp=b; //initialize data
}

void display() //To display the list
{
System.out.print(" "+coef+"xe"+exp);
}
} //end of class link





class linklist
{
link p,q,d;
link first; //ref to first link on list
linklist() //constructor
{
first=null; //no links on list yet
}

void create(int a,int b) //To insert into the list
{
link node=new link(a,b); //make new link
node.next=first;
first=node;
} //End of function create

void padd(linklist A,linklist B) //To add the polynomials
{
int x; //Temporary variable for storing coef
p=A.first;
q=B.first;
d=first;
while ((p!=null) && (q!=null))
{
if (p.exp==q.exp)
{
x=p.coef+q.coef;
if (x!=0)
{
link node=new link(x,p.exp);
//make new link
node.next=d;
d=node;
}
p=p.next; //move to next node of 'A'
q=q.next; //move to next node of 'B'
}
else if (p.exp>q.exp)
{
link node=new link(p.coef,p.exp);
node.next=d;
d=node;
p=p.next;
}
else
{
link node=new link(q.coef,q.exp);
node.next=d;
d=node;
q=q.next;
}
}
while (p!=null)
{
link node=new link(p.coef,p.exp);
node.next=d;
d=node;
p=p.next;
}
while (q!=null)
{
link node=new link(q.coef,q.exp);
node.next=d;
d=node;
q=q.next;
}
first=d;
} //end of function padd

void disp() //To display the resultant polynomial
{
link current=first; //start at the beginning of the list
while (current!=null) //until end of the list
{
current.display();
if(current.next!=null)
{
System.out.print("+");
}
else
{
System.out.print(" ");
//print data
}
current=current.next;
//move to next link
}
System.out.println(" ");
} //end of function disp
} //end of class linklist





public class Polyadd //The main class add
{
public static void main(String args[])
//main function
{ try //to catch any exceptions
{
int r=0,n,x,y;
System.out.println("/* POLYNOMIAL ADDITION */");
linklist A=new linklist(); //make new linklist 'A'
linklist B=new linklist(); //make new linklist 'B'
linklist C=new linklist(); //make new linklist 'C'
BufferedReader f=new BufferedReader(new InputStreamReader(System.in));
for(int j=1;j<=2;j++)
{
//To insert the polynomials
System.out.println("Enter the "+j+" polynomial:");
System.out.println("Enter the no. of terms:");
n=Integer.parseInt(f.readLine());
for(int i=n;i>0;i--)
{
System.out.println("Enter the coeff & exponent of "+i+" term");
x=Integer.parseInt(f.readLine());
y=Integer.parseInt(f.readLine());
if(j==1)
A.create(x,y);
//Assign values to links
else
B.create(x,y);
//Assign values to links
}
}
System.out.println("FIRST POLYNOMIAL IS:");
A.disp(); //Display the first plynomial
System.out.println("SECOND POLYNOMIAL IS:");
B.disp(); //Display the second plynomial
C.padd(A,B); //Calling the function padd System.out.println("THE SUM OF POLYNOMIALS IS:");
C.disp(); //Display the resultant plynomial
}
catch(IOException e) //To catch I/O Exception
{
}
} //End of main function
}

0 comments: