我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 栈法 >

表达式求值(栈方法C++语言描述)(二)

归档日期:07-05       文本归类:栈法      文章编辑:爱尚语录

  上篇中完成了对表达式求值的整体过程,接下来看看如何处理不同类型的token。

  对运算数的处理比较简单,它直接调用函数strtod(),将字符串中的运算数转换为浮点类型并将它压入运算数栈中:

  函数strtod()和函数isdigital()分别被声明于头文件cstdlib和cctype中,前者通过第二个参数返回指向转换结束位置下一个字符的指针。

  对左括号的处理和对运算数的处理基本一致直接压入运算符栈中。之所以左括号在priority()函数中的优先级最低,是为了保证在右括号出现之前,左括号一直都不会被弹出:

  处理右括号的过程与整个表达式最后的处理过程类似,一直进行运算压栈,直至运算符栈顶元素为左括号为止;当然,运算符栈弹至空时左括号仍未出现,即出现了括号不匹配:

本文链接:http://apawoodbury.com/zhanfa/192.html