用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
首先定义一个MyList类,
声明两个栈,
类中有两个方法,appendTail和deleteHead,
appendTail实现在队列尾部插入节点的操作
只需在stack1中压栈即可
deleteHead方法首先需要判断弹出栈是否为空如果为空就将插入栈的所有数据弹出并将弹出的数据压入栈中
如果弹出栈中没有数据抛出允许一次
返回弹出栈的栈顶元素,对应的就是队首元素
package com.helan.a;
import java.util.Stack;
public class StackQueue {
public static class MyList<T> {
private Stack<T> stack1 = new Stack<T>();
private Stack<T> stack2 = new Stack<T>();
public void appendTail(T t) {
stack1.add(t);
}
public T deleteHead() {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.add(stack1.pop());
}
}
if (stack2 == null) {
throw new RuntimeException("没有元素");
}
return stack2.pop();
}
}
public static void main(String[] args) {
MyList<Character> queue=new MyList<>();
queue.appendTail('a');
queue.appendTail('b');
queue.appendTail('c');
char head=queue.deleteHead();
System.out.println(head);
char head1=queue.deleteHead();
System.out.println(head1);
queue.appendTail('d');
head = queue.deleteHead();
System.out.println(head);
}
}