设为首页 加入收藏

TOP

用单链表实现的表达式的计算(二)
2014-11-24 01:43:24 来源: 作者: 【 】 浏览:33
Tags:单链表 实现 表达式 计算
//如果栈顶的运算符优先级<刚取出的运算符的优先级
{
Opstk.Push(rop); //就把当前访问到的运算符压入堆栈
ptr=ptr->link; //取下个表达式结点
}
else //如果当前的Opstk栈顶的运算符优先级大于当前运算符
{ //利用当前的运算符进行运算
double x;
double y;
char op;
double res;
Opstk.Pop(op); //从运算符堆栈中取出运算符
if(op==’#') //如果从堆栈中取出的是’#'说明运算结束
{
Datastk.getTop(res);
return res; //此时数据栈的栈顶就是运算结果
};
Datastk.Pop(y); //从操作数堆栈中获取两个操作数
Datastk.Pop(x);


switch(op) //根据不同的运算符对弹出的数据进行计算
{
case ‘+’:
res=x+y;break;
case ‘-’:
res=x-y;break;
case ‘*’:
res=x*y;break;
case ‘/’:
res=x/y;break;
case ‘^’:
res=pow(x,y);
break;
case ‘%’:
res=int(x)%int(y);
break;
};
Datastk.Push(res);//把计算中间结果再次压入数据堆栈
};
};
};
};
///////////////////////////////Caculate1()函数结束


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇很荣幸参加了华为的面试,现在分.. 下一篇不使用库函数,编写strcpy函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: