java堆栈的问题,java堆栈的有关问题

Java codeimport java.util.LinkedList;

import java.util.Stack;

public class TestIO {

/**

* 穷举每一种可能的出栈序列

* @param inQueue

* @param stack

* @param outQueue

*/

public static void getStackSequence(LinkedList inQueue,Stack stack,LinkedList outQueue){

if(inQueue.isEmpty()&&stack.isEmpty()){

//输出可能的出栈序列

while(!outQueue.isEmpty()){

System.out.print(outQueue.poll()+" ");

}

System.out.println();

}else if(!inQueue.isEmpty()&&!stack.isEmpty()){

//保存现场

LinkedList tempInQueue=new LinkedList(inQueue);

LinkedList tempOutQueue=new LinkedList(outQueue);

Stack tempStack=new Stack();

for(int i=0;i

//队首元素入栈

stack.push(inQueue.poll());

getStackSequence(inQueue, stack, outQueue);

//还原现场

inQueue=tempInQueue;

outQueue=tempOutQueue;

stack=tempStack;

//栈顶元素出栈

outQueue.offer(stack.pop());

getStackSequence(inQueue, stack, outQueue);

}else if(!inQueue.isEmpty()&&stack.isEmpty()){

//队首元素入栈

stack.push(inQueue.poll());

getStackSequence(inQueue, stack, outQueue);

}else if(inQueue.isEmpty()&&!stack.isEmpty()){

//栈顶元素出栈

outQueue.offer(stack.pop());

getStackSequence(inQueue, stack, outQueue);

}else{

}

}

/**

* 封装输出,获得内部算法所需要的接口

* @param in

* @param out

*/

private static void init(String[] in){

Stack stack=new Stack();

LinkedList outQueue=new LinkedList();

LinkedList inQueue=new LinkedList();

for(int i=0;i

getStackSequence(inQueue, stack, outQueue);

}

public static void main(String[] args){

String[] in={"1","2","3","4","5"}; //入栈顺序

init(in);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值