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

106
com/xgiovio/DequeTest.java Normal file
View File

@@ -0,0 +1,106 @@
package com.xgiovio;
import deque.Deque;
import deque.NodeDeque;
import general_utility.test_object;
import stack.NodeStack;
/**
* Created with xgiovio.macbookair.
* User: xgiovio
* Date: 23/03/14
* Time: 20:37
*/
public class DequeTest {
public static void main(String[] args) {
NodeDeque<test_object> a = new NodeDeque<test_object>();
System.out.print(a.isEmpty());
System.out.print(a.size());
System.out.print(a);
a.addFirst(new test_object(10));
System.out.print(a.size());
System.out.print(a);
a.addFirst(new test_object(20));
System.out.print(a.size());
System.out.print(a);
a.addLast(new test_object(30));
System.out.print(a.size());
System.out.print(a);
a.addLast(new test_object(40));
System.out.print(a.size());
System.out.print(a);
a.addLast(new test_object(50));
a.addLast(new test_object(60));
a.addLast(new test_object(70));
System.out.print(a.size());
System.out.print(a.isEmpty());
System.out.println(a);
a.removeFirst();
System.out.println(a);
a.removeFirst();
System.out.println(a);
a.removeFirst();
System.out.println(a);
System.out.print(a.size());
System.out.print(a.isEmpty());
a.removeLast();
System.out.println(a);
a.removeLast();
System.out.println(a);
a.removeLast();
System.out.println(a);
a.removeLast();
System.out.println(a);
System.out.print(a.size());
System.out.print(a.isEmpty());
a.addFirst(new test_object(10));
System.out.print(a.size());
System.out.print(a);
a.addFirst(new test_object(20));
System.out.print(a.size());
System.out.print(a);
a.addLast(new test_object(30));
System.out.print(a.size());
System.out.print(a);
a.addLast(new test_object(40));
System.out.print(a.size());
System.out.print(a);
a.addLast(new test_object(50));
a.addLast(new test_object(60));
a.addLast(new test_object(70));
System.out.print(a.size());
System.out.print(a.isEmpty());
System.out.println(a);
a.removeFirst();
System.out.println(a);
a.removeFirst();
System.out.println(a);
a.removeFirst();
System.out.println(a);
System.out.print(a.size());
System.out.print(a.isEmpty());
a.removeLast();
System.out.println(a);
a.removeLast();
System.out.println(a);
a.removeLast();
System.out.println(a);
a.removeLast();
System.out.println(a);
System.out.print(a.size());
System.out.print(a.isEmpty());
}
}

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

View File

@@ -6,5 +6,43 @@ package deque.utility;
* Date: 17/03/14
* Time: 16:32
*/
public class DLNode {
public class DLNode <E> {
public DLNode (){
element = null;;
}
public DLNode (E in_element){
element = in_element;
}
public void setElement (E in_element){
element = in_element;
}
public void setNext (DLNode<E> in_next){
next = in_next;
}
public void setPrev (DLNode<E> in_prev){
prev = in_prev;
}
public E getElement (){
return element;
}
public DLNode<E> getNext() {
return next;
}
public DLNode<E> getPrev() {
return prev;
}
private DLNode<E> next = null;
private DLNode<E> prev = null;
private E element;
}