版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
输入由非负整数、+、-、*、/、(、)组成的计算表达式,计算该表达式的值 每个输入文件中一组数据。 输入只有一行不超过200个字符,其中不存在空格数据保证表达式一定合法,且所有的整数都不小于0、不大于1024中间结果保证不超过15位有效数位精度。
输出一行即表达式的值,结果精度保留小数点后2位
此题是数据结构课本上的原题,可用栈来做(符号有+-*/()#)
首先读取到的是数字则进数字栈若不是则考虑各个符号的优先顺序(假设#是符号栈的栈底,只有当读取到末尾的#号时才出栈)
当读取苻号为+或者-时只有栈顶是(、#才进栈,其余出栈
当读取符号为*或者/时只有栈顶是(、#、+、-才进栈,其余出栈
当读取符号为)时,除了(都出栈苴遇到(实施的是脱括号操作
当读取符号为#时,除了#都出栈且遇到#实施的是类似脱括号操作