<span style="font-size:24px;">package 双队列实现栈;
import java.util.LinkedList;
import java.util.Queue;
public class QueueToStack {
//创建队列A和B
private LinkedList A;
private LinkedList B;
/**
* 初始化队列A和B
*/
public QueueToStack(){
A = new LinkedList();
B = new LinkedList();
}
/**
* 入队列
* @param args
*/
public void push(Object data){
if(A.size() == 0 && B.size() == 0){
A.addLast(data);
}
if(A.size() != 0){
A.addLast(data);
}else if(B.size() != 0){
B.addLast(data);
}
}
/**
* 出队列
* @param args
*/
public Object pop(){
Object obj = null;
if(A.size() == 0 && B.size() == 0){
return null;
}
if(B.size() == 0){
while(A.size() > 0){
obj = A.pollFirst();
if(A.size() != 0){
B.addLast(obj);
}
}
}else if(A.size() == 0){
while(B.size() > 0){
obj = B.pollFirst();
if(B.size() != 0){
A.addLast(obj);
}
}
}
return obj;
}
public static void main(String[] args) {
QueueToStack qts = new QueueToStack();
qts.push("A");
qts.push("B");
qts.push("C");
System.out.println("出栈:");
System.out.print(qts.pop() + " ");
System.out.print(qts.pop() + " ");
System.out.print(qts.pop() + " ");
}
}
</span>
在以上代码中,注意pop,每次出栈都会覆盖临时变量,当从一个栈释放出的最后一个值赋给临时变量后,return输出的就是最后的一个值,从而实现了FILO先进后出的思想。
java专题——双队列实现栈
最新推荐文章于 2022-04-15 00:07:30 发布