用两个栈实现一个队列
public class Offer9 {
public static void main(String[] args) {
CustomQueue<Integer> customQueue = new CustomQueue();
customQueue.add(0);
customQueue.add(1);
customQueue.add(2);
customQueue.add(3);
customQueue.delete();
customQueue.add(4);
customQueue.add(5);
customQueue.delete();
customQueue.delete();
}
}
class CustomQueue<T> {
Stack<T> stackAdd = new Stack<>();
Stack<T> stackDel = new Stack<>();
public T add(T element) {
return stackAdd.push(element);
}
public T delete() {
if (stackDel.empty()) {
if (!stackAdd.empty()) {
while (!stackAdd.empty()) {
stackDel.push(stackAdd.pop());
}
return stackDel.pop();
}
} else {
return stackDel.pop();
}
return null;
}
}
用两个队列实现一个栈
public class Offer9 {
public static void main(String[] args) {
CustomStack<Integer> customStack = new CustomStack();
customStack.add(1);
customStack.add(2);
customStack.add(3);
customStack.add(4);
customStack.delete();
customStack.delete();
customStack.add(5);
customStack.add(6);
customStack.delete();
}
}
class CustomStack<T> {
Queue<T> queue1 = new LinkedList<>();
Queue<T> queue2 = new LinkedList<>();
public boolean add(T element) {
if (!queue2.isEmpty()) {
return queue2.add(element);
} else {
return queue1.add(element);
}
}
public T delete() {
if (!queue2.isEmpty()) {
while (!queue2.isEmpty()) {
if (queue2.size() == 1) {
break;
}
queue1.offer(queue2.poll());
}
return queue2.poll();
}
if (!queue1.isEmpty()) {
while (!queue1.isEmpty()) {
if (queue1.size() == 1) {
break;
}
queue2.offer(queue1.poll());
}
return queue1.poll();
}
return null;
}
}