안녕하세요. 저는 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 (구현으로)를 사용하는 것이 좋습니다. –
'Stack'는 문자열 리터럴 만 포함 할 수 있습니다. 논리를 수정하거나 'Stack'에서 Type을 제거해야합니다. –
BatScream