Stack e Queue completati, compreso il toString. Versione sia array che lista.

This commit is contained in:
2014-03-24 00:02:12 +01:00
parent e3059ed799
commit d34dd20a9d
8 changed files with 70 additions and 42 deletions

View File

@@ -2,7 +2,6 @@ package com.xgiovio;
import general_utility.test_object; import general_utility.test_object;
import stack.ArrayStack; import stack.ArrayStack;
import stack.FixedArrayStack;
import stack.NodeStack; import stack.NodeStack;
/** /**
@@ -14,16 +13,23 @@ import stack.NodeStack;
public class ArrayTest { public class ArrayTest {
public static void main(String[] args) { public static void main(String[] args) {
NodeStack<test_object> a = new NodeStack<test_object>(); NodeStack<test_object> a = new NodeStack<test_object>();
System.out.print(a.isEmpty());
a.push(new test_object(10)); a.push(new test_object(10));
System.out.print(a.size());
a.push(new test_object(20)); a.push(new test_object(20));
System.out.print(a.size());
a.push(new test_object(30)); a.push(new test_object(30));
System.out.print(a.size());
a.push(new test_object(40)); a.push(new test_object(40));
System.out.print(a.size());
a.pop(); a.pop();
System.out.print(a.size());
a.pop(); a.pop();
System.out.print(a.size());
System.out.print(a.toString()); System.out.print(a.toString());

View File

@@ -2,7 +2,6 @@ package com.xgiovio;
import general_utility.test_object; import general_utility.test_object;
import queue.ArrayQueue; import queue.ArrayQueue;
import queue.ArrayQueueNoBlank;
import queue.NodeQueue; import queue.NodeQueue;
/** /**
@@ -21,19 +20,39 @@ public class QueueTest {
NodeQueue<test_object> queue = new NodeQueue<test_object>(); NodeQueue<test_object> queue = new NodeQueue<test_object>();
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); 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.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);

View File

@@ -24,19 +24,21 @@ public class ArrayQueue<E> implements Queue<E> {
if (front == -1){ if (front == -1){
front++; front++;
} }
queue[rear]= element; if ( rear == mod( front - 1,queue.length) ){
rear = (rear + 1) % queue.length;
if ( rear ==( front - 1) ){
//reallocate; //reallocate;
E[] new_queue = (E[]) new Object[queue.length * 2]; E[] new_queue = (E[]) new Object[queue.length * 2];
for (int i= 0 ;i<(queue.length -1); i++){ for (int i= 0 ;i<(queue.length -1); i++){
new_queue[i] = queue[front]; new_queue[i] = queue[(front + i) % queue.length];
front = (front + 1) % queue.length;
} }
rear = queue.length - 1; rear = queue.length - 1;
front = 0; front = 0;
queue = new_queue; 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<E> implements Queue<E> {
throw new EmptyQueueException(); throw new EmptyQueueException();
}else{ }else{
E temp = queue[front]; E temp = queue[front];
front++; front = (front + 1)%queue.length;
if (front == rear){ if (front == rear){
front = -1; front = -1;
rear = 0; rear = 0;
@@ -77,10 +79,6 @@ public class ArrayQueue<E> implements Queue<E> {
} }
} }
@Override
public boolean isFull() {
return false;
}
@Override @Override
public int size() { public int size() {
@@ -90,10 +88,30 @@ public class ArrayQueue<E> implements Queue<E> {
if (front < rear){ if (front < rear){
return (rear - front); return (rear - front);
}else{ }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<size();i++){
if ( ((i+front)%queue.length) == mod(rear - 1,queue.length)){
to_return+=(queue[(i+front)%queue.length].toString());
}else{
to_return+=(queue[(i+front)%queue.length].toString() + ",");
}
}
to_return = to_return + "]";
return to_return;
}
private int mod(int a,int b){
return (((a % b) + b) % b);
}
int def_size = 100; int def_size = 100;
E[] queue ; E[] queue ;
int front = -1; int front = -1;

View File

@@ -64,10 +64,7 @@ public class NodeQueue<E> implements Queue<E> {
} }
} }
@Override
public boolean isFull() {
return false;
}
@Override @Override
public int size() { public int size() {
@@ -78,8 +75,7 @@ public class NodeQueue<E> implements Queue<E> {
@Override @Override
public String toString() { public String toString() {
Node<E> temp; Node<E> temp;
String to_return = ""; String to_return = "[";
if (!isEmpty()){
for (temp = front;temp != null;temp = temp.getNext()){ for (temp = front;temp != null;temp = temp.getNext()){
to_return+=temp.getElement(); to_return+=temp.getElement();
if (temp.getNext() != null){ if (temp.getNext() != null){
@@ -87,8 +83,8 @@ public class NodeQueue<E> implements Queue<E> {
} }
} }
to_return += "]";
}
return to_return; return to_return;
} }

View File

@@ -14,7 +14,6 @@ import exceptions.EmptyQueueException;
public E dequeue () throws EmptyQueueException; public E dequeue () throws EmptyQueueException;
public E front() throws EmptyQueueException; public E front() throws EmptyQueueException;
public boolean isEmpty(); public boolean isEmpty();
public boolean isFull();
public int size(); public int size();
} }

View File

@@ -64,11 +64,6 @@ public class ArrayStack<E> implements Stack<E> {
return false; return false;
} }
@Override
// not used
public boolean isFull() {
return false;
}
@Override @Override
public int size() { public int size() {

View File

@@ -48,11 +48,7 @@ public class NodeStack<E> implements Stack<E> {
return false; return false;
} }
@Override
// not used
public boolean isFull() {
return false;
}
@Override @Override
public int size() { public int size() {

View File

@@ -15,7 +15,6 @@ public interface Stack<E> {
public E top () throws EmptyStackException; public E top () throws EmptyStackException;
public E pop () throws EmptyStackException; public E pop () throws EmptyStackException;
public boolean isEmpty(); public boolean isEmpty();
public boolean isFull();
public int size(); public int size();
} }