/**
* 数组实现栈和队列
*/
public class ArrayToQueueAndStack {
public static class MyStack<T> {
public Object[] arr;
public int size;
public int limit;
public MyStack(int limit) {
this.arr = new Object[limit];
this.limit = limit;
}
public void push(T value) {
if (size == limit) {
System.out.println("the stack is full");
return;
}
arr[size++] = value;
}
public T pop() {
if (isEmpty()) {
System.out.println("the stack is empty");
return null;
}
return (T) arr[--size];
}
public boolean isEmpty() {
return size == 0;
}
}
public static class MyQueue<T> {
public Object[] arr;
public int pushIndex;
public int pollIndex;
public int size;
public int limit;
public MyQueue(int limit) {
this.arr = new Object[limit];
this.limit = limit;
}
public void push(T value) {
if (size == limit) {
System.out.println("the queue is full");
return;
}
arr[pushIndex] = value;
size++;
pushIndex = nextIndex(pushIndex);
}
public T poll() {
if (isEmpty()) {
System.out.println("the queue is empty");
return null;
}
T value = (T) arr[pollIndex];
size--;
pollIndex = nextIndex(pollIndex);
return value;
}
public boolean isEmpty() {
return size == 0;
}
private int nextIndex(int pushIndex) {
return ++pushIndex % limit;
}
}
}
/* 如有错误,欢迎批评指正 */