树的应用:输入表达式,算出结果
本帖最后由 划句顾 于 2021-11-22 19:17 编辑关于0x3f3f3f3f
static/image/hrline/5.gif
代码如下:
头文件和代码:/*
*author:LaoGu
*time :2021/11/15
*fuction:计算值
*/
#include<iostream>
#include<string.h>//可以计算字符串大小
#include<stdlib.h> //可以使用malloc()函数
#include<ctype.h> //有isdigit()函数
using namespace std;
#define MAX 0x3f3f3f3f //无穷大常量
定义结构体://定义结点结构体
typedef struct TNode{
int flag;// 1为符号,0为数字
int data;//存储数字
int ch ; //存储符号
struct TNode *lchild;
struct TNode *rchild;
}TNode;
**** Hidden Message *****
**** Hidden Message *****
加减运算://四则运算 " +、—、*、/ "
int cal(struct TNode *root){
if(root->flag==1){
switch(root->ch){
case '+':
{
return cal(root->lchild)+cal(root->rchild);
break;
}
case '-':
{
return cal(root->lchild)-cal(root->rchild);
break;
}
case '*':
{
return cal(root->lchild)*cal(root->rchild);
break;
}
case '/':{
return cal(root->lchild)/cal(root->rchild);
break;
}
}
}
return root->data;
}
主函数://主函数
int main(int argc,char *argv[])//注:*argv[] == **argv 都是指 指向指针的指针
{
char a;
int i;
cout<<"请输入要计算的表达式的数量"<<endl;
cin>>i;
for(int j=0;j<i;j++)
{
cout<<"请输入一个表达式:";
scanf("%s",a);
//给节点分配空间
struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
b = buildTree(a,0,strlen(a)-1); // 0可以换成其他的值x,可以计算从第x开始的值
printf("表达式【%s】的结果是%d\n",a,cal(b));
cout<<endl;
}
return 0;
}
static/image/hrline/5.gif
如果想要一直计算不同的表达式,可以将主函数改为这样:
//主函数
int main(int argc,char *argv[])//注:*argv[] == **argv 都是指 指向指针的指针
{
char a;
while(1)
{
cout<<"请输入一个表达式:";
scanf("%s",a);
//给节点分配空间
struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
b = buildTree(a,0,strlen(a)-1); // 0可以换成其他的值x,可以计算从第x开始的值
printf("表达式【%s】的结果是%d\n",a,cal(b));
cout<<endl;
}
return 0;
}
static/image/hrline/5.gif
运算结果:
static/image/hrline/5.gif
想先算啥,必须得加括号,计算机并不会知道你要先哪个。{:10_247:} ,不然会和我上面第二个结果一样,只返回一个value值。giao!!!{:10_258:}
static/image/hrline/5.gif
而int main(int argc,char **argv)我也是第一次昨晚第一次看到,详细了解可点击argv,argc
或者是这个点我{:10_299:}
static/image/hrline/5.gif
数据结构作业真容易【bushi】【小声哔哔】 {:5_100:}
{:5_95:} 学习代码
{:10_257:}{:10_257:} {:10_334:} {:10_275:} {:5_109:} {:10_275:} {:10_254:} {:10_254:} {:10_254:} {:10_256:} {:10_256:} {:10_256:} 嘉岳呀 发表于 2021-11-22 18:14
{:10_257:}没有拿到币呀 {:10_275:} {:10_275:} {:5_90:} {:10_256:} {:5_109:}