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

I N JAVA Please: Implement a doubly linked list ) The MyLinkedList class used in

ID: 3864129 • Letter: I

Question

IN JAVA Please:

Implement a doubly linked list) The MyLinkedList class used in Listing 24.6

is a one-way directional linked list that enables one-way traversal of the list.

Modify the Node class to add the new data field name previous to refer to the

previous node in the list, as follows:

public class Node<E> {

E element;

Node<E> next;

Node<E> previous;

public Node(E e) {

element = e;

}

}

Implement a new class named TwoWayLinkedList that uses a doubly

linked list to store elements. The MyLinkedList class in the text

extends MyAbstractList. Define TwoWayLinkedList to extend the

java.util.AbstractSequentialList class. You need to implement all the

methods defined in MyLinkedList as well as the methods listIterator()

and listIterator(int index). Both return an instance of java.util.

ListIterator<E>. The former sets the cursor to the head of the list and the

latter to the element at the specified index. Test using this code:

TEST USING THIS CODE:

USE PUBLIC CLASS EXERCISE2 for the name of the public class......

please include sample run

Explanation / Answer

import java.util.Scanner; /* Class Node */ 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; } } /* Class linkedList */ class linkedList { protected Node start; protected Node end ; public int size; /* 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 list.getSize() ) System.out.println("Invalid position "); 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 position "); else list.deleteAtPos(p); break; case 5 : System.out.println("Empty status = "+ list.isEmpty()); break; case 6 : System.out.println("Size = "+ list.getSize() +" "); break; default : System.out.println("Wrong Entry "); break; } /* Display List */ list.display(); System.out.println(" Do you want to continue (Type y or n) "); ch = scan.next().charAt(0); } while (ch == 'Y'|| ch == 'y'); } }