数组模拟队列:
static class queue1 {
private int[] arr;
private int first = 0;
private int end = 0;
public void add(int num) {
if (end >= arr.length) {
System.out.println("溢出");
}
arr[end++] = num;
}
public int poll() {
if (first == end) {
System.out.println("队列为空");
return -1;
}
return arr[first++];
}
}
数组模拟栈:
static class stack1 {
private static int[] arr;
int index = 0;
public void init(int length) {
arr = new int[length];
}
public void push(int num) {
if (index >= arr.length) {
System.out.println("溢出");
return;
}
arr[index++] = num;
}
public int pop() {
if (index == 0) {
System.out.println("栈为空");
return -1;
}
return arr[--index];
}
}
用栈实现一个队列:
static class queue2 {
Stack stack = new Stack();
Stack help = new Stack();
int size;
public void init(int length) {
size = length;
}
public void add(int num) {
if (stack.size() == size) {
System.out.println("溢出");
return;
}
stack.add(num);
}
public int pop() {
for (int i = 0; i < stack.size() - 1; i++) {
help.add(stack.pop());
}
int result = (int) stack.pop();
for (int i = 0; i < help.size(); i++) {
stack.add(help.pop());
}
return result;
}
}
用队列实现一个栈:
static class stack2 {
Queue queue1;
Queue help;
int size = 0;
public void init(int length) {
queue1 = new ArrayBlockingQueue(length);
help = new ArrayBlockingQueue(length);
}
public void add(int num) {
queue1.add(num);
size++;
}
public int put() {
for (int i = 0; i < size - 1; i++) {
help.add(queue1.poll());
}
int result = (int) queue1.poll();
size--;
for (int i = 0; i < size; i++) {
queue1.add(help.poll());
}
return result;
}
}