编写一个可以运行的Java程序,要求:用两个整数栈实现一个整数队列
时间: 2024-05-11 08:19:41 浏览: 8
下面是一个用两个整数栈实现整数队列的Java程序:
```java
import java.util.Stack;
public class QueueWithStacks {
private Stack<Integer> inStack; // 输入栈
private Stack<Integer> outStack; // 输出栈
public QueueWithStacks() {
inStack = new Stack<>();
outStack = new Stack<>();
}
// 将元素加入队列
public void enqueue(int x) {
inStack.push(x);
}
// 从队列中取出元素
public int dequeue() {
if (outStack.isEmpty()) {
while (!inStack.isEmpty()) {
outStack.push(inStack.pop());
}
}
return outStack.pop();
}
// 获取队列头元素
public int peek() {
if (outStack.isEmpty()) {
while (!inStack.isEmpty()) {
outStack.push(inStack.pop());
}
}
return outStack.peek();
}
// 判断队列是否为空
public boolean isEmpty() {
return inStack.isEmpty() && outStack.isEmpty();
}
// 获取队列长度
public int size() {
return inStack.size() + outStack.size();
}
// 测试程序
public static void main(String[] args) {
QueueWithStacks q = new QueueWithStacks();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
System.out.println(q.dequeue()); // 1
System.out.println(q.dequeue()); // 2
System.out.println(q.peek()); // 3
System.out.println(q.size()); // 1
}
}
```
这个程序中,我们用一个输入栈和一个输出栈来实现队列。在入队操作时,我们只需要将元素加入输入栈中即可;在出队操作时,我们如果输出栈为空,就先将输入栈中的元素逐个出栈并加入输出栈中,然后再从输出栈中取出元素。这样就可以实现队列的先进先出特性了。