题目
使用两个栈实现一个队列,队尾添加,队头删除
思路
Java弃用Vector,同理弃用实现Vector接口的Stack,使用LinkedList作为栈
一个一栈用于添加,一个二栈用于删除
每次删除前检查二栈是否为空,若为空,将一栈内全部对象依次移至二栈,然后从二栈弹出数据,若不为空,直接弹出二栈顶部数据
代码
public class Queue<T> {
LinkedList<T> list1 = new LinkedList<>();
LinkedList<T> list2 = new LinkedList<>();
static int size = 0;
static int current_size = 0;
public Queue(int size) {
this.size = size;
}
int add(T t) {
if (current_size == size)
return 0;
list1.push(t);
current_size++;
return 1;
}
T remove() {
if(current_size==0)
return null;
if (list2.size() == 0) {
while (list1.size() != 0) {
list2.push(list1.pop());
}
}
if (list2.size() != 0){
current_size--;
return list2.pop();
}
return null;
}
}