Question & Answer: I need help with the implementation of a linked list in Java that computes addition, subtraction, multiplication, d…..

Good Afternoon!!!

I need help with the implementation of a linked list in Java that computes addition, subtraction, multiplication, división, and reminder of two polynomials which have been previously stored. It should be a doubly linked list that incorporates nodes and pointers as well as make use of the option super(). It is also required a method that read convert strings into integers and make use of the option utility in order to run the program. Any help will be welcomed, Thanks a lot….

Expert Answer

 

//Node.java

package com.test;

public class Node
{
protected int data;
protected Node next, prev;

/* Constructor */
public Node()
{
next = null;
prev = null;
data = 0;
}
/* Constructor */
public Node(int d, Node n, Node p)
{
data = d;
next = n;
prev = p;
}
/* Function to set link to next node */
public void setLinkNext(Node n)
{
next = n;
}
/* Function to set link to previous node */
public void setLinkPrev(Node p)
{
prev = p;
}
/* Funtion to get link to next node */
public Node getLinkNext()
{
return next;
}
/* Function to get link to previous node */
public Node getLinkPrev()
{
return prev;
}
/* Function to set data to node */
public void setData(int d)
{
data = d;
}
/* Function to get data from node */
public int getData()
{
return data;
}
}

//DoublyLinkedList.java

package com.test;

import com.test.Node;

import java.util.Scanner;

/* Class Node */

/* Class linkedList */

class linkedList

{

protected Node start;

protected Node end ;

public int size;

public int carry=0;

private int data;

/* Constructor */

public linkedList()

{

start = null;

end = null;

size = 0;

}

/* Function to check if list is empty */

public boolean isEmpty()

{

return start == null;

}

/* Function to get size of list */

public int getSize()

{

return size;

}

/* Function to insert element at begining */

public void insertAtStart(int val)

{

Node nptr = new Node(val, null, null);

if(start == null)

{

start = nptr;

end = start;

}

else

{

start.setLinkPrev(nptr);

nptr.setLinkNext(start);

start = nptr;

}

size++;

}

/* Function to insert element at end */

public void insertAtEnd(int val)

{

Node nptr = new Node(val, null, null);

if(start == null)

{

start = nptr;

end = start;

}

else

{

nptr.setLinkPrev(end);

end.setLinkNext(nptr);

end = nptr;

}

size++;

}

/* Function to insert element at position */

public void insertAtPos(int val , int pos)

{

Node nptr = new Node(val, null, null);

if (pos == 1)

{

insertAtStart(val);

return;

}

Node ptr = start;

for (int i = 2; i <= size; i++)

{

if (i == pos)

{

Node tmp = ptr.getLinkNext();

ptr.setLinkNext(nptr);

nptr.setLinkPrev(ptr);

nptr.setLinkNext(tmp);

tmp.setLinkPrev(nptr);

}

ptr = ptr.getLinkNext();

}

size++ ;

}

/* Function to delete node at position */

public void deleteAtPos(int pos)

{

if (pos == 1)

{

if (size == 1)

{

start = null;

end = null;

size = 0;

return;

}

start = start.getLinkNext();

start.setLinkPrev(null);

size–;

return ;

}

if (pos == size)

{

end = end.getLinkPrev();

end.setLinkNext(null);

size– ;

}

Node ptr = start.getLinkNext();

for (int i = 2; i <= size; i++)

{

if (i == pos)

{

Node p = ptr.getLinkPrev();

Node n = ptr.getLinkNext();

p.setLinkNext(n);

n.setLinkPrev(p);

size– ;

return;

}

ptr = ptr.getLinkNext();

}

}

/* Function to display status of list */

public void display()

{

System.out.print(“nDoubly Linked List = “);

if (size == 0)

{

System.out.print(“emptyn”);

return;

}

if (start.getLinkNext() == null)

{

System.out.println(start.getData() );

return;

}

Node ptr = start;

System.out.print(start.getData()+ ” <-> “);

ptr = start.getLinkNext();

while (ptr.getLinkNext() != null)

{

System.out.print(ptr.getData()+ ” <-> “);

ptr = ptr.getLinkNext();

}

System.out.print(ptr.getData()+ “n”);

}

 

int ElementAtIndex(int i)

{

if(i >= size)

return -1;

else

{

Node ptr = start;

for(int idx=0;idx<i;idx++)

{

ptr = ptr.getLinkNext();

}

return ptr.getData();

}

}

}

/* Class DoublyLinkedList */

public class DoublyLinkedList

{

public static void main(String[] args)

{

Scanner scan = new Scanner(System.in);

/* Creating object of linkedList */

//Below is the operation on linked list that we can perform

linkedList list = new linkedList();

System.out.println(“Doubly Linked List Testn”);

char ch;

/* Perform list operations */

do

{

System.out.println(“nDoubly Linked List Operationsn”);

System.out.println(“1. insert at begining”);

System.out.println(“2. insert at end”);

System.out.println(“3. insert at position”);

System.out.println(“4. delete at position”);

System.out.println(“5. check empty”);

System.out.println(“6. get size”);

int choice = scan.nextInt();

switch (choice)

{

case 1 :

System.out.println(“Enter integer element to insert”);

list.insertAtStart( scan.nextInt() );

break;

case 2 :

System.out.println(“Enter integer element to insert”);

list.insertAtEnd( scan.nextInt() );

break;

case 3 :

System.out.println(“Enter integer element to insert”);

int num = scan.nextInt() ;

System.out.println(“Enter position”);

int pos = scan.nextInt() ;

if (pos < 1 || pos > list.getSize() )

System.out.println(“Invalid positionn”);

else

list.insertAtPos(num, pos);

break;

case 4 :

System.out.println(“Enter position”);

int p = scan.nextInt() ;

if (p < 1 || p > list.getSize() )

System.out.println(“Invalid positionn”);

else

list.deleteAtPos(p);

break;

case 5 :

System.out.println(“Empty status = “+ list.isEmpty());

break;

case 6 :

System.out.println(“Size = “+ list.getSize() +” n”);

break;

default :

System.out.println(“Wrong Entry n “);

break;

}

/* Display List */

list.display();

System.out.println(“nDo you want to continue (Type y or n) n”);

ch = scan.next().charAt(0);

} while (ch == ‘Y’|| ch == ‘y’);

 

//created below two list to perform arithmetic operation

linkedList list1 = new linkedList();

list1.insertAtEnd(2);

list1.insertAtEnd(1);

list1.insertAtEnd(4);

list1.insertAtEnd(5);

linkedList list2 = new linkedList();

list2.insertAtEnd(1);

list2.insertAtEnd(7);

list2.insertAtEnd(3);

list2.insertAtEnd(4);

 

double num1 = 0, num2=0;

 

for(int i=0;i<list1.size;i++)

{

num1 += list1.ElementAtIndex(i)*Math.pow(10, list1.size – i -1);

}

for(int i=0;i<list1.size;i++)

{

num2 += list2.ElementAtIndex(i)*Math.pow(10, list2.size – i -1);

}

 

System.out.println(num1 +” ” +num2);

 

System.out.println(“Sum of two list: “+ (double)(num1+num2));

System.out.println(“Subtraction of two list: “+ (double)(num1-num2));

System.out.println(“Multiplication of two list: “+ (double)(num1*num2));

System.out.println(“Division of two list: “+ (double)(num1/num2));

System.out.println(“reminder of two list: “+ (int)(num1%num2));

 

}

 

}

//output;

Doubly Linked List Test

Doubly Linked List Operations

1. insert at begining
2. insert at end
3. insert at position
4. delete at position
5. check empty
6. get size
1
Enter integer element to insert
1

Doubly Linked List = 1

Do you want to continue (Type y or n)

n
2145.0 1734.0
Sum of two list: 3879.0
Subtraction of two list: 411.0
Multiplication of two list: 3719430.0
Division of two list: 1.2370242214532872
reminder of two list: 411

Still stressed from student homework?
Get quality assistance from academic writers!