表达式求值程序(用栈实现)

本文介绍如何使用栈数据结构在C语言中实现表达式求值。通过讲解涉及存储、struct和算法的知识,阐述了从读取表达式到计算结果的完整过程,包括操作符优先级和结合性的处理。
摘要由CSDN通过智能技术生成
#define STACK_INIT_SIZE  100
#define STACKINCREMENT   10
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef double SElemType;
/
                           /*以下为栈的操作*/

typedef struct SqStack    //栈的顺序存储结构
{
 SElemType *base;
 SElemType *top;
 int stacksize;
}SqStack;
void InitStack (SqStack &S)//构造一个空栈
{
 S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));//分配储存空间
 if(!S.base) exit (-1);          //空间分配失败
 S.top=S.base;
 S.stacksize=STACK_INIT_SIZE;        //空间初始分配
}//InitStack
bool GetTop (SqStack S,SElemType  &e)
{      //若栈不空,则用e返回S的栈顶元素,并返回true;否则返回false
 if(S.top==S.base)
  return false;
 e=*(S.top-1);
 return true;
}//GetTop
bool Push(SqStack &S,SElemType e)
{        //插入元素为e的新的栈顶元素
 if(S.top-S.base>=S.stacksize)
 {       //栈满,追加存储空间
  S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
   if(!S.base) 
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值