第9の資料構造スタック−計算機2の利用



Infix->postfixを変換するには、次の手順に従います.
左かっこ(の優先度が最も低い).
右活番)が最も優先度が高い.
結果値はリストouststackに、演算子はスタックopstackに、oustackに移動します.
被演算子が表示されたらoutbackに直接配置し、演算子が表示されたらopstackに配置し、優先度が自分より高いのがopstackであればpopしてpushします.入るべき時になったら、popを前に置きます.
次のコードはpseudoコードです
for each token in expr:
	if token == operand:
    	outstack.append(token)
    if token == '(':
    	opstack.push(token)
    if token == ')':
      opstack에 저장된 연산자
      '('를 pop할때까지 pop
      -> outstack에 append
  	if token in '+-*/':
    	opstack에서 token보다 우선순위 높은 연산자 모두 pop, 자신이 push
opstack에 남은 연산자 모두 pop -> outstack