用C语言,写了一个简易的计算器,只有加减乘除,没有括号,但是若果要实现括号也是很容易的。
其核心思想是将输入的中缀表达式转换为后缀表达式,转换的思想主要参考了这位大牛的博客:http://blog.csdn.net/ssjhust123/article/details/8001651。
例如:输入中缀表达式2+2*3/2-1,程序可将其转换成后缀表达式2,2,3,2,/,*,+,1,- 其中','是为了间隔开数字,便于提取。最终的输出结果为:4
第一次发帖,本人菜鸟,欢迎高手批评指正!
代码如下:
#include "stdio.h"
#include "string.h"
#include "malloc.h"
typedef struct tag_STACK_STRU
{
float valueData;
struct tag_STACK_STRU *pNext;
}stackList; //用链表实现数据的存储
stackList *g_stOperand = NULL; //操作数
stackList *g_stOperator = NULL; //操作符
void makeEmpty(stackList *stack); //清空栈
char isEmpty(stackList *stack); //判断栈是否为空
void push(stackList *stack, float data); //入栈操作
void pop(stackList *stack); //出栈操作
void calculate(char *p); //计算的子程序
void changeStr(char *p); //将中缀表达式转换为后缀表达式
char suffixStr[1024];
int main()
{
// 业务代码实现处
char *p = (char *)malloc(sizeof(char));
g_stOperand = (stackList *)malloc(sizeof(stackList));
g_stOperand->pNext = NULL;
makeEmpty(g_stOperand);
g_stOperator = (stackList *)malloc(sizeof(stackList));
g_stOperator->pNext = NULL;
makeEmpty(g_s