I've run into a bit of a snag in my code. I've written the class as far as my understanding goes, but I'm really not quite sure how to proceed. Any suggestions or examples of how some of these methods should be written would be much appreciated! Below are the assignment instructions and the provided ListNode Class, followed by the code I have so far.
LISTNODE
public class ListNode { public E data; public ListNode next; }
CODE
public class Deque20 { private ListNode front; // Reference to the front of the list private ListNode back; // Reference to the back of the list private int numElems; // Tracks number of elements in deque private LinkedList list;
public Deque20() { front = list; back = null; numElems = 0; } public void push(E x) // Adds x to the front of the deque { front.data = x; numElems++; } public E pop() // Removes and returns the front of the deque { return remove(); } public void add(E x) // Adds x to the back of the deque { back.data = x; numElems++; } public E remove() // Removes and returns the front of the deque { if (numElems == 0) { throw new IllegalArgumentException(); }else if (numElems == 1){ E temp = front.data; front.data = null; back.data = null; numElems--; return temp; } } public E peek() // Returns the front of the deque without removing it { if (numElems == 0) { throw new IllegalArgumentException(); }else{ return front.data; } } public boolean isEmpty() // Returns true if the deque has no elements { if (numElems == 0) { return true; }else{ return false; } } public int size() // Returns the number of elements in the deque { return numElems; } }
Module 3 Program - Deque Read this entire document carefully. You only get credit if you do everything correctly Background A very useful type of Collection interface is a deque (pronounced "deck"). Java has classes implementing this interface built in. For example Degue
dl LinkedList(); - new A deque is simply a list of objects, but access is restricted to adding and removing only from the list's front and back, and these operations are designed to be fast. Later in the semester, we'll see many applications of such lists when we study stacks and queues. I'm having you write a deque now to give you some insight into how Java collection classes work behind the scenes Specification Write a class named Deque20placed in the file Dque20.java . Your deque should support the following public methods public void push(Ex) public E pop () public void add (E ) public E romove public peek ) public boolean isEmpty() public int size Adds x to the front of the deque // Remove nd return3 the front of the deque // Adds x to the back of the deque //Removes and returns the front of the deque // Returna the front of the deque without removing ir // Returna true if the deque ha no element g // Retur1 the number of eleme :t in the degue If the client attempts to pop, remove or peek an empty list, your method should throw a NoSuchElementException .Some collection classes do not alloW null to be added or pushed, but your Deque20 should allow this (ie, d.pshould return null after d.push (aull). You may find it useful to write a toString method to help with your debugging, this is allowed, but is not a required element of your class. None of the methods should use a loop to do its work. This means that you will need to keep two references as fields, one to the front of the list and one to the back, and that you'll need to keep the count of the number of items as a field too. You don't need any other fields besides these three Use the starter code at the end of this writeup. It includes E> as part of its specification. This is how you make a class generic, allowing it to be a deque of any reference type. It's easy to write such classes. Simply put E anywhere you need a type in your code. Conceptually all of those E's are replaced by the user's supplied type Do not modify the ListNode class and do not submit it. I will use this exact file when testing your code Module 3 Program - Deque Read this entire document carefully. You only get credit if you do everything correctly Background A very useful type of Collection interface is a deque (pronounced "deck"). Java has classes implementing this interface built in. For example Degue dl LinkedList(); - new A deque is simply a list of objects, but access is restricted to adding and removing only from the list's front and back, and these operations are designed to be fast. Later in the semester, we'll see many applications of such lists when we study stacks and queues. I'm having you write a deque now to give you some insight into how Java collection classes work behind the scenes Specification Write a class named Deque20placed in the file Dque20.java . Your deque should support the following public methods public void push(Ex) public E pop () public void add (E ) public E romove public peek ) public boolean isEmpty() public int size Adds x to the front of the deque // Remove nd return3 the front of the deque // Adds x to the back of the deque //Removes and returns the front of the deque // Returna the front of the deque without removing ir // Returna true if the deque ha no element g // Retur1 the number of eleme :t in the degue If the client attempts to pop, remove or peek an empty list, your method should throw a NoSuchElementException .Some collection classes do not alloW null to be added or pushed, but your Deque20 should allow this (ie, d.pshould return null after d.push (aull). You may find it useful to write a toString method to help with your debugging, this is allowed, but is not a required element of your class. None of the methods should use a loop to do its work. This means that you will need to keep two references as fields, one to the front of the list and one to the back, and that you'll need to keep the count of the number of items as a field too. You don't need any other fields besides these three Use the starter code at the end of this writeup. It includes E> as part of its specification. This is how you make a class generic, allowing it to be a deque of any reference type. It's easy to write such classes. Simply put E anywhere you need a type in your code. Conceptually all of those E's are replaced by the user's supplied type Do not modify the ListNode class and do not submit it. I will use this exact file when testing your code