I am doing a program "Multiplication of two polynomials using linked list in java" for our curriculum, can you please help me in this.
Rajesh
//Class for polynomial linked list import java.util.Scanner; class Node { public int numC; public int numE; public Node next; // elementary constructor public Node() { numC = 0; numE = 0; next = null; } // constructor with two argument public Node(int c, int e) { numC = c; numE = e; next = null; } // primary constructor public Node(int c, int e, Node n) { numC = c; numE = e; next = n; } // accessor method public int getCo() { return numC; } public int getEx(){ return numE; } // accessor method public Node getNext() { return next; } // mutator method public void setCof(int c){ numC = c; } public void setExp(int e){ numE = e; } // mutator method for next public void setNext(Node nextNode) { next = nextNode; } } // end of class Node class Polynomial { private Node front; public Polynomial(){ front = null; } //read coefficient fx public int readCoFx(){ Scanner scan = new Scanner(System.in); int coef = 0; System.out.print("Enter Coefficient or 0 to skip to next equation: "); coef = scan.nextInt(); return coef; } //read coefficient gx public int readCoGx(){ Scanner scan = new Scanner(System.in); int coef = 0; System.out.print("Enter Coefficient or 0 to end program: "); coef = scan.nextInt(); return coef; } //read exponent public int readEx(){ Scanner scan = new Scanner(System.in); int exp = 0; System.out.print("Enter Exponent: "); exp = scan.nextInt(); return exp; } //insert Node public void insert(int coef, int exp){ Node temp = new Node(coef, exp, null); //insert temp to 1st if empty if (front == null) front = temp; else { Node p = null; Node q = front; //insert in front if exponent is higher if (temp.getEx() > q.getEx()){ temp.setNext(front); front = temp; } else {//insert at middle or end while (q != null && q.getEx() > temp.getEx()){ p = q; q = q.getNext(); } p.setNext(temp); temp.setNext(q); } } } public void mulInsert(int coef, int exp){ //Node temp = new Node(coef, exp, null); //insert temp to 1st if empty System.out.println("coef="+coef+"exp="+exp); if (front == null) front = new Node(coef,exp,null); else { Node p = null; Node q = front; //insert in front if exponent is higher if (exp > q.getEx()){ Node temp = new Node(coef,exp,null); temp.setNext(front); front = temp; } else {//insert at middle or end while (q != null && q.getEx() >= exp){ if (q.getEx() == exp) { q.numC += coef; q=q.getNext(); continue; } p = q; q = q.getNext(); } Node temp = new Node(coef,exp,null); p.setNext(temp); temp.setNext(q); } } } //print function for the equations public void print(){ Node p = front; while(p != null){ System.out.print("("+p.getCo()+ "x" + p.getEx()+")"); p = p.getNext(); } System.out.println(""); } //function to add polynomials public static Polynomial addPoly(Polynomial poly1, Polynomial poly2){ Polynomial tempPoly = new Polynomial(); //if poly1 exp is > poly 2 exp then power = poly 1 exp else power = poly 2 exp int power = (poly1.front.getEx() > poly2.front.getEx()) ? poly1.front.getEx() : poly2.front.getEx(); while (power >=0){ Node n1 = poly1.front; while (n1 != null){ if (n1.getEx() == power) break; n1 = n1.getNext(); } Node n2 = poly2.front; while (n2 != null){ if (n2.getEx() == power) break; n2 = n2.getNext(); } if((n1 != null) && (n2 != null)) tempPoly.insert((n1.getCo() + n2.getCo()), n1.getEx()); else if (n1 != null) tempPoly.insert(n1.getCo(), n1.getEx()); else if (n2 != null) tempPoly.insert(n2.getCo(), n2.getEx()); power--; } return tempPoly; } public static Polynomial mulPoly(Polynomial poly1, Polynomial poly2){ Polynomial tempPoly = new Polynomial(); Node n1 = poly1.front; while (n1 != null ){ Node n2 = poly2.front; while(n2 != null){ tempPoly.mulInsert((n1.getCo()*n2.getCo()),(n1.getEx() + n2.getEx())); n2 = n2.getNext(); } n1= n1.getNext(); } return tempPoly; } } //driver public class PolyDrive { public static void main(String [] args){ Polynomial poly1 = new Polynomial(); Polynomial poly2 = new Polynomial(); Polynomial poly3 = new Polynomial(); Polynomial poly4 = new Polynomial(); int co; int ex; do { co = poly1.readCoFx(); if(co != 0){ ex = poly1.readEx(); poly1.insert(co, ex); } //poly1.print(); } while (co != 0); do { co = poly2.readCoGx(); if(co != 0){ ex = poly1.readEx(); poly2.insert(co, ex); } //poly2.print(); } while (co != 0); poly1.print(); poly2.print(); //poly3 = Polynomial.addPoly(poly1,poly2); //poly3.print(); poly4 = Polynomial.mulPoly(poly1,poly2); poly4.print(); } }
Ads