这篇博客介绍的表达式求值是用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语言算法实现相关推荐

  1. c语言 怎么对百位数求余量,数据结构(C语言版)

    <数据结构(C语言版)>由会员分享,可在线阅读,更多相关<数据结构(C语言版)(52页珍藏版)>请在装配图网上搜索. 1.数据结构(C语言版)第7章图,第7章图,内容 7.1 ...

  2. 表达式求值(数据结构栈,c语言版)

    表达式求值 一.实验题目 1.案例分析 2.案例实现 3.算法步骤 4.算法描述 二.工具环境 三.实验问题 四.实验代码 一.实验题目 1.案例分析 任何一个表达式都是由操作数(operand)运算 ...

  3. 使用堆栈实现对算数四则混合运算表达式的求值(C语言)

    使用堆栈实现对算数四则混合运算表达式的求值(C语言) 很方便的目录 使用堆栈实现对算数四则混合运算表达式的求值(C语言) 一.问题分析 基本思路 算符优先级构建 二.算法描述 算法描述 堆栈运算过程的 ...

  4. 表达式求值(C语言实现)

    描述 算数四则运算的规则是1)先乘除,后加减:2)从左算到右:3)先括号内,后括号外. 由此,算式4+23-10/5的计算顺序为4+23-10/5=4+6-10/5=4+6-2=8. 给定一个以&qu ...

  5. linux算术表达式求值数据结构,数据结构:算数表达式求值演示

    题目:设计一个程序,演示用算符优先法对算数表达式求值的过程. 一.需求分析 以字符序列的形式从终端读入输入语法正确.不含变量的整数表达式.利用教科书表3.1给出的算符优先关系,实现对算数四则混合运算表 ...

  6. 算术表达式求值(C语言栈)

    题目:算术表达式求值 题目描述:表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子.设计一个程序,演示用运算符优先法对算数表达式求值的过程. 基本要求:以字符序列的形式从终端输入语 ...

  7. c语言程序设计报告表达式求值,数据结构 课程设计表达式求值 实验报告

    <数据结构 课程设计表达式求值 实验报告>由会员分享,可在线阅读,更多相关<数据结构 课程设计表达式求值 实验报告(21页珍藏版)>请在人人文库网上搜索. 1.实验课程名称 级 ...

  8. python 表达式求值数据结构_python 数据结构与算法

    python 数据结构与算法 1 python常见数据结构性能 1.1 List 1.1.1 安索引取值和赋值 1.1.2 列表append和__add__() 1.1.3 使用timeit模块测试执 ...

  9. 顺序栈实现表达式求值(C语言实现)【栈】

    原理说明 代码实现 原理说明 表达式求值一定会出现表达式中运算符的优先级问题. 运算规则: 先乘除,后加减: 从左算到右: 先括号内,后括号外: 运算符优先表: 上面表格中有一些比较特殊的位置: ① ...

最新文章

  1. 港科大硕士ICCV 论文涉嫌抄袭,导师回应,二作已申请撤稿
  2. mysql vue 菜谱_vue+ java 实现多级菜单递归效果
  3. 【剑指offer-Java版】44扑克牌的顺子
  4. 小程序 video 控制器外观调整_「小程序JAVA实战」小程序视频组件与api介绍(51)...
  5. 计算机专业去广发银行,2019广发银行招聘计算机模拟试题
  6. 2011年度最佳代码“不管你们信不信,我反正信了”
  7. 麦肯锡方法中的经验(读书摘要)
  8. Java 集合系列12之 Hashtable详细介绍(源码解析)和使用示例
  9. JS开发之Factory(工厂)模式解析
  10. ARCore:从Android Studio开始
  11. 原创科幻短篇《高考》
  12. Ubuntu下彻底卸载mysql、安装mysql、及MySQLdb模块
  13. 《等着我吧,我会回来》 苏·西蒙诺夫
  14. git提交空目录的方法
  15. 全新版大学进阶英语综合教程 第2册 课后习题答案
  16. 论学生/战队/社团如何举办CTF比赛
  17. 2020春季学期哈工大软件构造学习心得四
  18. JS中的各种遍历方法
  19. [neovim/nvim] LSP 与代码补全配置笔记
  20. Python仿真|如何操纵足球比赛的输赢

热门文章

  1. 「6月雅礼集训 2017 Day4」暴力大神hxx
  2. HTML5 PDF 编辑,pdf.js的使用与改造
  3. 自动驾驶(八十一)---------Apollo之感知模块
  4. Apollo + Springboot 整合(多环境版)
  5. c语言中14 3,C语言中的单精度和双精度浮点型的区别!3.14是哪种?3.14159呢?
  6. java八大基本数据类型及其封装类
  7. Google最新VR(sdk的诞生)
  8. 卷积和反卷积(deconv)
  9. Web全栈~17.购物车案例(JavaScript动态效果)
  10. php文件上传思想,php之文件上传