您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习笔记-链表

2014-04-28 09:58 288 查看
表达式的计算

表达式的计算涉及到栈的操作

对于表达式:(a-b)*(c+d)-e/f

算法:用到两个栈,分别是符号栈和操作数栈。输入表达式时,为了表示表达式输入完毕,在表达式的最后加上“;”号,也就是说输入的表达式为(a-b)*(c+d)-e/f;

首先设置各个符号的优先级,“(”和“)”的优先级为0,也就是最低的;“+”和“-”的优先级为1;“*”和“/”的优先级为2.

步骤:1.首先在符号栈中压入符号“;”,读入表达式,将操作数压入操作数栈,符号压入符号栈。

2.符号入栈是有规则的,只有当要入栈的符号的优先级大于栈顶符号的优先级,或者要入栈的符是"("时(虽然"("的优先级很低),才可以入栈。否则从符号栈中弹出栈顶符号,从操作数栈依次弹出两个操作数,进行运算后,将结果压入操作数栈。随后继续比较要入栈符号的优先级与此时符号栈顶的符号优先级谁比较高,重复上述过程。

3.当读入的符号是“)”,而此时符号栈顶的符号是“(”时,则说明括号内的运算已经完成了,将“(”从符号栈弹出。

4.当读入的符号是“;”,且符号栈顶的符号是“;”时,说明表达式已经计算完毕,结果在操作数栈的栈顶。

多项式的表示与运算

为了节省存储空间,一般多项式多用链表来表示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: