北京理工大学数据结构实验报告 简易计算器(二叉树)

内容发布更新时间 : 2025/8/22 17:12:33星期一 下面是文章的全部内容请认真阅读。

}

while(t!=b);

a[i]='\\0';//完成反序后缀式的逆向 T=create(T,a); //create()函数创建二叉链表

postordertraverse(T);//后序遍历进行计算 printf(\输出结果

return 0;

} //main

3.2其它函数的具体实现

char *convert();

//将运算式转换成逆后缀序列,并将该序列作为返回值; 首先输入运算式,判断是否为数字,将数字存入数组的数值域,并用符号代替数值,产生新的用符号表示的运算式。

然后用字符优先算法将算式转换为逆后缀式,将数组首地址传回给主函数。 并且在输入不合法时给予错误提示。

struct node *create(struct node *T,char d[]); //建立二叉链表,并返回根结点 void postordertraverse(struct node *e);

//进行后序遍历,运用了递归的思想,实际上调用operation函数进行计算

float operation(float a,float b,char c);

//四则运算函数,主要实现运算功能

int in(char c);

//判断是否为运算符,是运算符返回1

部分函数的代码如下: (1)create函数

struct node *create(struct node *T,char d[])

{ //建立二叉链表,并返回根结点 int i;

if(d[w]>='A'&&d[w]<='Z') {T->data=d[w];

for(i=0;array[i].sign!='\\0';i++) {if(array[i].sign==d[w])

{ T->number=array[i].number;break;} }

T->left=NULL; T->right=NULL; w++;

}

else{

if(flag==0)flag=1; else

T=(struct node *)malloc(sizeof(struct node ));

(T)->data=d[w]; w++;

T->left=(struct node *)malloc(sizeof(struct node ));

T->right=(struct node *)malloc(sizeof(struct node ));

T->right=create((T)->right,d); T->left=create((T)->left,d); }

return T;

} //c

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi