嗨,我在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