1.用Priority函数表示运算符优先级

用链栈实现计算器

2.定义变量

用链栈实现计算器

定义两个链栈,分别存储操作符(opt)和操作数(num)。

3.初始化两个链栈并输入

用链栈实现计算器

4.当字符串不为‘\0’或者opt中还有操作符时继续循环

用链栈实现计算器

5.判断输入的是数字还是字符,是数字直接进栈

用链栈实现计算器

6.opt为空或者opt栈顶为 '(' 而输入字符不为 ')' 或者输入字符优先级比栈顶字符高   直接进栈

用链栈实现计算器

7.opt栈顶为 '(' 输入字符为 ')' ,出栈不运算

用链栈实现计算器

8.输入字符为 '\0' 而opt栈不为空 或者 输入字符为 ')' 而栈顶不为 '(' 或者 输入字符优先级比栈顶字符低或相等    出栈栈顶字符和两个操作数,进行运算并将结果重新放入num栈中。

用链栈实现计算器

9.打印num中最后的元素,就是结果

用链栈实现计算器

附:头文件Counter.h

用链栈实现计算器

用链栈实现计算器

用链栈实现计算器

用链栈实现计算器

调用函数Counter.c

初始化

用链栈实现计算器

进栈

用链栈实现计算器

栈顶元素

用链栈实现计算器

出栈

用链栈实现计算器









相关文章: