Implementata completamente la deque
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package deque;
|
||||
|
||||
import deque.utility.DLNode;
|
||||
import exceptions.EmptyDequeException;
|
||||
|
||||
/**
|
||||
@@ -10,43 +11,113 @@ import exceptions.EmptyDequeException;
|
||||
*/
|
||||
public class NodeDeque<E> implements Deque <E> {
|
||||
|
||||
public NodeDeque(){
|
||||
header.setNext(trailer);
|
||||
trailer.setPrev(header);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return 0;
|
||||
return nelements;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return false;
|
||||
if (nelements == 0){
|
||||
return true;
|
||||
} else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public E getFirst() throws EmptyDequeException {
|
||||
return null;
|
||||
if (isEmpty()){
|
||||
throw new EmptyDequeException();
|
||||
} else {
|
||||
return header.getNext().getElement();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public E getLast() throws EmptyDequeException {
|
||||
return null;
|
||||
if (isEmpty()){
|
||||
throw new EmptyDequeException();
|
||||
} else {
|
||||
return trailer.getPrev().getElement();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFirst(E element) {
|
||||
DLNode<E> temp = new DLNode<E>(element);
|
||||
temp.setNext(header.getNext());
|
||||
temp.getNext().setPrev(temp);
|
||||
header.setNext(temp);
|
||||
temp.setPrev(header);
|
||||
nelements++;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addLast(E element) {
|
||||
DLNode<E> temp = new DLNode<E>(element);
|
||||
temp.setPrev(trailer.getPrev());
|
||||
temp.getPrev().setNext(temp);
|
||||
temp.setNext(trailer);
|
||||
trailer.setPrev(temp);
|
||||
nelements++;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public E removeFirst() throws EmptyDequeException {
|
||||
return null;
|
||||
if (isEmpty()){
|
||||
throw new EmptyDequeException();
|
||||
} else {
|
||||
DLNode<E> temp = header.getNext();
|
||||
header.setNext( header.getNext().getNext());
|
||||
header.getNext().setPrev(header);
|
||||
nelements--;
|
||||
return temp.getElement();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public E removeLast() throws EmptyDequeException {
|
||||
return null;
|
||||
if (isEmpty()){
|
||||
throw new EmptyDequeException();
|
||||
} else {
|
||||
DLNode<E> temp = trailer.getPrev();
|
||||
trailer.setPrev(trailer.getPrev().getPrev());
|
||||
trailer.getPrev().setNext(trailer);
|
||||
nelements--;
|
||||
return temp.getElement();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
String to_return = "";
|
||||
to_return = to_return + "[";
|
||||
|
||||
for ( DLNode<E> temp = header.getNext(); temp != trailer ; temp = temp.getNext()){
|
||||
|
||||
if ( temp.getNext() == trailer){
|
||||
to_return+=(temp.getElement().toString());
|
||||
}else{
|
||||
to_return+=( temp.getElement().toString() + ",");
|
||||
}
|
||||
}
|
||||
to_return = to_return + "]";
|
||||
|
||||
return to_return;
|
||||
}
|
||||
|
||||
private DLNode<E> header = new DLNode<E>();
|
||||
private DLNode<E> trailer = new DLNode<E>();
|
||||
private int nelements = 0;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user