1.问题描述1表达式求值问题 表达式是数据运算的基本形式。人们的书写习惯是中缀式,如:1122743。中缀式的计算按运算符的优先级及括号优先的原则,相同级别从左到右进行计算。表达式还有后缀式如:22 7 4 3 11 和前缀式如: 11 2
如输入中缀表达式不正确,提示输入有误,如图1.2,1.3所示。 图1.1 图1.2 图1.3 (2)选择表达式转换并求值方式。按“1”选择中缀表达式求值,如图1.4所示。 图1.4 (3)按“2”选择中缀表达式转变为后缀表达式并求值,如图1.5所示。 图1.5 (4)按“3”选择中缀表达式转变为前缀表达式并求值,如图1.6所示。 图1.6 附录:...
#include <stdio.h> #include <string.h> #include <malloc.h> char infix[20] = "(A+B)*C"; //初始化中缀表达式 int top = -1; char prefix[20]; //存放前缀表达式 char opstack[20]; //存放运算符 char pop() { return (opstack[top--]); } void push(char symbol) { opstack[++top...
void qianzhui(Lnode *p) //中缀表达式转化为前缀表达式 {sqstack2 OPTR; //运算符栈 InitStack2(OPTR); int n; char c,c2; Lnode *first; Lnode2 *q,*head,*r,*head2,*s; first=p; p=p->next; q=(Lnode2*)malloc(sizeof(struct Node2)); //建立存中缀表达式的双向循环链表 ...
c语言实现中缀,后缀,前缀表达式转换并求值 #include<stdio.h> #include<stdlib.h> #defineMAXNUM100 typedefstructNode//定义存储中缀表达式的结点类型 {intdata; intdata1; chardata2; structNode*next; }Lnode; typedefstructNode2//定义存储前缀表达式的结点类型 {intdata; intdata1; chardata2; structNode...