表达树
来源:互联网 发布:家用动感单车推荐知乎 编辑:程序博客网 时间:2024/04/30 13:38
(2+3*4+5)*(2+3)2+3*4+5*2+3234*5++23+*Press any key to continue2*(4*(2+3))*4+2+1+(3-1)/22*4*2+3*4+2+1+3-1/22423+*4**2131-2/+++Press any key to continue//算法//先获取字符串每一个字符对应的优先级//+-优先级1,*优先级2,,若符号在括号了它们的优先级得加上kuohao变量的值//前奏:字符串处理ok//在字符串中查找第一个最小的优先级符号,放进树中,同时把此位置设置为空//若字符串只是一个字符,则是数字//对表达树后续遍历得到后缀表达式#include <iostream>//可以把str和a数组包裹成结构数组#include <string>using namespace std;typedef struct tree* treezhi;struct tree{char c;treezhi left;treezhi right;};char str[30]={0};/////原始char jiestr[30]={0},jie=0;//结果int a[30]={0};//优先级对应数组void str_deal();//输入字符串和处理优先级void PreOrder(treezhi b);//先序遍历的递归算法treezhi creat(char *t,int* at);//创建表达树int main(int argc, char const *argv[]){str_deal();treezhi head=creat(str,a);PreOrder(head);cout<<jiestr;return 0;}void str_deal()//输入字符串和处理优先级{gets(str);// int kuohao=0;//用于括号里的操作符号升级 int length=strlen(str); for (int i = 0; i < length; ++i) { switch(str[i]) { case'-':a[i]=1+kuohao;break; case'+':a[i]=1+kuohao;break; case'*':a[i]=2+kuohao;break; case'/':a[i]=2+kuohao;break; case'(':kuohao+=2;a[i]=32767;break; case')':kuohao-=2;a[i]=32767;break; default:a[i]=32767; } } int j=0; for ( i = 0; i < length; ++i)//去掉括号 { if (str[i]=='(' || str[i]==')') continue; else { str[j++]=str[i]; a[j-1]=a[i]; } } str[j]='\0';//补尾 cout<<str; cout<<endl;}treezhi creat(char *t,int* at){treezhi temp=new tree;int length=strlen(t);int min=32767,min_seat=0;//最小优先级坐标;if (length==1)//this is a number;{temp->c=t[0];//一开始这里错了temp->c=t[1];temp->left=NULL;temp->right=NULL;}else{ for (int i = 0; i < length; ++i) { if (at[i]<min)/////找到第一个最小的优先级符号 { min=at[i];///错误:这句忘记了 min_seat=i; } } temp->c=t[min_seat];//第一个最小的优先级符号 t[min_seat]='\0';///把此位置设置为空 temp->left=creat(t,at);temp->right=creat(t+min_seat+1,at+min_seat+1);///指针开头}return temp;}void PreOrder(treezhi b)//先序遍历的递归算法{ if (b!=NULL) { PreOrder(b->left); //递归访问左子树 PreOrder(b->right); //递归访问右子树 jiestr[jie++]=b->c; //访问根节点 }}
0 0
- 表达树
- 表达树的基础知识
- 表达树构造(java)
- 表达树构造
- 表达树构造
- 表达树构造-LintCode
- 实验(表达树)
- 表达
- 后缀表达式转表达树
- 通过表达示树获取属性名
- 利用表达树计算字符串的值
- python3+PyQt5 树中表达表格数据
- LINTCODE——表达树的构造
- LintCode 表达树构造(栈,二叉树)
- LISP 就是语法解析树的前缀表达
- 第十一周--用二叉树求解代数表达公式
- 算术表达式的转换——算术表达树
- 表达能力
- KL散度(Kullback-Leibler_divergence)
- What's the difference of hash table and binary tree?
- 使用github上的开源框架SlidingMenu环境的搭建,以及getSupportActionBar方法不能找到的问题
- Creating a Simple CRUD App With Yii2 用 Yii2 创建一个简单的 CRUD (增删改查)应用
- Python发送邮件
- 表达树
- java反射机制基础
- Sqlite3 导出数据至文件
- 第三次。2014、1、11
- C之I/O
- POJ-3295-Tautology-2013-12-04 20:44:18
- ThoughtWorks郑大晔校的一天——最后的礼物
- 黑马程序员------------------多线程
- iOS Objective-C Json解析