C语言表达式计算器
为了方便了解流程,在程序中把计算过程也输出了.而且栈操作的实现部分也是自己实现的.%q5s4o&s@gliv程序用两个栈,optr寄存运算符,opnd寄存操作数和运算结果.输入的表达式以等号结束,例如:2*(1+2)=
/**************表达式计算器************/
#include <stdio.h>
#include <stdlib.h>Kd?R"?
#include <string.h>%s5D}x2O^R~
#include <conio.h>
#include <malloc.h>
1BQD!}[#J5`"| ?2I
#define STACK_SIZE 100
#define APPEND_SIZE 10BBLZI!t
MY+v|i$EH} tG
struct SNode{
float data; /*存放操作数或者计算结果*/
char ch; /*存放运算符*/*A F-wq+u'[ m IzU7?
};J*?P9QJX6z6ih8n
struct Stack{
SNode *top;-{1UNbZTE?
SNode *base; |-]IR`-SZ6x
int size;
};
/*栈操作函数*/!i&I PFL&DIE FI'e
int InitStack(Stack &S); /*创建栈*/2q)@(`2@x0h s
int DestroyStack(Stack &S); /*销毁栈*/
int ClearStack(Stack &S); /*清空栈*/|3PWU`p/D
int GetTop(Stack S, SNode &e); /*取出栈顶结点并返回节点值*/
int Push(Stack &S,SNode e); /*将结点e压入栈*/y0h2TC]$i;\~
int Pop(Stack &S,SNode &e); /*删除栈顶结点并返回其节点值*/*U)O/t4Y$B?9H
/*表达式计算器相关函数*/0B,`+XQ1f'][1X
char get_precede(char s,char c); /*判断运算符s和c的优先级*/