below is a method describes polynomial multiplication. all the insertTail() and insertFirst() are in the normal format of linked lists. can anyone please show me why it doesnt give me the right multiplication.
public static void mulpolynomial(String poly1, String poly2) {
String[] pp1 = poly1.split(" ");
String[] pp2 = poly2.split(" ");
LinkList polyno1 = new LinkList();
for(int i=0, j=1 ; i < pp1.length && j <pp1.length ; i = i+2, j = j+2 )
polyno1.insertTail(Integer.parseInt(pp1[i]),Integer.parseInt(pp1[j]));
polyno1.displayList();
LinkList polyno2 = new LinkList();
for(int i=0, j=1 ; i < pp2.length && j <pp2.length ; i = i+2, j = j+2 )
polyno2.insertTail(Integer.parseInt(pp2[i]),Integer.parseInt(pp2[j]));
polyno2.displayList();
LinkList polyno3 = new LinkList();
Link n = new Link();
Link p1ptr = polyno1.first;
Link p2ptr = polyno2.first;
Link p3ptr = polyno3.first;
while(p1ptr != null){
while(p2ptr != null){
double C = p1ptr.coffData * p2ptr.coffData;
int X = (p1ptr.expoData + p2ptr.expoData);
addToLink(C, X, polyno3);
if(polyno3.first == null){
polyno3.insertTail(C, X);
}
p3ptr = polyno3.first;
p2ptr = p2ptr.next;
}
p2ptr = polyno2.first;
p1ptr = p1ptr.next;
}
polyno3.displayList();
}
public static void addToLink(double cof, int expo, LinkList polyno3){
Link p3ptr = polyno3.first;
if(p3ptr == null){
polyno3.insertTail(cof, expo);
polyno3.first.displayLink();
polyno3.displayList();
}
else{
for( p3ptr = polyno3.first; p3ptr!=null; p3ptr = p3ptr.next){
p3ptr.displayLink();
if(p3ptr.expoData == expo ){
p3ptr.coffData += cof;
break;
}
}
for( p3ptr = polyno3.first; p3ptr!=null; p3ptr = p3ptr.next){
if(p3ptr.expoData > expo ){
polyno3.insertTail(cof, expo);
break;
}
}
}
}
my input- LinkList.mulpolynomial("2 3 4 2 " , "2 3 6 2 ");
output - List (first-->last): 4.0x^6 + 20.0x^5 + 8.0x^5 + 24.0x^4 +
it is adding the terms having same expoonent nicely but gives an exptra term (in this example 8.0x^5)
please someone help me. only this to be corrected in my program.