问题描述:用二叉树解代数表达式。
#ifndef BTREE_H_INCLUDED
#define BTREE_H_INCLUDED
#include <stdio.h>
#include<cmath>
#include<string.h>
#define MaxSize 100
typedef char ElemType;
typedef struct node
{
ElemType data; //数据元素
struct node *lchild; //指向左孩子
struct node *rchild; //指向右孩子
} BTNode;
void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链
BTNode *FindNode(BTNode *b,ElemType x); //返回data域为x的节点指针
BTNode *LchildNode(BTNode *p); //返回*p节点的左孩子节点指针
BTNode *RchildNode(BTNode *p); //返回*p节点的右孩子节点指针
int BTNodeDepth(BTNode *b); //求二叉树b的深度
void DispBTNode(BTNode *b); //以括号表示法输出二叉树
void DestroyBTNode(BTNode *&b); //销毁二叉树
double Comp(BTNode *b);
BTNode *CRTree(char s[],int i,int j);
#endif // BTREE_H_INCLUDED
#include "head.h"
int main()
{
BTNode *b;
char s[MaxSize]="1+2*3-4/5";
printf("代数表达式%s\n",s);
b=CRTree(s,0,strlen(s)-1);
printf("对应二叉树:");
DispBTNode(b);
printf("\n表达式的值:%g\n",Comp(b));
DestroyBTNode(b);
return 0;
}
#include <malloc.h>
#include "h