手机版

中缀表达式转化成后缀表达式的计算(13)

时间:2025-07-09   来源:未知    
字号:

中缀表达式的直接计算,中缀表达式转化成后缀表达式的计算

//char ch[] = "(23-3)/2+12*2"; int index = 0; //定义字符串的索引

//定义 操作符栈 TdStack tds; //定义 操作数栈 OpNode op; //定义 字符节点 TdNode td; //定义 数节点 Op_init(&ops); //初始化字符栈 Td_init(&tds); //初始化操作数栈 OpStack ops; while(ch[index] != '\0') {

char chr = ch[index]; //取出字符串的而一个字符 if(chr >= '0' && chr <= '9' || chr == '.') //判断是否为操作数 { int tempIndex = index; //定义辅助索引 int i = 0; } //定义数组存放一个操作数,并进行初始化 //将一个操作数从字符数组中取出,并存放在tempCh数组中 char tempCh[10] ={0}; while(chr >= '0' && chr <= '9' || chr == '.') { } td.d = atof(tempCh); Td_push(&tds,td); index = tempIndex; continue; tempCh[i++] = ch[tempIndex]; tempIndex++; chr = ch[tempIndex]; //把取出的操作数存放到操作数栈

//判断是否为加法或者减法运算 if(chr == '+' || chr == '-') {

//存放操作符到操作符节点 op.level = 2; //给操作符赋值优先级 int level_2 = 2; //存放优先级别,用于比较优先级 while(ops.size != 0) //若字符栈不为空,则进行字符的优先级比较 { int level_1 = Op_getTop(&ops).level; op.ch = chr; //两个字符比较优先级,若新的字符优先级比栈中的字符优先级高,则 //从字符栈中字符出栈,同时从数栈中出栈两个数,进行计算,计算结 //果存入数栈,否则将新的字符入栈 if(Compare_opeate(level_1,level_2) == 0) { char op1 = Op_pop(&ops).ch;

中缀表达式转化成后缀表达式的计算(13).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)