在C语言中,将中缀表达式转换为后缀表达式(逆波兰表示法)可以通过以下步骤实现:
竞秀网站建设公司创新互联公司,竞秀网站设计制作,有大型网站制作公司丰富经验。已为竞秀超过千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的竞秀做网站的公司定做!
1、创建一个栈用于存储运算符,并创建一个字符串用于存储后缀表达式。
2、从左到右扫描中缀表达式。
3、如果遇到操作数,将其添加到后缀表达式。
4、如果遇到运算符,则处理栈顶的运算符,直到栈为空或者栈顶的运算符优先级低于当前运算符,然后将当前运算符压入栈。
5、如果遇到左括号,将其压入栈。
6、如果遇到右括号,处理栈顶的运算符,直到遇到左括号为止,然后弹出左括号。
7、重复步骤26,直到扫描完中缀表达式。
8、处理栈中剩余的运算符,将其添加到后缀表达式。
以下是一个简单的C语言实现:
#include#include #include #include int precedence(char op) { if (op == '+' || op == '') return 1; if (op == '*' || op == '/') return 2; return 0; } void infixToPostfix(char *infix, char *postfix) { int i, j = 0; char stack[strlen(infix)]; int top = 1; for (i = 0; i < strlen(infix); i++) { if (isalnum(infix[i])) { postfix[j++] = infix[i]; } else if (infix[i] == '(') { stack[++top] = infix[i]; } else if (infix[i] == ')') { while (top != 1 && stack[top] != '(') { postfix[j++] = stack[top]; } top; } else { while (top != 1 && precedence(stack[top]) >= precedence(infix[i])) { postfix[j++] = stack[top]; } stack[++top] = infix[i]; } } while (top != 1) { postfix[j++] = stack[top]; } postfix[j] = '\0'; } int main() { char infix[] = "a+b*(c^de)^(f+g*h)i"; char postfix[strlen(infix)]; infixToPostfix(infix, postfix); printf("Infix expression: %s ", infix); printf("Postfix expression: %s ", postfix); return 0; }
这个程序将中缀表达式 "a+b*(c^de)^(f+g*h)i" 转换为后缀表达式 "abcd^efgh*+^*+i"。
分享名称:C中怎么将中缀表达式转换为后缀表达式(中缀表达式转后缀表达式c语言)
URL网址:http://www.csdahua.cn/qtweb/news5/297005.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网