表达式求值实验报告
李一鹏 PB12001076 数学系
1. 实验题目:表达式求值
2. 实验目的:熟悉栈与队列
3. 实验内容:
话说令狐冲只告诉东方不败:“东方姑娘你会永远活在我的心中。”东方姑娘听了那是万念俱灰啊,精通算术的东方姑娘一时想不开,抛给令狐冲一个表达式,说:“这个表达式你要是不能在一秒内给我把值求出来我就要坠入悬崖!”令狐冲一看事态不对,马上发动辟邪剑法之求助观众!
观众们,你们又不是不知道令狐冲的那个笨,东方姑娘的生命可以说是掌握在你们的手中了,喜欢她就99她吧!
4. 算法分析:
本算法采用了链表来储存表达式,加入了指数运算和函数还有常数π。由于指数运算是右结合,本算法先全部储存表达式再优先级一个个运算。对于函数和括号,本算法用了递归,遇到右括号即返回,把表达式的直接求解operate()转化成了无括号无函数表达式的求解calculate()。
5. 程序清单:
#include
#include
#include
#include
#define new1 (no*)malloc(sizeof(no))
#define deletenode p2->prec=p1->prec;free(p1);p1=p2->prec;p1->next=p2
#define error1 p1=head;p2=head-> next;if(p2){while(p2!=r){free(p1);p1=p2;p2=p2->next;}free(p1);p2->ope=1;return p2;}else{p1->ope=1;return p1;}
#define fun(a,b,c)