java专题——双栈实现队列

来源:互联网 发布:淘宝卡西欧手表真假 编辑:程序博客网 时间:2024/05/20 22:01

两个栈实现队列的方式:


原理——


建立连个栈,栈A和栈B,向栈A添加数据,当要获取数据时,从栈A中的数据“倒”到栈B中去这样保证了栈B中的top指向的是栈A中最先入栈的值,然后取出来,这样就轻松的实现了所谓的FIFO先进先出。


package 双栈实现队列;import java.util.Stack;public class StackToQueue {//创建栈A和栈Bprivate Stack A;private Stack B;/** * 初始化栈A和栈B */public StackToQueue() {A = new Stack();B = new Stack();}/** * 入栈A * @param data * @return * @throws Exception */public Object push(Object data){return A.push(data);}/** * 出栈,先看栈B是否空,不空就直接出栈,否则就倒栈A,在出栈B * @return */public Object pop(){Object obj = null;if(!B.isEmpty()){return B.pop();}else{while(!A.isEmpty()){obj = A.pop();B.push(obj);}if(!B.isEmpty()){obj = B.pop();}}return obj;}/** * 测试 * @param args */public static void main(String[] args) {   StackToQueue stq = new StackToQueue();      System.out.println("入栈:");   System.out.print(stq.push("A") + " ");   System.out.print(stq.push("B") + " ");   System.out.print(stq.push("C") + " ");   System.out.println();      System.out.println("出栈:");   System.out.print(stq.pop() + " ");   System.out.print(stq.pop() + " ");   System.out.print(stq.pop() + " ");}}


0 0
原创粉丝点击