From d34dd20a9de8f95b73d101c7638296888911f109 Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Mon, 24 Mar 2014 00:02:12 +0100 Subject: [PATCH] Stack e Queue completati, compreso il toString. Versione sia array che lista. --- com/xgiovio/ArrayTest.java | 10 ++++++++-- com/xgiovio/QueueTest.java | 39 +++++++++++++++++++++++++++---------- queue/ArrayQueue.java | 40 +++++++++++++++++++++++++++----------- queue/NodeQueue.java | 10 +++------- queue/Queue.java | 1 - stack/ArrayStack.java | 5 ----- stack/NodeStack.java | 6 +----- stack/Stack.java | 1 - 8 files changed, 70 insertions(+), 42 deletions(-) diff --git a/com/xgiovio/ArrayTest.java b/com/xgiovio/ArrayTest.java index 5ce25a5..648b9e4 100644 --- a/com/xgiovio/ArrayTest.java +++ b/com/xgiovio/ArrayTest.java @@ -2,7 +2,6 @@ package com.xgiovio; import general_utility.test_object; import stack.ArrayStack; -import stack.FixedArrayStack; import stack.NodeStack; /** @@ -14,16 +13,23 @@ import stack.NodeStack; public class ArrayTest { public static void main(String[] args) { - NodeStack a = new NodeStack(); + NodeStack a = new NodeStack(); + System.out.print(a.isEmpty()); a.push(new test_object(10)); + System.out.print(a.size()); a.push(new test_object(20)); + System.out.print(a.size()); a.push(new test_object(30)); + System.out.print(a.size()); a.push(new test_object(40)); + System.out.print(a.size()); a.pop(); + System.out.print(a.size()); a.pop(); + System.out.print(a.size()); System.out.print(a.toString()); diff --git a/com/xgiovio/QueueTest.java b/com/xgiovio/QueueTest.java index ab4234c..9aedaae 100644 --- a/com/xgiovio/QueueTest.java +++ b/com/xgiovio/QueueTest.java @@ -2,7 +2,6 @@ package com.xgiovio; import general_utility.test_object; import queue.ArrayQueue; -import queue.ArrayQueueNoBlank; import queue.NodeQueue; /** @@ -21,19 +20,39 @@ public class QueueTest { NodeQueue queue = new NodeQueue(); + 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); + System.out.println(queue.size()); + + queue.enqueue(new test_object(1)); + System.out.println(queue); + System.out.println(queue.size()); + + queue.enqueue(new test_object(1)); + System.out.println(queue); + System.out.println(queue.size()); + + queue.enqueue(new test_object(5)); + System.out.println(queue); + System.out.println(queue.size()); + System.out.println(queue.isEmpty()); - System.out.println(queue.size()); + + System.out.println(queue.front()); + queue.dequeue(); + queue.dequeue(); + System.out.println(queue); + queue.enqueue(new test_object(6)); + System.out.println(queue); + + queue.dequeue(); + System.out.println(queue); + queue.dequeue(); + queue.dequeue(); + System.out.println(queue); + diff --git a/queue/ArrayQueue.java b/queue/ArrayQueue.java index c84e67b..c12a84f 100644 --- a/queue/ArrayQueue.java +++ b/queue/ArrayQueue.java @@ -24,19 +24,21 @@ public class ArrayQueue implements Queue { if (front == -1){ front++; } - queue[rear]= element; - rear = (rear + 1) % queue.length; - if ( rear ==( front - 1) ){ + if ( rear == mod( front - 1,queue.length) ){ //reallocate; E[] new_queue = (E[]) new Object[queue.length * 2]; for (int i= 0 ;i<(queue.length -1); i++){ - new_queue[i] = queue[front]; - front = (front + 1) % queue.length; + new_queue[i] = queue[(front + i) % queue.length]; } rear = queue.length - 1; front = 0; queue = new_queue; + queue[rear]= element; + rear = (rear + 1) % queue.length; + } else { + queue[rear]= element; + rear = (rear + 1) % queue.length; } } @@ -48,7 +50,7 @@ public class ArrayQueue implements Queue { throw new EmptyQueueException(); }else{ E temp = queue[front]; - front++; + front = (front + 1)%queue.length; if (front == rear){ front = -1; rear = 0; @@ -77,10 +79,6 @@ public class ArrayQueue implements Queue { } } - @Override - public boolean isFull() { - return false; - } @Override public int size() { @@ -90,10 +88,30 @@ public class ArrayQueue implements Queue { if (front < rear){ return (rear - front); }else{ - return (queue.length - front + rear); + return (queue.length - (front - rear)); } } + @Override + public String toString() { + String to_return = ""; + to_return = to_return + "["; + for (int i = 0;i implements Queue { } } - @Override - public boolean isFull() { - return false; - } + @Override public int size() { @@ -78,8 +75,7 @@ public class NodeQueue implements Queue { @Override public String toString() { Node temp; - String to_return = ""; - if (!isEmpty()){ + String to_return = "["; for (temp = front;temp != null;temp = temp.getNext()){ to_return+=temp.getElement(); if (temp.getNext() != null){ @@ -87,8 +83,8 @@ public class NodeQueue implements Queue { } } + to_return += "]"; - } return to_return; } diff --git a/queue/Queue.java b/queue/Queue.java index e9182f5..916f2f0 100644 --- a/queue/Queue.java +++ b/queue/Queue.java @@ -14,7 +14,6 @@ import exceptions.EmptyQueueException; public E dequeue () throws EmptyQueueException; public E front() throws EmptyQueueException; public boolean isEmpty(); - public boolean isFull(); public int size(); } diff --git a/stack/ArrayStack.java b/stack/ArrayStack.java index dca1692..8d30ad0 100644 --- a/stack/ArrayStack.java +++ b/stack/ArrayStack.java @@ -64,11 +64,6 @@ public class ArrayStack implements Stack { return false; } - @Override - // not used - public boolean isFull() { - return false; - } @Override public int size() { diff --git a/stack/NodeStack.java b/stack/NodeStack.java index 81efa08..16655b8 100644 --- a/stack/NodeStack.java +++ b/stack/NodeStack.java @@ -48,11 +48,7 @@ public class NodeStack implements Stack { return false; } - @Override - // not used - public boolean isFull() { - return false; - } + @Override public int size() { diff --git a/stack/Stack.java b/stack/Stack.java index a181cb8..045ddeb 100644 --- a/stack/Stack.java +++ b/stack/Stack.java @@ -15,7 +15,6 @@ public interface Stack { public E top () throws EmptyStackException; public E pop () throws EmptyStackException; public boolean isEmpty(); - public boolean isFull(); public int size(); }