c语言中缀表达式转换成二叉树,后续周游计算表达式的值

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:26:48
表达式要可以随意输入,结果为浮点数,要考虑括号! 尽量容易理解 很急!! 但就15分了

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define TRUE 1
#define FALSE 0
#define MAXNUM 1000

typedef int DataType;

struct BinTreeNode;
typedef struct BinTreeNode*PBinTreeNode;
struct BinTreeNode
{
DataType info;
PBinTreeNode llink;
PBinTreeNode rlink;
};
typedef struct BinTreeNode*BinTree;
typedef BinTree*PBinTree;

int extoBinTree(PBinTree pbtree,const char *ex,int n)
/*从中缀表达式ex(长度为n)创建二叉树。若是一个合法的表达式,则返回TRUE,且算法结束时*pbtree存放二叉树的根节点的地址;否则返回FALSE*/
{
char c;
int index,i,bracket;
int have_bracket=FALSE; /*记录表达式中是否包含括号*/
int num,state_int,nint;
int tag1,tag2;

if(ex[0]==' '||ex[0]=='\t'||ex[0]=='\n')
return extoBinTree(pbtree,ex+1,n-1);/*忽略掉左边的若干空字符*/
if(ex[n-1]==' '||ex[0]=='\t'||ex[0]=='