2013-04-19 105 views
-1

我在嘗試將表達式更改爲前綴表示法。我能夠找出後綴符號,我想知道是否可以在創建我的前綴類時使用我的後綴類的基本模板。我想要表達式如... (6 *(24 + 81))並且輸出:* 6 + 24 81.這可能沒有跟蹤關卡嗎?......這意味着我需要一個跟蹤變量,當我的循環進入表達式的括號部分?我只是很難想象結構如何工作。創建前綴表示法表達式

這裏是我的後綴代碼:

static Stack operatorStack = new Stack(); 
String ConvertToPostfix(String exp) { 
    exp = "("+exp+")"; 
    int i; 
    char token; 
    String output = ""; 

    for (i = 0; i < exp.length(); i++) { 
     token = exp.charAt(i); 
     if (Character.isLetterOrDigit(token) == true) 
      output += token; 
     else if (token == '(') 
      operatorStack.push(token); 
     else if (token == ')') { 
      char topChar; 
      while ((topChar = peekAtTop()) != '(') { 
       output += topChar; 
       popAtTop(); 
      } 

     operatorStack.pop(); 
     } 
     else { 
      while (priority(token) <= priority(peekAtTop())) { 
       output += peekAtTop(); 
       popAtTop(); 
      } 
      operatorStack.push(token); 
     } 
} 
    return output; 

} 

回答

2

Essentialy的expressions are tree structures

下面是這方面的一個例證隨機: 3 * ((7 + 1)/4 + (17 - 5)

要更改線性表示(即,表達爲一個字符串)你只需要改變你遍歷樹的方式。上面鏈接的維基百科文章包含所有三個例子。

你需要做的是:

  • 學會代表trees in Java(總是方便);
  • 將你的表情解析爲一棵樹(相當簡單),StringTokenizer是你的朋友;
  • 將三個遍歷過程轉換爲Java;
  • 打電話給你的教授要求的任何程序。 (BTW傾聽教授更不會傷害)。

希望能幫到你!