!用二叉树来表示代数表达式

/*exp7-7.cpp*/
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#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");
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值