数据结构 第三章(学习笔记三(表达式求值))

刚刚学习C语言的时候我们都写过计算器,但是当时写的计算器只能进行一步四则运算,对于一次输入类似这种(1+2)*3+4的运算则没有办法计算。

本篇博客利用栈这种数据结构实现了支持带括号的表达式求值计算器。

C语言实现表达式求值的完整代码

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>

typedef  int ElemType;
#define STACK_INIT_SIZE 100
#define  STACKINCREMENT 10

typedef struct {
   
	ElemType* base;
	ElemType* top;
	int  stacksize;
}sqStack;


void InitStack(sqStack* s){
   
	s->base = (ElemType*)malloc(STACK_INIT_SIZE * sizeof(ElemType));
	if (!s->base){
   
		exit(1);
	}
	s->top = s->base;
	s->stacksize = STACK_INIT_SIZE;
}
void Push(sqStack* s, ElemType e){
   
	if (s->top - s->base >= s->stacksize){
   
		s->base = (ElemType*)realloc(s->base, (s->stacksize + STACKINCREMENT) * sizeof(ElemType));
		if (!s->base){
   
			exit(1);
		}
		s->top = s->base + s->stacksize;
		s->stacksize += STACKINCREMENT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值