c语言表达式的算法,表达式求值--数据结构C语言算法实现
这篇博客介绍的表达式求值是用C语言实现的,只使用了c++里面的引用。
数据结构课本上的一个例题,但是看起来很简单,实现却遇到了很多问题。
这个题需要构建两个栈,一个用来存储运算符OPTR, 一个用来存储数字OPND。
但是,数字和运算符都定义成字符型栈吗?
出现了问题,当运算结果或中间结果为负时,没有办法存储。而且只能运算0~9之间的数字结果也只能是0~9之间。
那就运算符栈为字符栈, 数字栈为数值型栈,在存储时将表达式中的字符转化成数值进行存储。
但是,如果我们不用c++里面的stack进行栈的定义,而是用C语言进行实现,这种方法实现起来好像也没有这么简单,代码很多。两种栈的元素类型不一样,操作很繁琐。
怎么办呢, 我想可以用char类型的ASCII码数值来表示数值,两个栈都定义为字符栈。
数值进行存储时,将读入的字符型变量值减去0的ASCII码值 c - '0' ,然后压栈。
但这样做也有缺陷,应为C语言中char类型只有8位, 那这种方法实现的表达式求值,其结果和中间值的取值范围[ -128, 127] 。
我们主要是学习栈的实现和应用,其实对于这个题来说已经足够了。
下面附上代码的实现:
#include
#include
#define ElemType char
#define STACKINCEMENT 10
#define STACK_INIT_SIZE 50
#define Stat
c语言表达式的算法,表达式求值--数据结构C语言算法实现相关推荐
- c语言 怎么对百位数求余量,数据结构(C语言版)
<数据结构(C语言版)>由会员分享,可在线阅读,更多相关<数据结构(C语言版)(52页珍藏版)>请在装配图网上搜索. 1.数据结构(C语言版)第7章图,第7章图,内容 7.1 ...
- 表达式求值(数据结构栈,c语言版)
表达式求值 一.实验题目 1.案例分析 2.案例实现 3.算法步骤 4.算法描述 二.工具环境 三.实验问题 四.实验代码 一.实验题目 1.案例分析 任何一个表达式都是由操作数(operand)运算 ...
- 使用堆栈实现对算数四则混合运算表达式的求值(C语言)
使用堆栈实现对算数四则混合运算表达式的求值(C语言) 很方便的目录 使用堆栈实现对算数四则混合运算表达式的求值(C语言) 一.问题分析 基本思路 算符优先级构建 二.算法描述 算法描述 堆栈运算过程的 ...
- 表达式求值(C语言实现)
描述 算数四则运算的规则是1)先乘除,后加减:2)从左算到右:3)先括号内,后括号外. 由此,算式4+23-10/5的计算顺序为4+23-10/5=4+6-10/5=4+6-2=8. 给定一个以&qu ...
- linux算术表达式求值数据结构,数据结构:算数表达式求值演示
题目:设计一个程序,演示用算符优先法对算数表达式求值的过程. 一.需求分析 以字符序列的形式从终端读入输入语法正确.不含变量的整数表达式.利用教科书表3.1给出的算符优先关系,实现对算数四则混合运算表 ...
- 算术表达式求值(C语言栈)
题目:算术表达式求值 题目描述:表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子.设计一个程序,演示用运算符优先法对算数表达式求值的过程. 基本要求:以字符序列的形式从终端输入语 ...
- c语言程序设计报告表达式求值,数据结构 课程设计表达式求值 实验报告
<数据结构 课程设计表达式求值 实验报告>由会员分享,可在线阅读,更多相关<数据结构 课程设计表达式求值 实验报告(21页珍藏版)>请在人人文库网上搜索. 1.实验课程名称 级 ...
- python 表达式求值数据结构_python 数据结构与算法
python 数据结构与算法 1 python常见数据结构性能 1.1 List 1.1.1 安索引取值和赋值 1.1.2 列表append和__add__() 1.1.3 使用timeit模块测试执 ...
- 顺序栈实现表达式求值(C语言实现)【栈】
原理说明 代码实现 原理说明 表达式求值一定会出现表达式中运算符的优先级问题. 运算规则: 先乘除,后加减: 从左算到右: 先括号内,后括号外: 运算符优先表: 上面表格中有一些比较特殊的位置: ① ...
最新文章
- 港科大硕士ICCV 论文涉嫌抄袭,导师回应,二作已申请撤稿
- mysql vue 菜谱_vue+ java 实现多级菜单递归效果
- 【剑指offer-Java版】44扑克牌的顺子
- 小程序 video 控制器外观调整_「小程序JAVA实战」小程序视频组件与api介绍(51)...
- 计算机专业去广发银行,2019广发银行招聘计算机模拟试题
- 2011年度最佳代码“不管你们信不信,我反正信了”
- 麦肯锡方法中的经验(读书摘要)
- Java 集合系列12之 Hashtable详细介绍(源码解析)和使用示例
- JS开发之Factory(工厂)模式解析
- ARCore:从Android Studio开始
- 原创科幻短篇《高考》
- Ubuntu下彻底卸载mysql、安装mysql、及MySQLdb模块
- 《等着我吧,我会回来》 苏·西蒙诺夫
- git提交空目录的方法
- 全新版大学进阶英语综合教程 第2册 课后习题答案
- 论学生/战队/社团如何举办CTF比赛
- 2020春季学期哈工大软件构造学习心得四
- JS中的各种遍历方法
- [neovim/nvim] LSP 与代码补全配置笔记
- Python仿真|如何操纵足球比赛的输赢
热门文章
- 「6月雅礼集训 2017 Day4」暴力大神hxx
- HTML5 PDF 编辑,pdf.js的使用与改造
- 自动驾驶(八十一)---------Apollo之感知模块
- Apollo + Springboot 整合(多环境版)
- c语言中14 3,C语言中的单精度和双精度浮点型的区别!3.14是哪种?3.14159呢?
- java八大基本数据类型及其封装类
- Google最新VR(sdk的诞生)
- 卷积和反卷积(deconv)
- Web全栈~17.购物车案例(JavaScript动态效果)
- php文件上传思想,php之文件上传