博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四则运算表达式求值 OpenJ_Bailian - 4132
阅读量:4930 次
发布时间:2019-06-11

本文共 1920 字,大约阅读时间需要 6 分钟。

四则运算表达式求值

 

题意:设计一个计算器,实现+-*/以及()的表达式运算求值。

栈的应用,这学期学数据结构,手写了栈练一下~

1 #include 
2 using namespace std; 3 const int maxn=10010; //最大表达式长度 4 5 template
6 class Stack; 7 8 template
9 class Node{ 10 friend Stack
; 11 private: 12 T x; 13 Node
*nxt; 14 }; 15 16 template
17 class Stack{ 18 public: 19 Stack() {head=NULL;} 20 virtual ~Stack(){ if(head) delete head;} 21 virtual void init() {head=NULL;} 22 virtual bool _empty() const { return head==NULL;} 23 virtual T top() const; 24 virtual void pop(); 25 virtual void push(const T a); 26 private: 27 Node
*head; 28 }; 29 30 template
31 T Stack
::top() const{ 32 return head->x; 33 } 34 35 template
36 void Stack
::pop(){ 37 head=head->nxt; 38 } 39 40 template
41 void Stack
::push(const T a){ 42 Node
*tmp=new Node
(); 43 tmp->x=a; 44 tmp->nxt=head; 45 head=tmp; 46 } 47 48 char s[maxn]; 49 Stack
op; 50 Stack
num; 51 void cal(){ 52 double x=num.top();num.pop(); 53 double y=num.top();num.pop(); 54 char c=op.top();op.pop(); 55 switch(c){ 56 case '+': 57 num.push(x+y); 58 break; 59 case '-': 60 num.push(y-x); 61 break; 62 case '*': 63 num.push(x*y); 64 break; 65 case '/': 66 num.push(y/x); 67 break; 68 } 69 return ; 70 } 71 bool check(char c1,char c2){ 72 int a,b; 73 double x=num.top();num.pop(); 74 if(num._empty()) {num.push(x); return 0;} 75 else num.push(x); 76 77 switch (c1){ 78 case '+': a=0;break; 79 case '-': a=0;break; 80 case '*': a=1;break; 81 case '/': a=1;break; 82 case '(': a=-1;break; 83 } 84 switch (c2){ 85 case '+': b=0;break; 86 case '-': b=0;break; 87 case '*': b=1;break; 88 case '/': b=1;break; 89 } 90 return a>=b; 91 } 92 93 int main(){ 94 while(cin>>s){ 95 op.init(); 96 num.init(); 97 int len=strlen(s); 98 for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/yijiull/p/7475743.html

你可能感兴趣的文章
Unity 新老版本动画文件设置
查看>>
关于win7 下双击不能打开jar 文件
查看>>
学习进度(2016.5.29)
查看>>
Visual studio 创建项目失败vstemplate
查看>>
keras 上添加 roc auc指标
查看>>
Linux命令(二)关机重启
查看>>
[OpeCV] highgui头文件
查看>>
C# 获取远程图片
查看>>
Android——MaterialDesign之一Toolbar
查看>>
filebeat output redis 报错 i/o timeout
查看>>
Java-ArrayList
查看>>
Java获取新浪微博cookies
查看>>
面试题总结
查看>>
【BZOJ1095】捉迷藏(动态点分治)
查看>>
Table Basics [转载]
查看>>
Logback 学习笔记
查看>>
并查集
查看>>
11、组件注册-使用FactoryBean注册组件
查看>>
nyoj_95_众数问题_map练习
查看>>
uchome 是如何将数据插入数据库的
查看>>