//队列属于先进先出的结构
public class MyQueue<E> {
//用于存储数据的栈
private Stack<E> stack1=null;
//用于获取数据的栈
private Stack<E> stack2=null;
//构造方法初始化属性
public MyQueue(Stack<E> stack1, Stack<E> stack2) {
this.stack1 = stack1;
this.stack2 = stack2;
}
//入队
public Stack inQueue(E e){
stack1.push(e);
return stack1;
}
//出队
public E outQueue(){
//判断获取数据的队列是否为空,若为空要将stack1的数据压入stack2
if(stack2.empty()){
//只要stack1不为空,就将stack1弹出的数据压入stack2
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}
//最后再将stack2的数据弹出,就能实现队列的先进先出
return stack2.pop();
}
@Override
public String toString(){
String s="";
//获取当前队列
MyQueue<E> que=this;
for (E e : stack1) {
System.out.println(e);
}
return s;
}
public static void main(String[] args) {
Stack<String> s1 =new Stack<>();
Stack<String> s2 =new Stack<>();
MyQueue<String> myQueue = new MyQueue<>(s1,s2);
myQueue.inQueue("this");
myQueue.inQueue("is");
myQueue.inQueue("a");
myQueue.inQueue("queue");
System.out.println(myQueue);//this is a queue
System.out.println(myQueue.outQueue());//this
System.out.println(myQueue.outQueue());//is
System.out.println(myQueue.outQueue());//a
System.out.println(myQueue.outQueue());//queue
}
}
java用栈实现队列
最新推荐文章于 2025-03-30 07:24:36 发布