package maintest;
import java.util.Stack;
import myutil.MyUtil;
/**
* @ClassName: StackTest
* @CreateTime Sep 17, 2013 12:03:19 PM
* @author : Mayi
* @Description: 数据结构习题与解析P82【例3-2-8】设以整数序列1,2,3,4作为顺序栈st的输入,利用push(进栈)和pop(出栈)操作
* 写出所有可能的输出并编程实现算法。
* 输出:
* 4,3,2,1。
* 3,4,2,1。
* 3,2,4,1。
* 3,2,1,4。
* 2,4,3,1。
* 2,3,4,1。
* 2,3,1,4。
* 2,1,4,3。
* 2,1,3,4。
* 1,4,3,2。
* 1,3,4,2。
* 1,3,2,4。
* 1,2,4,3。
* 1,2,3,4。
*
*/
public class StackTest {
/**
* @param args
*/
public static void main(String[] args) {
int[] path=new int[]{1,2,3,4};
process(1,path,0);
}
static int total=4;
@SuppressWarnings("unchecked")
static Stack st=new Stack();
@SuppressWarnings("unchecked")
public static void process(int pos,int path[],int curp){
int m;
if(pos<=total){
st.push(pos);
process(pos+1, path, curp);
st.pop();
}
if(!st.isEmpty()){
m=Integer.parseInt(st.pop().toString());
path[curp]=m;
curp++;
process(pos, path, curp);
st.push(m);
}
if(pos>total&&st.isEmpty()){
MyUtil.Prt("输出:");
for (int j = 0; j < curp; j++) {
MyUtil.Prt(path[j]);
if(j==curp-1){
MyUtil.Prt("。");
}else{
MyUtil.Prt(",");
}
}
MyUtil.Prtln("");
}
}
}
数据结构习题与解析P82【例3-2-8】Java实现
最新推荐文章于 2024-11-05 13:00:47 发布