importjava.util.Stack;classhannuota{publicintn;publicStringone="A";publicStringtwo="B";publicStringthree="C";publicStringFlag="L";hannuota(intn){this.n=n;}hannuota(intn,S...
import java.util.Stack;
class hannuota
{
public int n;
public String one="A";
public String two="B";
public String three="C";
public String Flag="L";
hannuota(int n)
{
this.n=n;
}
hannuota(int n,String Flag)
{
this.n=n;
this.Flag=Flag;
}
hannuota(int n,String one,String two ,String three,String Flag)
{
this.n=n;
this.one=one;
this.two=two;
this.three=three;
this.Flag=Flag;
}
}
public class han {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int size=4;
int n=size;
String one="A";
String two="B";
String three="C";
String tem=null;
Stack s=new Stack();
while(n>=1)
{
if(n==1)s.push(new hannuota(n--,one,two,three,"R"));
else
{
s.push(new hannuota(n--,one,two,three,"L"));
one=s.peek().one;
tem=s.peek().two;
two=s.peek().three;
three=tem;
}
}
while(s.peek()!=null)
{
while(s.peek().Flag=="R")
{
if(s.peek().n==1)System.out.println(s.peek().one+"->"+s.peek().three);
s.pop();
}
System.out.println(s.peek().one+"->"+s.peek().three);
s.peek().Flag="R";
int t=0;
tem=s.peek().one;
one=s.peek().two;
two=tem;
three=s.peek().three;
t=s.peek().n-1;
while(t>=1)
{
if(t==1)s.push(new hannuota(t--,one,two,three,"R"));
else
{
s.push(new hannuota(t--,one,two,three,"L"));
tem=s.peek().two;
two=s.peek().three;
three=tem;
one=s.peek().one;
}
}
}
}
}
这是网上找的程序,我们要求汉诺塔问题用栈来解决,可以运行但是提示如题警告。具体提示如下:
Exception in thread main java.util.EmptyStackException
at java.util.Stack.peek<85>85>
at han.main<55>55>
展开