写出中缀表达式((A+B)*C+D)/(E+F+G)的逆波兰式的表示形式
时间: 2023-09-03 19:07:38 浏览: 116
中缀表达式((A+B)*C+D)/(E+F+G)的逆波兰式表示形式为:
```
A B + C * D + E F + G + /
```
其中,符号"+"表示加法运算,符号"*"表示乘法运算,符号"-"表示减法运算,符号"/"表示除法运算。在转换为逆波兰式时,先将A和B进行加法运算,然后再与C进行乘法运算,将结果存储在栈中。接下来将D的值入栈,然后将栈中的两个元素进行加法运算,再将E和F进行加法运算,将结果与栈顶的元素进行加法运算,最后将G的值入栈。最后将栈中的两个元素进行加法运算,然后再将栈顶的元素除以次栈顶的元素,得到最终的结果。
相关问题
中缀表达式a+b*c+(d*e+f)*g,其转换成后缀表达式则为abc*+de*f+g*用栈实现代码c语言
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
char stack[MAX];
int top = -1;
void push(char item) {
if (top >= MAX - 1) {
printf("Stack Overflow\n"); return;
}
stack[++top] = item;
}
char pop() {
if (top < 0) {
printf("Stack Underflow\n");
exit(1);
}
return stack[top--];
}
int is_operator(char symbol) {
if (symbol == '^' || symbol == '*' || symbol == '/' || symbol == '+' || symbol == '-') {
return 1;
} else {
return 0;
}
}
int precedence(char symbol) {
if (symbol == '^') {
return (3);
} else if (symbol == '*' || symbol == '/') {
return (2);
} else if (symbol == '+' || symbol == '-') {
return (1);
} else {
return (0);
}
}
void infix_to_postfix(char infix[], char postfix[]) {
int i, j;
char item;
char x;
push('(');
strcat(infix, ")");
i = 0;
j = 0;
item = infix[i];
while (item != '\0') {
if (item == '(') {
push(item);
} else if (isdigit(item) || isalpha(item)) {
postfix[j] = item;
j++;
} else if (is_operator(item) == 1) {
x = pop();
while (is_operator(x) == 1 && precedence(x) >= precedence(item)) {
postfix[j] = x;
j++;
x = pop();
}
push(x);
push(item);
} else if (item == ')') {
x = pop();
while (x != '(') {
postfix[j] = x;
j++;
x = pop();
}
} else {
printf("Invalid infix Expression.\n");
exit(1);
}
i++;
item = infix[i];
}
if (top > 0) {
printf("Invalid infix Expression.\n");
exit(1);
}
postfix[j] = '\0';
}
int main() {
char infix[MAX], postfix[MAX];
printf("Enter Infix expression : ");
gets(infix);
infix_to_postfix(infix, postfix);
printf("Postfix Expression: ");
puts(postfix);
return 0;
}
```
--相关问题--:
1. 什么是中缀表达式和后缀表达式?
2. 除了栈,还有
给定树的中缀表达式**A+B*C-D/E**,后缀表达式+ABC*+++DE/-,构建二叉链表形式的二叉树
根据后缀表达式构建二叉链表形式的二叉树的步骤如下:
1. 从左到右扫描后缀表达式,遇到操作数则将其作为一个新节点插入二叉树中;
2. 遇到操作符则将其作为新节点插入二叉树中,并将其弹出栈顶的两个节点作为其左右子节点;
3. 重复步骤1和2,直到扫描完整个后缀表达式。
根据上述步骤,可以得到构建的二叉树如下:
```
-
/ \
+ /
/ \ / \
A * D E
/ \
B C
```
阅读全文