栈的应用
package _1_3linkedList;
import java.util.Scanner;
/*1.3.9从标准输入中得到一个缺少左括号的表达式并打印出补全括号之后的中序表达式
*/
public class _1_3_9CompleteBracket
{
public static void main(String[] args)
{
String s=new String();
Stack<String> stack=new Stack<String>();
Scanner sc=new Scanner(System.in);
s=sc.nextLine(); /*用一个字符串来存储表达式*/
String[] strings =s.split(""); /*将字符串分割*/
for(int i=0;i<strings.length;i++)
{
if(!strings[i].equals(")"))
stack.push(strings[i]); /*操作数和操作符依次压入栈中*/
else
{
/*遇到右括号将最近添加的三个字符串取出
* 逆序排列并添加左右括号组成新的字符串
* 压入栈中
* */
String right=stack.pop();
String opr=stack.pop();
String left=stack.pop();
String expr="("+left+opr+right+")";
stack.push(expr);
}
}
System.out.println(stack.pop());
}
}
1+2)*3-4)*5-6)))
((1+2)*((3-4)*(5-6)))
相关阅读: