Implementata completamente la deque
This commit is contained in:
106
com/xgiovio/DequeTest.java
Normal file
106
com/xgiovio/DequeTest.java
Normal 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());
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user