Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Good morning everyone!!! It was given me as a data structures project the creati

ID: 3885637 • Letter: G

Question

Good morning everyone!!!


It was given me as a data structures project the creation of a linked list that performs basic arithmetic operations (Add, subtract, multiplication, division, and reminder) with two polynomials. I’ve been having some issues to create the methods that perform the operations before mentioned. I’ve been trying for almost a week and I couldn’t do it. I attached my current java code; I wrote in bold the functions that I have to work on (Last class of the code) and the current output. Any advice, any guide, any help to approach this solution will be welcome.


class DNode<T> {


private T data;


private DNode<T> prev, next;


public DNode(T d, DNode<T> p, DNode<T> n) {


data = d;


next = n;


prev = p;


}


public T getData() {


return data;


}


public DNode<T> getNext() {


return next;


}


public DNode<T> getPrev() {


return prev;


}


public void setData(T d) {


data = d;


}


public void setNext(DNode<T> n) {


next = n;


}


public void setPrev(DNode<T> p) {


prev = p;


}


}


class DList<T> {


private DNode<T> header, trailer;


private int size;


public DList() {


size = 0;


header = new DNode<T>(nullnullnull);


trailer = new DNode<T>(null, header, null);


header.setNext(trailer);


}


// utility methods


public int size() {


return size;


}


public boolean isEmpty() {


return size == 0;


}


// give clients access to nodes, but not to the header or trailer


public DNode<T> getFirst() throws Exception {


if (isEmpty())


throw new Exception("Empty");


return header.getNext();


}


public DNode<T> getLast() throws Exception {


if (isEmpty())


throw new Exception("Empty");


return trailer.getPrev();


}


public DNode<T> getNext(DNode<T> v) throwsException {


DNode<T> ans = v.getNext();


if (ans == null || ans == trailer)


throw new Exception("No such node");


return ans;


}


public DNode<T> getPrev(DNode<T> v) throwsException {


DNode<T> ans = v.getPrev();


if (ans == null || ans == header)


throw new Exception("No such node");


return ans;


}


// methods to change the list


public void addBefore(T d, DNode<T> v) {


DNode<T> u = v.getPrev();


DNode<T> x = new DNode<T>(d, u, v);


u.setNext(x);


v.setPrev(x);


size++;


}


public void addAfter(T d, DNode<T> v) {


DNode<T> w = v.getNext();


DNode<T> x = new DNode<T>(d, v, w);


v.setNext(x);


w.setPrev(x);


size++;


}


public void addFirst(T d) {


addAfter(d, header);


}


public void addLast(T d) {


addBefore(d, trailer);


}


public T remove(DNode<T> v) throws Exception {


if (v == header || v == trailer)


throw new Exception("Sentinel");


DNode<T> u = v.getPrev();


DNode<T> w = v.getNext();


w.setPrev(u);


u.setNext(w);


size--;


return v.getData();


}


// LinkedList testing methods:


public String toString() {


String ans = "";


DNode<T> n = header;


ans += "(H)<-->";


do {


n = n.getNext();


if (n == trailer)


ans += "(T)";


else


ans += (n.getData() + "<-->");


while (n != trailer);


return ans;


}


}


class Term {


Double coefficient;


int degree;


public Term() {


this(null, 0);


}


public boolean isPositive() {


return coefficient > 0;


}


public Term(Double coefficient, int degree) {


this.coefficient = coefficient;


this.degree = degree;


}


public Double getCoefficient() {


return coefficient;


}


public void setCoefficient(Double coefficient) {


this.coefficient = coefficient;


}


public int getDegree() {


return degree;


}


public void setDegree(int degree) {


this.degree = degree;


}


public String toString() {


String ans = "";


if (coefficient.doubleValue() == 0) return "";


if (degree == 0) return coefficient.toString();


if (coefficient != 1) {


if (coefficient == -1) ans += "- ";


else ans += coefficient + " ";


}


ans = ans + "X";


if (degree == 1) return ans;


return ans + "^" + degree;


}


}


abstract class Polynomial {


DList<Term> data = null;


public Polynomial() {


data = new DList<>();


}


public final String toString() {


String ans = "";


boolean starting = true;


try {


DNode<Term> n = data.getFirst();


while (n != null) {


if (!starting && n.getData().isPositive()) ans += " +";


starting = false;


ans += " " + n.getData().toString();


n = data.getNext(n);


}


catch (Exception e) {


if (starting) return "0";


}


return ans;


}


abstract public Polynomial add(Polynomial p);


abstract public Polynomial subtract(Polynomial p);


abstract public Polynomial multiply(Polynomial p);


abstract public Polynomial divide(Polynomial p) throws Exception;


abstract public Polynomial remainder(Polynomial p) throws Exception;


}


class Utility {


public static void run(Polynomial p, Polynomial q) throws Exception {


System.out.println("Polynomials p = " + p + " q = " + q);


System.out.println("Sum " + p.add(q));


System.out.println("Difference " + p.subtract(q));


System.out.println("Product " + p.multiply(q));


System.out.println("Quotient " + p.divide(q));


System.out.println("Remainder " + p.remainder(q));


}


}


public class X00000000 extends Polynomial {


public static void main(String args[]) throwsException {


Polynomial p = new X00000000(" X^5"),


q = new X00000000("X^2 - X + 1");


Utility.run(p, q);


}


public X00000000(String s) {


//parse string character by character


double coef = 0; //coefficient of term


int deg = 0; //degree of term


String[] terms = s.split(" ");


for(int i = 0; i < terms.length; i++)


{


String term= terms[i];


//System.out.println("term:"+term);


String prevTerm="";


if(i != 0)


prevTerm=terms[i-1];


if(term.startsWith("X"))


{


if(term.length()==3 && term.contains("^"))


{


coef=1;


deg=Integer.parseInt(term.substring(2));


}


else if (term.length() == 1)


{


deg=1;


if(prevTerm.equals("-"))


coef=-1;


else


coef=1;


}


}


else if(term.startsWith("-") || term.startsWith("+"))


continue;


else if(term.length()==1 && Character.isDigit(term.charAt(0)))


{


coef=Integer.parseInt(term);


if(prevTerm.equals("-"))


coef*=-1;


deg=0;


}


Term T = new Term(coef, deg);


if(data.isEmpty())


{


data.addFirst(T);


}


else


{


data.addLast(T);


}


}


}


public X00000000() {


super();}


public Polynomial add(Polynomial p) {


Polynomial ans = new X00000000();


// complete this code


return ans;


}


public Polynomial subtract(Polynomial p) {


Polynomial ans = new X00000000();


// complete this code


return ans;


}


public Polynomial multiply(Polynomial p) {


Polynomial ans = new X00000000();


// complete this code


return ans;


}


public Polynomial divide(Polynomial p) throws Exception {


Polynomial ans = new X00000000();


// complete this code


return ans;


}


public Polynomial remainder(Polynomial p) throws Exception {


Polynomial ans = new X00000000();


// complete this code


return ans;


}


}


Actual Output:


Polynomials
p = + X^5
q = X^2 - X + 1.0
Sum 0
Difference 0
Product 0
Quotient 0
Remainder 0


Explanation / Answer

class DNode<T>

{

private T data;

private DNode<T> prev,next;

public DNode(T d,DNode<T>p,DNode<T>n)

{

data = d;

next = n;

prev = p;

}

public T getData()

{

return data;

}

public DNode<T>getNext()

{

return next;

}

public DNode<T>getPrev()

{

return prev;

}

public void setData(T d)

{

data = d;

}

public void setNext(DNode<T>n)

{

next = n;

}

public void setPrev(DNode<T>p)

{

prev = p;

}

}

class DList<T>

{

private DNode<T> header,trailler;

private int size;

public DList()

{

size = 0;

header = new DNode<T>(null,null,null);

trailler = new DNode<T>(null,header,null);

header.setNext(trailler);

}

//utility methods

public int size()

{

return size;

}

public boolean isEmpty()

{

return size ==0;

}

//give clients access to nodes ,but not to the header or trailler

public DNode<T>getFirst() throws EXecption

{

if(isEmpty))

throw nwew Exception("Empty");

return header.getNext();

}

public DNode<T>getLast()throws Exception

{

if(isEmpty())

throw new Exception("Empty");

return trailer.getPrev();

}

public DNode<T>getNext(DNode<T>v)throws Exception

{

DNode<T> ans = v.getnext();

if(ans == null||ans == trailler)

throw new Exception("No such node");

return ans;

}

//methods to change the list

public void addBefore(T d,DNode<T> v)

{

DNode<T> w = v.getNext();

DNode<T> x =new DNode<T>(d,v,w);

v.setNext(x);

w.setPrev(x);

size++;

}

public void addFrist(T d)

{

addAfter(d, header);

}

public void addLast(T d)

{

addBefore(d,trailler);

}

public T remove(DNode<T> v) throws Exception

{

if(v == header ||v ==trailler)

throw new Exception("Sentinel");

DNode<T> u = v.getPrev();

DNode<T> w = v.getNext();

w.setPrev(u);

u.setNext(w);

}

//Linked list testing methods:

public String to String()

{

string ans ="";

DNode<T> n = header;

ans +="(H)<-->";

do

{

n =n.getNext();

if(n == trailler)

ans +="(T)";

else

ans +=(n.getData() +"<-->");

}

while (n !=trailler);

return ans;

}

}

class Term

{

Double coefficient;

int degree;

public Term()

{

this(null,0);

}

public boolean isPositive()

{

return coefficient>0;

}

public Term(Double coefficient,int degree)

{

this.coefficient = coefficient;

this.degree = degree;

}

public Double getCoffecient()

{

retrun coefficient;

}

public void setCoefficient(Double coefficient)

{

this.coefficient = coefficient;

}

public int getDegree()

{

return degree;

}

public void setDegree(int degree)

{

this.degree = degree;

}

public String to String()

{

String ans = "";

if (coefficient.doubleValue()==0)return"";

if(degree == 0)return coefficient.toString();

if(coefficient !=1)

{

if(coefficient == -1)ans +="-";

else ans +=coefficient +"";

}

ans = ans+"X";

if (degree == 1)return ans;

return ans +"^"+degree;

}

}

anstract class Polynomial

{

DList<term>data = null;

public Polynomial()

{

data new DList<>();

}

public final String to String()

{

String ans ="";

boolean starting = true;

try

{

DNode<Term> data = null;

public Polynomial()

{

data = new DList<>();

}

public final String toString()

{

String ans ="";

boolean starting = true;

try

{

DNode<term>n = data,getFrist();

while(n !=null)

{

if(!starting && n.getData().is Positive())ans +="+";

starting = false;

ans +=""+n.getData().toString();

n = data.getNext(n);

}

}

catch (Exception e)

{

if(starting) return "0";

}

return ans;

}

abstraction public Polynomial add(polynomial p);

abstraction public Polynomial subtract(polynomial p);

abstraction public Polynomial multiply(polynomial p);

abstraction public Polynomial divide(polynomial p) throws Exception;

abstraction public Polynomial remainder(polynomial p) throws Exception;

}

class utility

{

public static void run(Polynomial p,polynomial q)throws Exception

{

system.out.println("polynomials p = "+p +" p ="+q);

system.out.println("Sum" +p.add(q));

system.out.println("Difference" +p.substract(q));

system.out.println("product" +p.multiply(q));

system.out.println("Quotient" p.divide(q));

system.out.println("Remainder" +p.remainder(q));

}

}

public class X00000000 extends polynomial

{

public static void main(string ards[])throws Exception

{

polynomial p = new X000000000("X^5");

q = new X00000000("X^2 - X +1");

utility.run(p,q);

}

public X0000000000(string s)

{

//parse string character by character

double coef = 0;//coefficient of term

int deg = 0;//degree of term

String[]terms = s.split("");

for(int i=0;i<terms.lenght;i++)

{

String term =term[i];

//System.out.println("term:"+term);

String prevTerm="";

if(i!=0)

prevTerm=term[i-1];

if(term.startsWith("X"))

{

if(term.length()==3&& term.contains("^"))

{

coef=1;

deg=intger.parseint(term.substring(2));

}

else if(term.lenght() ==1)

{

deg=1;

if(prevTerm.equals("-"))

coef=-1;

else

coef=1;

}

}

else if(term.startsWith("-")||term.startsWith("+"))

continue;

else if(term.length()==1 && Character.isDigit(term.charAt(0)))

{

coef=integer.parseint(term);

if(data.isEmpty())

{

data.addFirst(T);

}

else

{

data.addLast(T);

}

}

}

public X000000000()

{

super();

}

public polynomial add(polynomial p)

{

polynomial ans =new X000000000();

//complete this code

return ans;

}

public polynomial subtract(polynomial p)

{

polynomial ans = new X00000000();

//complete this code

return ans;

}

public polynomial divide(polynomial p) throws Exception

{

polynomial ans = new X00000000();

//complete this code

return ans;

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote