C语言简易计算器(中缀表达式转后缀表达式,通过堆栈实现)

本文介绍了一个使用C语言编写的简易计算器,它将中缀表达式转化为后缀表达式进行计算。虽然不支持括号,但扩展到支持括号的计算并不复杂。该计算器的核心算法借鉴了某大牛的博客思路,如将中缀表达式'2+2*3/2-1'转换为后缀表达式'2,2,3,2,/,*,+,1,-',最后得出结果4。" 105043114,9186789,LeetCode高频算法题解析:DFS与BFS实战,"['算法', 'DFS', 'BFS', 'LeetCode', '二叉树']
摘要由CSDN通过智能技术生成

用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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值