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;
|
package deque;
|
||||||
|
|
||||||
|
import deque.utility.DLNode;
|
||||||
import exceptions.EmptyDequeException;
|
import exceptions.EmptyDequeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -10,43 +11,113 @@ import exceptions.EmptyDequeException;
|
|||||||
*/
|
*/
|
||||||
public class NodeDeque<E> implements Deque <E> {
|
public class NodeDeque<E> implements Deque <E> {
|
||||||
|
|
||||||
|
public NodeDeque(){
|
||||||
|
header.setNext(trailer);
|
||||||
|
trailer.setPrev(header);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int size() {
|
public int size() {
|
||||||
return 0;
|
return nelements;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return false;
|
if (nelements == 0){
|
||||||
|
return true;
|
||||||
|
} else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public E getFirst() throws EmptyDequeException {
|
public E getFirst() throws EmptyDequeException {
|
||||||
return null;
|
if (isEmpty()){
|
||||||
|
throw new EmptyDequeException();
|
||||||
|
} else {
|
||||||
|
return header.getNext().getElement();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public E getLast() throws EmptyDequeException {
|
public E getLast() throws EmptyDequeException {
|
||||||
return null;
|
if (isEmpty()){
|
||||||
|
throw new EmptyDequeException();
|
||||||
|
} else {
|
||||||
|
return trailer.getPrev().getElement();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addFirst(E element) {
|
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
|
@Override
|
||||||
public void addLast(E element) {
|
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
|
@Override
|
||||||
public E removeFirst() throws EmptyDequeException {
|
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
|
@Override
|
||||||
public E removeLast() throws EmptyDequeException {
|
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
|
* Date: 17/03/14
|
||||||
* Time: 16:32
|
* 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