嗨,我在Java Stack类的工作,我的问题是,在这个堆栈我想插入(推)String类型的元素,但我也要插入一个树,该代码是下面的:我不知道如何把一棵树到堆栈
public static void Expression(Stack<String> exp)
{
boolean error = false;
String leftExp,rightExp = "";
Stack<String> stackOp = new Stack<String>();
while(!exp.empty() && (error == false))
{
switch(elementType(exp.peek())){
case 'I':
error = true;
break;
case 'O':
if(stackOp.size() < 2)
error = true;
else
{
rightExp = stackOp.pop();
leftExp = stackOp.pop();
Tree subTree = new Tree();
subTree.insertNode(exp.peek());
subTree.insertNode(rightExp);
subTree.insertNode(leftExp);
stackOp.push(subTree);//here is were I have the mistake
}
break;
default:
stackOp.push(exp.peek());
}
}
}
public static char elementType(String car){
char c = 'Z';
if(car.equals("("))
c = 'I';
else if(car.equals(")"))
c = 'D';
else if(car.equals("+") || car.equals("-") || car.equals("*") || car.equals("/"))
c = 'O';
return c;
}
此代码基本上变换数学表达式成二进制树中,为此,我需要的输入,它是表达,输出其是二叉树和另一个包含变量,数字和子树的本地堆栈。但是,我怎样才能使一个包含不同类型的元素的堆栈?
堆栈是遗留的(过时的)集合,建议使用Deque(作为接口)和ArrayDeque(作为实现)来代替。 – 2014-11-22 01:34:57
'堆栈'只能包含字符串文字。你需要修改你的逻辑或从它移除''Stack'的类型。 –
BatScream
2014-11-22 02:03:27