资源简介
c++ 的 算术表达式求值 数据结构课程设计里的一个题 给一个完整的表达式 可以带括号 求值当用户输入一个合法的算术表达式后,能够返回正确的结果。能够计算的运算符包括:加、减、乘、除、括号;能够计算的操作数要求在实数范围内;对于异常表达式能给出错误提示。
代码片段和文件信息
/***
*DynaSeqStack.cpp - 动态顺序栈,即栈的动态顺序存储实现
*
*
*题目:表达式求值
*
*班级:A1 北极
*
*姓名:邱继颖
*
*学号:2008010829
*
****/
#include
#include
#include
#include
#include “DynaSeqStack.h“
const int STACK_INIT_SIZE = 100; // 初始分配的长度
const int STACKINCREMENT = 10; // 分配内存的增量
/*------------------------------------------------------------
操作目的: 初始化栈
初始条件: 无
操作结果: 构造一个空的栈
函数参数:
SqStack *S 待初始化的栈
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool InitStack(SqStack *S)
{
assert(S != NULL);
S->base = (ElemType*)malloc(sizeof(ElemType) * STACK_INIT_SIZE);
if(S->base == NULL) return false;
S->top = S->base;
S->stacksize = STACK_INIT_SIZE;
return true;
}
/*------------------------------------------------------------
操作目的: 销毁栈
初始条件: 栈S已存在
操作结果: 销毁栈S
函数参数:
SqStack *S 待销毁的栈
返回值:
无
------------------------------------------------------------*/
void DestroyStack(SqStack *S)
{
assert(S != NULL);
free(S->base);
S->top = S->base = NULL;
}
/*------------------------------------------------------------
操作目的: 判断栈是否为空
初始条件: 栈S已存在
操作结果: 若S为空栈,则返回true,否则返回false
函数参数:
SqStack S 待判断的栈
返回值:
bool 是否为空
------------------------------------------------------------*/
bool StackEmpty(SqStack S)
{
assert((S.base != NULL) && (S.top != NULL));
return(S.base == S.top);
}
/*------------------------------------------------------------
操作目的: 得到栈的长度
初始条件: 栈S已存在
操作结果: 返回S中数据元素的个数
函数参数:
SqStack S 栈S
返回值:
int 数据元素的个数
------------------------------------------------------------*/
int StackLength(SqStack S)
{
assert((S.base != NULL) && (S.top != NULL));
return(S.top-S.base);
}
/*------------------------------------------------------------
操作目的: 得到栈顶元素
初始条件: 栈S已存在
操作结果: 用e返回栈顶元素
函数参数:
SqStack S 栈S
ElemType *e 栈顶元素的值
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool GetTop(SqStack S ElemType *e)
{
assert((S.base != NULL) && (S.top != NULL));
if(StackEmpty(S))
return false;
*e = *(S.top-1);
return true;
}
/*------------------------------------------------------------
操作目的: 遍历栈
初始条件: 栈S已存在
操作结果: 依次对S的每个元素调用函数fp
函数参数:
SqStack S 栈S
void (*fp)() 访问每个数据元素的函数指针
返回值:
无
------------------------------------------------------------*/
void StackTraverse(SqStack S void (*fp)(ElemType))
{
assert((S.base != NULL) && (S.top != NULL));
for(; S.basese++)
(*fp)(*S.base);
}
/*------------------------------------------------------------
操作目的: 压栈——插入元素e为新的栈顶元素
初始条件: 栈S已存在
操作结果: 插入数据元素e作为新的栈顶
函数参数:
SqStack *S 栈S
ElemType e 待插入的数据元素
返回值:
bool 操作是否成功
------------------------------------------------------------*/
bool Push(SqStack *S ElemType e)
{
if(S == NULL) return false;
assert((S->base != NULL) && (S->top != NULL));
// validate overflow
if(StackLength(*S) == S->stacksize)
{
El
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4331 2009-10-29 12:00 表达式求值\DynaSeqStack.cpp
文件 881 2009-10-27 08:49 表达式求值\DynaSeqStack.h
文件 147 2009-10-29 23:17 表达式求值\ElemType.cpp
文件 267 2009-10-29 19:49 表达式求值\ElemType.h
文件 3245 2009-10-30 10:49 表达式求值\Lab.cpp
目录 0 2009-10-30 11:08 表达式求值
----------- --------- ---------- ----- ----
8871 6
相关资源
- C++ 停车场管理 数据结构 课程设计
- 数据结构:B-树源代码
- 职工管理系统数据结构)
- 校园导游咨询系统 数据结构
- 编写算法删除单链表L中所有值为e的数
- C++数据结构分段线性插值
- 数据结构课程设计汉诺威塔
- C语言栈和队列代码实现
- 严蔚敏建立词索引表
- 无向图 破圈法求最小生成树
- 日历管理系统.cpp
- 数据结构编程题目及答案
- 单项选择标准化考试系统 C语言版
- 数据结构课程设计应用索引文件和查
- 数据结构严蔚敏C语言第二版习题答案
- 数据结构的二叉树用C语言实现的代码
- 文章编辑数据结构课程设计c语言编写
- 数据结构上机题
- 数据结构C语言 一元多项式的加减法
- 数据结构 走迷宫大作业 c语言完整代
- 马踏棋盘的源程序,C语言编写,数据
- 数据结构c语言版上机题代码汇总
- 数据结构C语言之哈夫曼编码
- 数据结构表达式求值,c语言版,能计
- 银行管理系统——数据结构C
- c语言银行管理系统
- 严蔚敏.吴伟民等《数据结构(c语言版
- C++数据结构与算法(第4版) 完整版
- 数据结构栈、队列、二叉树、顺序查
- 数据结构实验和作业严蔚敏C)
评论
共有 条评论