![](https://lstatic.shangxueba.com/jiandati/h5/images/m_q_title.png)
[主观题]
假设一个仅包含二元运算符的算术表达式以链表形式存储在二叉树BT中,写出计算该算术表达式值的算
法。【东北大学2000三、2(10分)】
提问人:网友goon7002
发布时间:2022-01-07
S→E
E→E?E|E!E|(E)|a
该文法是二义文法,假设规定该文法中?的运算优先级高于!,?满足右结合,!满足左结合。试构造该文法的无冲突的SLR(1)分析表。
算法分析:根据矩阵相加的法则,C中的非零元素cij只可能有3种情况:aij+bij,aij(bij=0),bij(aij=0)。因此,当B加到A上时,对A的十字链表来说,或者是改变结点的val域值aij+bij≠0,或者不变(bij=0),或者插入一个新结点(aij=0),还可能是删除一个结点(aij+bij=0)。整个运算可从矩阵的第一行逐步进行。对每一行都从行表头出发分别找到A和B在该行中的第一个非零元素结点后开始比较,然后按以下4种不同情况分别处理(假设pa和pb分别指向A和B的十字链表中行值相同的两个结点)。
A、当阶符为“01”时,不需要作溢出处理
B、溢出与否可由阶码的符号决定
C、阶码[ j ]补=01,XX...X为上溢
D、阶码[ j ]补=10,XX...X为下溢
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!