level 1
Sibeya_king
楼主
import java.io.*;import java.math.BigDecimal;import java.util.*;class StackX{ private int maxSize; private char[] stackArray; private int top; public StackX(int size) // 构造栈 { maxSize = size; stackArray = new char[maxSize]; top = -1; } public void push(char j) // 入栈操作 { stackArray[++top] = j; } public char pop() // 出栈操作 { return stackArray[top--]; } public char peek() // 返回栈顶 { return stackArray[top]; } public boolean isEmpty() // 判断栈是否为空 { return (top == -1); } public int size() // 返回栈的长度 { return top+1; } public char peekN(int n) // 返回栈内第n个元素 { return stackArray[n]; } public void displayStack(String s) // 输出栈内元素 { System.out.print(s); }} class InToPost // 中缀转后缀{ private StackX theStack; // 声明栈theStack private String input; private String output = ""; char[] var = null; public InToPost(String in) { input = in; int stackSize = input.length(); //用输入的运算式字符串长度设定栈的长度 theStack = new StackX(stackSize);//定义栈 } public String doTrans() // 转换操作 { for(int j=0; j< input.length(); j++) // 转换次数循环 { char ch = input.charAt(j); //返回第j个字符 switch(ch) { case '+': // +或-运算符 case '-': gotOper(ch, 1); // go pop operators break; // 优先级为1 case '*': // *或/运算符 case '/': gotOper(ch, 2); // go pop operators break; // 优先级为2 case '^': gotOper(ch, 3); // go pop operators break; // 优先级为3 case '(': // 左括号 theStack.push(ch); // 压入栈 break; case ')': // 右括号 gotParen(ch); // 寻找对应的左括号 break; default: // 操作数 output = output + ch; // 写入输出字符串 /* for(int n = 0; n < output.length(); n++) { if((ch >= 'a') || (ch <= 'z')) var[n] = ch; System.out.print(var[n] + "="); }*/ break; } } while( !theStack.isEmpty() ) // 栈非空 { theStack.displayStack(""); // *diagnostic* output = output + theStack.pop(); // write to output } theStack.displayStack(""); // *diagnostic*
2008年06月18日 12点06分
1