利用二叉树实现简单的四则运算

利用二叉树实现简单的四则运算在这颗树中,先出来的符号代表着他的优先级越低所以,我们在将一串表达式输入到字符串中以后,首先要找的是最低优先级的也就是加减…以此类推,根据BiTree CreatTree(char s[],int i,int j) //生成表达式二叉树 { //动态生成的树节点 BiTree p,t; //动态申请二叉树的根结点 int k, flag = 0, pos,x=0; int m=-1,n=-1,num=0; //m,n代表左右括号
摘要由CSDN通过智能技术生成

利用二叉树实现简单的四则运算

在这颗树中,先出来的符号代表着他的优先级越低
所以,我们在将一串表达式输入到字符串中以后,首先要找的是最低优先级的
也就是加减…以此类推,根据

BiTree CreatTree(char s[],int i,int j)			//生成表达式二叉树 
{
   
	//动态生成的树节点 
	BiTree p,t;									//动态申请二叉树的根结点 
	int k, flag = 0, pos,x=0;
	int m=-1,n=-1,num=0;						//m,n代表左右括号的位置 
	char str[MAXSIZE];
	double sum;
	//如果i == j,则说明字符串只有一个字符,即为叶子节点、则创建只有一个根节点的二叉树并返回
	if (i == j)
	{
   
		p = (BiTree)malloc(sizeof(BiTNode));
		str[x++]=s[i];							//将字符转换为数字 
		str[x]='\0';
		sum=atof(str);
		p->num = sum;
		p->F=Double;							//设置结点的线索 
		p->lchild = NULL;					
		p->rchild = NULL;
		return p;
	}
	//以下是 i != j的情况
	//从后向前找最后一个  +或-,先找+或-为了体现先乘除后加减的原则 
	for (k = j; k >= i; k--)
	{
   
		if(s[k]==')')							//如果有括号 先跳过括号 
		{
   
			m=k;	
			do
			{
   
				k--;
			}while(s[k]!='(');
			n=k;
		}
		if (s[k] == '+' || s[k] == '-')
		{
   
			flag = 1;
			pos = k;
			break;
		}
	}
	//若没有+或-,则寻找字符串中最后一个*或/ 
	if (!flag)
	{
   
		for (k = j; k >= i; k--)
		{
   
			if(s[k]==')')						//如果有括号 先跳过括号 
			{
   
					do
					{
   
						k--;
					}while
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值