题目:
用两个栈实现一个队列,请实现在队列尾部插入结点和在队列头部删除结点的功能.
思路:
第一个栈作为插入使用,当需要删除时,将第一个栈中的元素全部导出到第二个栈中,此时,第二个栈顶部的元素就是队列的头部需要删除的结点.
static class CQueue<T> {
Deque<T> stack_1 = new LinkedList<T>();
Deque<T> stack_2 = new LinkedList<T>();
void appendTail(T t) {
stack_1.push(t);
}
T deleteHead() {
// 若第二个栈不为空
if (stack_2.isEmpty()) {
while (!stack_1.isEmpty()) {
stack_2.push(stack_1.pop());
}
}
if (!stack_2.isEmpty()) {
return stack_2.pop();
}
return null;
}
}
public static void main(String[] args) {
// queue.offer();
// queue.poll();
// stack.push();
// stack.pop()
}