Stack e Queue completati, compreso il toString. Versione sia array che lista.
This commit is contained in:
@@ -24,19 +24,21 @@ public class ArrayQueue<E> implements Queue<E> {
|
||||
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<E> implements Queue<E> {
|
||||
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<E> implements Queue<E> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFull() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
@@ -90,10 +88,30 @@ public class ArrayQueue<E> implements Queue<E> {
|
||||
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<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;
|
||||
E[] queue ;
|
||||
int front = -1;
|
||||
|
||||
Reference in New Issue
Block a user