达式的经典 应用。
数据结构中的许多结构都是很经典思想,只有把编程语言和数据结构都熟练 掌握的情况下,才能做出一些很好的作品。
在编程过程中,虽然有时候是很发闷的, 尤其是程序无错但结果不对,但是在完成一个完整的程序时所带来的喜悦是其它事 情所不能替代的。
我很喜欢编程,即使我的知识和能力有限,但我相信经过努力, 一切皆有可能。
七、附录: 程序源代码如下:include ltstdio.hgtinclude ltstring.hgtinclude ltstdlib.hgt//算符优先级表char First77 //-/ // gtgtltltltgtgt /-/ gtgtltltltgtgt // gtgtgtgtltgtgt /// gtgtgtgtltgtgt // ltltltltlt // gtgtgtgt gtgt // ltltltltlt //运算符数组char OP7-///数据结构体typedef struct double data50 int topOPND_Stack//运算符结构体typedef struct char data50 通信工程 11 级一班 12/17 刘 秀 C 语言课程设计-简易计算器 int topOPTR_Stack//初始化运算符栈函数void InitStack_ROPTR_Stack a a-gttop-1//初始化数据站函数void InitStack_DOPND_Stack a a-gttop-1//运算符进栈函数void Push_ROPTR_Stack achar b a-gttop a-gtdataa-gttopb//数据进栈函数void Push_DOPND_Stack adouble b a-gttop a-gtdataa-gttopb//取运算符栈顶符函数void GetTop_ROPTR_Stack achar b ba-gtdataa-gttop//取数据栈顶数函数void GetTop_DOPND_Stack adouble b ba-gtdataa-gttop//判断数据是否为运算符函数int Inchar achar s forint i0ilt7i ifasi return 1 return 0//算符优先级判断函数char Precedechar achar b int mn forint i0ilt7i ifaOPi mi 通信工程 11 级一班 13/17 刘 秀 C 语言课程设计-简易计算器 ifbOPi ni return Firstmn//删除运算符栈顶元素,并取新栈的栈顶元素void Pop_ROPTR_Stack achar b a-gttop-- ba-gtdataa-gttop//取数据站的栈顶元素,并从栈中删除此元素void Pop_DOPND_Stack adouble b ba-gtdataa-gttop a-gttop--//二元运算函数double Operatedouble achar thetadouble b switchtheta case:return ab case-:return a-b case:return ab case/:return a/b default:return 0 //将字符串转换成浮点型数据double Getdoublechar aint b double xchar s50 int m0n nstrlena forint ibiltni ifInaiOP1 mibreak foribiltmi si-bai strcatsquot0quot xatofs bm return x//算符优先算法求值核心函数double EvaluateExpressionchar s 通信工程 11 级一班 14/17 刘 秀 C 语言课程设计-简易计算器 OPND_Stack OPND .