From 6f3e597f658dc787007169d6ae19e283b6b0fcfe Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Mon, 17 Mar 2014 17:45:44 +0100 Subject: [PATCH] implementato parzialmente la deque --- com/xgiovio/QueueTest.java | 16 ++--- deque/Deque.java | 22 ++++++ deque/NodeDeque.java | 52 ++++++++++++++ deque/utility/DLNode.java | 10 +++ exceptions/EmptyDequeException.java | 14 ++++ general_utility/test_object.java | 5 ++ queue/NodeQueue.java | 106 ++++++++++++++++++++++++++++ 7 files changed, 216 insertions(+), 9 deletions(-) create mode 100644 deque/Deque.java create mode 100644 deque/NodeDeque.java create mode 100644 deque/utility/DLNode.java create mode 100644 exceptions/EmptyDequeException.java create mode 100644 queue/NodeQueue.java diff --git a/com/xgiovio/QueueTest.java b/com/xgiovio/QueueTest.java index 4d0257e..ab4234c 100644 --- a/com/xgiovio/QueueTest.java +++ b/com/xgiovio/QueueTest.java @@ -1,7 +1,9 @@ package com.xgiovio; import general_utility.test_object; +import queue.ArrayQueue; import queue.ArrayQueueNoBlank; +import queue.NodeQueue; /** * Created with xgiovio.macbookair. @@ -17,23 +19,19 @@ public class QueueTest { - ArrayQueueNoBlank queue = new ArrayQueueNoBlank(5); + NodeQueue queue = new NodeQueue(); - queue.enqueue(new test_object(1)); - System.out.println(queue.front().get_data()); - queue.enqueue(new test_object(1)); - queue.enqueue(new test_object(1)); - queue.enqueue(new test_object(1)); - queue.enqueue(new test_object(1)); - queue.enqueue(new test_object(1)); queue.enqueue(new test_object(1)); queue.enqueue(new test_object(1)); queue.enqueue(new test_object(1)); queue.enqueue(new test_object(5)); - System.out.println(queue.front().get_data()); + + + System.out.println(queue); + System.out.println(queue.isEmpty()); System.out.println(queue.size()); diff --git a/deque/Deque.java b/deque/Deque.java new file mode 100644 index 0000000..931a499 --- /dev/null +++ b/deque/Deque.java @@ -0,0 +1,22 @@ +package deque; + +import exceptions.EmptyDequeException; + +/** + * Created with xgiovio.macbookair. + * User: xgiovio + * Date: 17/03/14 + * Time: 16:21 + */ +public interface Deque { + + int size(); + boolean isEmpty(); + E getFirst() throws EmptyDequeException; + E getLast() throws EmptyDequeException; + void addFirst (E element ); + void addLast (E element); + E removeFirst() throws EmptyDequeException; + E removeLast() throws EmptyDequeException; + +} diff --git a/deque/NodeDeque.java b/deque/NodeDeque.java new file mode 100644 index 0000000..dbfed1d --- /dev/null +++ b/deque/NodeDeque.java @@ -0,0 +1,52 @@ +package deque; + +import exceptions.EmptyDequeException; + +/** + * Created with xgiovio.macbookair. + * User: xgiovio + * Date: 17/03/14 + * Time: 16:26 + */ +public class NodeDeque implements Deque { + + @Override + public int size() { + return 0; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public E getFirst() throws EmptyDequeException { + return null; + } + + @Override + public E getLast() throws EmptyDequeException { + return null; + } + + @Override + public void addFirst(E element) { + + } + + @Override + public void addLast(E element) { + + } + + @Override + public E removeFirst() throws EmptyDequeException { + return null; + } + + @Override + public E removeLast() throws EmptyDequeException { + return null; + } +} diff --git a/deque/utility/DLNode.java b/deque/utility/DLNode.java new file mode 100644 index 0000000..02b42e0 --- /dev/null +++ b/deque/utility/DLNode.java @@ -0,0 +1,10 @@ +package deque.utility; + +/** + * Created with xgiovio.macbookair. + * User: xgiovio + * Date: 17/03/14 + * Time: 16:32 + */ +public class DLNode { +} diff --git a/exceptions/EmptyDequeException.java b/exceptions/EmptyDequeException.java new file mode 100644 index 0000000..e8f2afa --- /dev/null +++ b/exceptions/EmptyDequeException.java @@ -0,0 +1,14 @@ +package exceptions; + +/** + * Created with MONSTER. + * User: xgiovio + * Date: 05/03/14 + * Time: 0.09 + */ +public class EmptyDequeException extends RuntimeException { + + public EmptyDequeException(){ + super("Deque Empty"); + } +} diff --git a/general_utility/test_object.java b/general_utility/test_object.java index 8ed3615..71a93c6 100644 --- a/general_utility/test_object.java +++ b/general_utility/test_object.java @@ -16,6 +16,11 @@ public class test_object { return number; } + @Override + public String toString() { + return String.valueOf(number); + } + private int number; } diff --git a/queue/NodeQueue.java b/queue/NodeQueue.java new file mode 100644 index 0000000..08157d0 --- /dev/null +++ b/queue/NodeQueue.java @@ -0,0 +1,106 @@ +package queue; + +import exceptions.EmptyQueueException; +import stack.utility.Node; + +import java.awt.image.AreaAveragingScaleFilter; + +/** + * Created with xgiovio.macbookair. + * User: xgiovio + * Date: 17/03/14 + * Time: 14:08 + */ +public class NodeQueue implements Queue { + + + @Override + public void enqueue(E element) { + + Node temp = new Node(element,null); + if (rear == null){ + rear = temp; + }else { + rear.setNext(temp); + rear = temp; + } + number_of_elements++; + if (number_of_elements == 1){ + front = rear; + } + + } + + @Override + public E dequeue() throws EmptyQueueException { + if (isEmpty()){ + throw new EmptyQueueException(); + }else{ + Node temp = front; + front = front.getNext(); + number_of_elements--; + if (number_of_elements == 0){ + rear = front; + } + return temp.getElement(); + } + } + + @Override + public E front() throws EmptyQueueException { + if (isEmpty()){ + throw new EmptyQueueException(); + } else{ + return front.getElement(); + } + } + + @Override + public boolean isEmpty() { + if (number_of_elements == 0){ + return true; + }else{ + return false; + } + } + + @Override + public boolean isFull() { + return false; + } + + @Override + public int size() { + return number_of_elements; + } + + + @Override + public String toString() { + Node temp; + String to_return = ""; + if (!isEmpty()){ + for (temp = front;temp != null;temp = temp.getNext()){ + to_return+=temp.getElement(); + if (temp.getNext() != null){ + to_return+=","; + } + + } + + } + return to_return; + + } + + + + + + + private Node front = null; + private Node rear = null; + private int number_of_elements = 0; + + +}