中缀表达式转化成后缀表达式的计算(6)
时间:2025-04-30
时间:2025-04-30
中缀表达式的直接计算,中缀表达式转化成后缀表达式的计算
} } return num;
//创建一个返回值为int型的函数,用于比较两个操作符的优先级
int Compare_opeate(int level_1,int level_2)
{
} if(level_1 >= level_2) //判断优先级别,返回相应的值 return 0; return -1;
//创建一个返回值为double型的函数,用于返回整个表达式的计算结果
double CalResult()
{
//char ch[] = "23+12-34"; //char ch[] = "19-(2*3)+12/2"; char ch[] = "(23-3)/0+12*2";
char tempCh[100]; //存放后缀表达式
int index = 0,i = 0;
OpStack ops;
//定义 操作符栈 TdStack tds; //定义 操作数栈 OpNode op; //定义 字符节点 TdNode td; //定义 数节点 Op_init(&ops); //初始化字符栈 Td_init(&tds); //初始化操作数栈 while(ch[index] != '\0') { char chr = ch[index]; if(chr >= '0' && chr <= '9' || chr == '.') {
} int tempIndex = index; while(chr >= '0' && chr <= '9' || chr == '.') //判断是否为操作数 { } tempCh[i++] = '|'; //在一个操作数取完之后,后面加分隔符 index = tempIndex; continue; tempCh[i++] = ch[tempIndex]; tempIndex++; chr = ch[tempIndex];
//判断是否为加法或者减法运算 if(chr == '+' || chr == '-') {
op.ch = chr; //存放操作符到操作符节点
下一篇:O型圈技术手册