c++用二叉树表示代数表达式_!用二叉树来表示代数表达式 | 学步园

/*exp7-7.cpp*/#include

#include

#include

#define MaxSize 100

typedef char ElemType;

typedef struct node

{

ElemType data;/*数据元素*/

struct node *lchild;/*指向左孩子*/

struct node *rchild;/*指向右孩子*/

}BTNode;

extern void DispBTNode(BTNode *b);/*在algo7-1.cpp文件中*/

BTNode *CRTree(char s[],int i,int j)

{

BTNode *p;

int k,plus=0,posi;

if(i==j)

{

p=(BTNode *)malloc(sizeof(BTNode));

p->data=s[i];

p->lchild=NULL;

p->rchild=NULL;

return p;

}

/*i!=j的情况*/

for(k=i;k<=j;k++)

if(s[k]=='+' || s[k]=='-')

{

plus++;

posi=k;/*最后一个+或-的位置*/

}

if(plus==0)/*没有+或-的情况*/

for(k=i;k<=j;k++)

if(s[k]=='*' || s[k]=='/')

{

plus++;

posi=k;

}

else/*plus!=0*/

{

p=(BTNode *)malloc(sizeof(BTNode));

p->data=s[posi];

p->lchild=CRTree(s,i,posi-1);

p->rchild=CRTree(s,posi+1,j);

return p;

}

}

void main()

{

BTNode *b;

char s[MaxSize]="a+b*c-e/f";

printf("\n");

printf("代数表达式%s\n",s);

b=CRTree(s,0,strlen(s)-1);

printf("对应二叉树:");

DispBTNode(b);

printf("\n\n");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值