鱼C论坛

 找回密码
 立即注册
查看: 7389|回复: 55

[学习笔记] 树的应用:输入表达式,算出结果

[复制链接]
发表于 2021-11-16 11:38:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 划句顾 于 2021-11-22 19:17 编辑

关于0x3f3f3f3f

                               
登录/注册后可看大图

代码如下:

头文件和代码:
  1. /*
  2. *author:LaoGu
  3. *time :2021/11/15
  4. *fuction:计算值
  5. */
  6. #include<iostream>
  7. #include<string.h>  //可以计算字符串大小
  8. #include<stdlib.h>   //可以使用malloc()函数
  9. #include<ctype.h>   //有isdigit()函数

  10. using namespace std;

  11. #define MAX 0x3f3f3f3f    //无穷大常量   
复制代码

定义结构体:
  1. //定义结点结构体
  2. typedef struct TNode{
  3.         int flag;  // 1为符号,0为数字
  4.         int data;  //存储数字
  5.         int ch ;   //存储符号
  6.         struct TNode *lchild;
  7.     struct TNode *rchild;
  8. }TNode;
复制代码

游客,如果您要查看本帖隐藏内容请回复

游客,如果您要查看本帖隐藏内容请回复

加减运算:
  1. //四则运算 " +、—、*、/ "
  2. int cal(struct TNode *root){
  3.         if(root->flag==1){
  4.                 switch(root->ch){
  5.                         case '+':
  6.                          {
  7.                     return cal(root->lchild)+cal(root->rchild);
  8.                             break;
  9.                           }
  10.                     case '-':
  11.                         {
  12.                         return cal(root->lchild)-cal(root->rchild);
  13.                         break;
  14.                         }
  15.                     case '*':
  16.                         {
  17.                             return cal(root->lchild)*cal(root->rchild);
  18.                         break;
  19.                     }
  20.                     case '/':{
  21.                             return cal(root->lchild)/cal(root->rchild);
  22.                                 break;
  23.                         }
  24.         }
  25. }
  26. return root->data;
  27. }
复制代码

主函数:
  1. //主函数
  2. int main(int argc,char *argv[])  //注:*argv[] == **argv 都是指 指向指针的指针
  3. {
  4.         char a[200];
  5.         int i;
  6.         cout<<"请输入要计算的表达式的数量"<<endl;
  7.         cin>>i;
  8.         for(int j=0;j<i;j++)
  9.         {       
  10.            cout<<"请输入一个表达式:";
  11.           scanf("%s",a);
  12.        //给节点分配空间
  13.            struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
  14.            b = buildTree(a,0,strlen(a)-1);    // 0可以换成其他的值x,可以计算从第x开始的值
  15.            printf("表达式【%s】的结果是%d\n",a,cal(b));
  16.            cout<<endl;
  17.         }
  18.         return 0;
  19. }
复制代码



                               
登录/注册后可看大图

如果想要一直计算不同的表达式,可以将主函数改为这样:
  1. //主函数
  2. int main(int argc,char *argv[])  //注:*argv[] == **argv 都是指 指向指针的指针
  3. {
  4.         char a[200];
  5.         while(1)
  6.         {       
  7.            cout<<"请输入一个表达式:";
  8.           scanf("%s",a);
  9.        //给节点分配空间
  10.            struct TNode *b = (struct TNode*)malloc(sizeof(struct TNode*)) ;
  11.            b = buildTree(a,0,strlen(a)-1);    // 0可以换成其他的值x,可以计算从第x开始的值
  12.            printf("表达式【%s】的结果是%d\n",a,cal(b));
  13.            cout<<endl;
  14.         }
  15.         return 0;
  16. }
复制代码



                               
登录/注册后可看大图

运算结果: 运算.png

                               
登录/注册后可看大图

想先算啥,必须得加括号,计算机并不会知道你要先哪个。 ,不然会和我上面第二个结果一样,只返回一个value值。
giao!!!


                               
登录/注册后可看大图

而int main(int argc,char **argv)我也是第一次昨晚第一次看到,详细了解可点击argv,argc  
或者是这个
  点我


                               
登录/注册后可看大图

数据结构作业真容易【bushi】小声哔哔
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-18 21:41:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-20 17:00:46 | 显示全部楼层
学习代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-21 00:16:03 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 09:03:46 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 10:51:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 11:12:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 11:13:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 08:36:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 10:41:08 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 12:23:52 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 13:25:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 13:29:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-22 18:14:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-11-22 19:17:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-23 21:55:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-23 21:56:15 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-23 23:08:14 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-24 23:46:28 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-25 10:14:19 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 15:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表