2017/10/18
关于算法表达式求值演示(中缀表达式)的project
在这里把代码和我的一些编程过程的体会写下来,虽然都是一些很简单的东西,但是coding的过程体会很重要。
project的主要要求是完成1.算法表达式求值演示2.运算符集的扩充(主要包括乘方运算之类的吧^)3.完成赋值运算
参考书目《数据结构》严蔚敏
算法的基本思想:1.通过栈来实现,可以使用两个工作栈,一个OPTR用于存储运算符(char型);另一个OPND 用于存储操作数和运算结果(我自己用的是double型,int也可以吧,只是涉及到一些运算int就不太够用)2.首先置操作数栈(OPND)为空栈,将‘#’压入运算符栈(OPTR)栈底 3.依次读入表达式中的每个字符(串),若是操作数则进入操作数栈(OPND);若是运算符,则将运算符与运算符栈顶元素进行优先权比较后再进行相应操作(过程三言两语说不太清楚...具体看代码实现) 4.运算符简的优先关系(代码)
代码部分:
//算术表达式求值.cpp
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include "Stack.h"//因为要求stack要自己实现,所以是自己写的简单的stack类也可以直接include<stack>
using namespace std;
int Precede(char a, char b)
{//运算符优先关系的比较,返回1表示a的优先权高于b,0表示优先权相等,-1表示a的
switch (a)
{
case '+':
if(b == '+' || '-' || ')' || '#')
return 1;
else
return -1;
break;
case '-':
if(b == '+' ||