Question: I already asked this question so this was the code I submitted for the MyLinkedList.java but I keep getting this error: zyLabsUnitTest.java:6: error: MyLinkedList is
I already asked this question so this was the code I submitted for the MyLinkedList.java but I keep getting this error:
zyLabsUnitTest.java:6: error: MyLinkedList is abstract; cannot be instantiated MyLinkedList obj = new MyLinkedList();
_____________________________________________________
17.2 MyLinkedList (Individual Assignment)
For this assignment you are given the following Java source code files:
MyListIterator.java (This file is complete make no changes to this file)
MyList.java (This file is complete make no changes to this file)
MyLinkedList.java (You must complete this file)
Main.java (You may use this file to write code to test your MyLinkedList)
You must complete the public class named MyLinkedList with fields and methods as defined below. Your MyLinkedList will implement the MyList interface that is provided in the myList.java file.
UML CLass Diagram: MyLinkedList
Structure of the Fields
As described by the UML Class Diagram above, your MyLinkedList class must have the following fields:
a private field named head of type Node, initialized to null
a private field named size of type int, initialized to 0
Structure of the Methods
As described by the UML Class Diagram above, your MyArrayList class must have the following methods:
a public method named addToEnd that takes an Object argument and returns nothing
a public method named insertAt that takes an int argument and an Object argument and returns nothing
a public method named removeAt that takes an int arguments and returns nothing
a public method named getAt that takes an int argument and returns an Object
a public method named getSize that takes no arguments and returns an int
Note that:
these methods are declared in the MyList interface. You will be implementing these methods in this MyLinkedList concrete derived class.
the getIterator method and the MyListIterator class are already implemented for you in the MyLinkedList class. Make no changes to this code.
the Node class is already implemented for you in the MyLinkedList class. Make no changes to this code.
_____________________________________________________
MyLinkedList.java
// Complete the implementation of your MyLinkedList class in this file
import java.util.NoSuchElementException;
public abstract class MyLinkedList implements MyList { // Implement the required fields and methods here // Fields private Node head = null; private int size = 0;
// Appends A Node At The End Of The Linked List
public void append(Object o) { // Create A New Node Node node = new Node(); node.data = o; node.next = null;
// If List Is Empty, New Node Is Head if (head == null) { head = node; } else { // Append To The End // Traverse To Last Node Node current = head; while (current.next != null) { current = current.next; } // Append To End current.next = node; // Increment The Size size++; } }
// Appends A Node At The Ith Index Of The Linked List @Override public void insertAt(int index, Object o) { // Check If The Index Is Valid if (index < 0 || index > size + 1) { throw new NoSuchElementException("Index is out of range."); } else { // Create A New Node Node node = new Node(); node.data = o;
// If I == 0, Insert At Head if (index == 0) { node.next = head; head = node; } else { // Get To The (I - 1)th Node Node current = head; for (int i = 0; i < index - 1; i++) { current = current.next; } // Append New Node Next To It node.next = current.next; current.next = node; } // Increment The Size size++; } }
// Removes The Ith Element From The @Override public void removeAt(int index) { // Check If Index Is Valid if (index < 0 || index > size) { throw new NoSuchElementException("Index is out of range."); } else { // Check If Index == 0, Remove Head if (index == 0) { head = head.next; } else { // Get To The (I - 1)th Node Node current = head; for (int i = 0; i < index - 1; i++) { current = current.next; } // Remove Ith Node if (current.next != null) { current.next = current.next.next; } else { // Tail Node current.next = null; } } // Decrement The Size size--; } }
// Returns The Element At Ith Index @Override public Object getAt(int index) { if (index < 0 || index > size) { throw new NoSuchElementException("Index is out of range."); } else { // Get To Ith Index Node current = head; for (int i = 0; i < index; i++) { current = current.next; } return current.data; } }
// Returns The Size Of The Linked List @Override public int getSize() { return size + 1; } @Override // Do not alter the code below public MyListIterator getIterator() { return new MyLinkedListIterator(); } private class MyLinkedListIterator implements MyListIterator { Node currentNode = null;
@Override public Object next() { if (currentNode != null) currentNode = currentNode.next; else currentNode = head;
return currentNode.data; }
@Override public boolean hasNext() { if (currentNode != null) return currentNode.next != null; else return head != null; } } class Node { public Object data = null; public Node next = null; } }
_____________________________________________________
MyList.java
/** This interface specifies the basic operations of any list-like object. This interface contains a variation of the methods of the standard java.util.List interface. */ public interface MyList { /** Adds an element at the end of the list. */ public void addToEnd(Object o);
/** Inserts an element at the specified index Throws NoSuchElementException if index is out of bounds. */ public void insertAt(int index, Object o);
/** Removes the element at the specified index Throws NoSuchElementException if index is out of bounds. */ public void removeAt(int index); /** Returns the element at the specified index Throws NoSuchElementException if index is out of bounds. */ public Object getAt(int index); /** Returns the size of the list. @return the number of elements in the list */ public int getSize(); /** Returns a list iterator for this list. @return a list iterator for this list */ public MyListIterator getIterator(); } _____________________________________________________
MyListIterator.java
/** A list iterator allows access of a position in a list. This interface contains a subset of the methods of the standard java.util.ListIterator interface. The methods for backward traversal are not included. */ public interface MyListIterator { /** Moves the iterator past the next element. @return the traversed element */ Object next(); /** Tests if there is an element after the iterator position. @return true if there is an element after the iterator position */ boolean hasNext(); }
_____________________________________________________
Main.java
// you may use this file to wrote and run code to test your MyArrayList class
public class Main { public static void main(String[] args) { } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
