利用栈实现算数表达式2*(35_10)+5求解,给出实现过程
1个回答
关注
展开全部
亲,您好,实现过程如下 θ₁ > θ₂ :θ₁ 的优先级高于 θ₂ ,应执行θ₁ 对应的运算; θ₁ < θ₂ : θ₁ 的优先级低于 θ₂ ,不执行任何运算,继续扫描下一运算符; θ₁ = θ₂ : θ₁ 的优先级等于 θ₂ ,两者为左右括号或同为#。 要实现以上算符优先算法需使用两个栈,一个称作运算符栈(OPTR),用于存放运算符;另一个称作操作数栈(OPND),用于存放操作数或运算结果。算法的基本思想是:初始化OPTR和OPND两个栈,并将表达式起始符“#”作为OPTR栈的栈底元素。依次读入表达式中的每个字符,若是操作数则进OPND栈,若是运算符,则与OPTR栈的栈顶元素进行优先级比较,并执行相应的操作:若栈顶运算符的优先级低于刚读入的运算符(θ₁θ₂),则将栈顶运算符出栈送入θ,同时OPND栈弹出两个操作数a和b,对a和b执行θ运算并使运算结果进OPND栈。 当OPND栈的栈顶元素和当前读入字符均为“#”,整个表达式求值完毕,OPND栈的栈顶元素即为表达结果。
咨询记录 · 回答于2022-12-26
利用栈实现算数表达式2*(35_10)+5求解,给出实现过程
亲,您好,实现过程如下 θ₁ > θ₂ :θ₁ 的优先级高于 θ₂ ,应执行θ₁ 对应的运算; θ₁ < θ₂ : θ₁ 的优先级低于 θ₂ ,不执行任何运算,继续扫描下一运算符; θ₁ = θ₂ : θ₁ 的优先级等于 θ₂ ,两者为左右括号或同为#。 要实现以上算符优先算法需使用两个栈,一个称作运算符栈(OPTR),用于存放运算符;另一个称作操作数栈(OPND),用于存放操作数或运算结果。算法的基本思想是:初始化OPTR和OPND两个栈,并将表达式起始符“#”作为OPTR栈的栈底元素。依次读入表达式中的每个字符,若是操作数则进OPND栈,若是运算符,则与OPTR栈的栈顶元素进行优先级比较,并执行相应的操作:若栈顶运算符的优先级低于刚读入的运算符(θ₁θ₂),则将栈顶运算符出栈送入θ,同时OPND栈弹出两个操作数a和b,对a和b执行θ运算并使运算结果进OPND栈。 当OPND栈的栈顶元素和当前读入字符均为“#”,整个表达式求值完毕,OPND栈的栈顶元素即为表达结果。
好的
?
是线性代数
这个是什么哦
include #include #include //判断是否为字符的函数的头文件#define maxsize 100typedef int elemtype;typedef struct sqstack sqstack;//由于sqstack不是一个类型 而struct sqstack才是char ch[7]=;//把符号转换成一个字符数组int f1[7]=;//栈内元素优先级int f2[7]=;//栈外的元素优先级struct sqstack{elemtype stack[maxsize];int top;};void Initstack(sqstack *s){
亲,您发的什么,没有显示出来,没看到
发的这个票
亲亲,图片太模糊了哦,看不清楚图片中的内容哦