iis 里没有网站,制作视频教程,商品交换电子商务网站开发,发帖推广平台2019独角兽企业重金招聘Python工程师标准 后缀表达式求值算法 stack operands; //运算数栈
while(没到表达式尾)
{scanf(一个运算对象op);if(op is 运算数)operands.push(op);else if(op is 运算符){operand_right operands.pop();operand_left o… 2019独角兽企业重金招聘Python工程师标准 后缀表达式求值算法 stack operands; //运算数栈
while(没到表达式尾)
{scanf(一个运算对象op);if(op is 运算数)operands.push(op);else if(op is 运算符){operand_right operands.pop();operand_left operands.pop();result operand_left op operand_right;operands.push(result);}else{printf(Suffix expression is invalid !);}
}
if(operands.size() 1)return operands.top();
elseprintf(Suffix expression is invalid!); 前缀表达式求值算法 算法一从表达式尾部开始处理(从右至左) 伪代码描述 stack operands; //运算数栈
while(没到达表达式首)
{scanf(一个运算对象op);if(op is Operand)operands.push(op);else if(op is Operator){operand_left operands.pop();operand_right operands.pop();result operand_left op operand_right;operands.push(result);}else{printf(Prefix expression is invalid!);}
}
if(operands.size() 1)
{return operands.top();
}
elseprintf(Prefix expression is invalid!); 算法二从表达式首部开始处理(从左至右) stack operations; //运算对象栈元素既可以是云算法也可以是运算数
while(没到表达式尾)
{scanf(一个运算对象op);if(op is Operator){operations.push(op);}else if(op is Operand){if(operations.top() is Operator){operations.push(op);}else{while(operations.top() is Operand){operand_right op;operand_left operations.pop();operator operations.pop();op operand_left operator operand_right;}operations.push(op);}}else{printf(Prefix expression is invalid!);}
}
if(operations.size() 1)return operations.top();
elseprintf(Prefix expression is invalid!); 中缀表达式转换为后缀表达式算法 stack operators; //运算符栈
while(没到表达式尾)
{scanf(一个运算对象op);if(op is Operand){printf(op);}else if(op is Operator){if(op 优先级大于 operator.top() op is not 右括号)operator.push(op);else if(op is 右括号){do{tmp operators.pop();if(tmp is not 对应左括号){printf(tmp);}else{break;}if(operators.empty()){printf(Infix expression is invalid!);}}while(1);}else{do{tmp operators.pop();printf(tmp);}while(op 优先级小于 operators.top());operators.push(op);}}else{printf(Infix expression is invalid!);}
}
while(!operators.empty())
{tmp operators.pop();printf(tmp);
} 中缀表达式转换为前缀表达式算法 从表达式尾部开始处理 stack operators; //运算符栈stack operations; //运算对象栈元素既可以是运算符也可以是运算数while (没到表达式首){scanf(一个运算对象op);if (op is Operand){operations.push(op);}else if (op is Operator){if (op 优先级大于 operators.top() op is not 左括号)operators.push(op);else if (op is 左括号){do{tmp operators.pop();if (tmp is not 对应右括号){operations.push(tmp);}else{break;}if (operators.empty()){printf(Infix expression is invalid!);}}while(1);}else{do{tmp operators.pop();operations.push(tmp);}while(op 优先级小于 operators.top());operators.push(op);}}else{printf(Infix expression is invalid!);}}while(!operators.empty()){tmp operators.pop();operations.push(tmp);}while(!operations.empty()){tmp operations.pop();printf(tmp);} 转载于:https://my.oschina.net/lucusguo/blog/506528