Implementata completamente la deque

This commit is contained in:
2014-03-24 11:22:54 +01:00
parent d34dd20a9d
commit 9328c4c25e
3 changed files with 222 additions and 7 deletions

View File

@@ -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;
}