Stack e Queue completati, compreso il toString. Versione sia array che lista.
This commit is contained in:
@@ -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());
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user