2 iseuwei ISEUWEI 于 2016.03.11 12:24 提问

数据结构一书的字符优先算法例题,

关于栈的简单例题,相信大家都看过,我看了例题后想自己实现下,比如(3+4)+(2*5-6)=
发现最大问题是算符的优先级怎么确定,我想到用枚举类型定义一下,这样可以比较大小,但是有些同级啊比如加减,枚举就解决不了了。我记得似乎有个函数可以映射一下,这样把加减都映射到1,乘除,,,这样,关键是我不熟悉那个函数,各位大神有什么好的思路没,指点一下吧

2个回答

lx624909677
lx624909677   Ds   Rxr 2016.03.11 14:12
已采纳

转换成后缀表达式然后计算,比如你的那个算式对应的后缀表达式就是3 4 + 2 5 * 6 - +,然后用栈其实就是利用栈先进后除的原理,遇到数字进栈,遇到符号出栈,计算完了继续进栈

ISEUWEI
ISEUWEI 你好,你说的有一定道理,但是只能用在特定式子啊,如果减号后面是乘号,就不能把前两个数运算了,我想要的效果是从键盘逐个输入字符,遇等号输出表达式结果
2 年多之前 回复
ISEUWEI
ISEUWEI   2016.03.12 08:00

这只能用于一般情况吧,如果减号接着乘号,就不成对前两个数运算,我想要的效果是,逐字符输入表达式,遇到等号就能输出运算结果

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
[2017/05/18]操作系统调度算法--最短剩余时间优先算法的模拟实现
看了看上次更博还是3月份。。可怕可怕。果然是因为最近沉迷于读书无法自拔啊qwq(明明是因为懒吧啊喂!)今天看到一道OS题, 题目是这样的: 设有四个进程,它们的到达时刻和处理时间如下所示: 进程 到达时刻 处理时间 P1 , 0 , 8 P2 , 3 , 6
【数据结构与算法】 哈夫曼树——哈夫曼编码的一个实例
哈夫曼树和哈夫曼编码
行列优先存储与循环
对于一个二维数组A[m][n],在计算机内存中有两种存储方式:行优先存储和列优先存储。
数据结构-算术表达式-算符优先法
代码还添加了乘方的优先级,自行参考 一开始我写的只能输入个位数,后来想了好久才解决,主要是在判断是否为运算符后,若不是运算符,别急着入栈,用一个标记数组记着,若下一个字符还不是运算符,则利用strcat函数链接之前标记数组和这一个字符,直到下一个字符是运算符为止,才入栈。至于负数的运算,则要判断是否连续两个都为运算符,且前一个运算符为‘(’后一个运算符为‘-’,若是就加个0入栈即可。#includ
最低松弛度优先调度算法
最低松弛度优先(LLF)算法是根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度愈高,为该任务所赋予的优先级就愈高,使之优先执行。在实现该算法时要求系统中有一个按松弛度排序的实时任务就绪队列,松弛度最低的任务排在队列最前面,被优先调度。松弛度的计算方法如下:    任务的松弛度=必须完成的时间-其本身的运行时间-当前时间   其中其本身运行的时间指任务运行结束还需多少时间,
数据结构,贪心算法,枚举法的典型例题
数据结构典型例题,里面包含了几种典型的数据结构的详细讲解,典型算法,枚举算法,贪心算法..等等..是非常好的培训教材.
先来先服务和短作业优先算法
FCFS&SJF
数据结构 简单算式表达式求值
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> typedef struct { char *elem; int top; int size; }Sqstack; //定义操作符栈和操作数栈 Sqstack Ope; Sqstack Num; void Initstack(...
【java版】数据结构与算法分析学习之路【一】前言
一.数据结构和算法概述?【框范围】 基础数据结构主要包括表【数组+链表】、栈、队列【散列表】、树、图、堆。高级数据结构包括伸展树、红黑树、确定性跳跃表、AA树、treap树、k-d树、配对堆。常用的算法内容包括排序算法【插入排序+希尔排序+堆排序+归并排序+快速排序+桶式的排序+外部排序】、图论算法【最短路径算法】、其他【贪婪算法+分治算法+动态规划+随机化算法+回溯算法】、摊还分析【二
数据结构和算法经典100题-第25题
判断两个字符串是否互为变形词 题目要求: 给定两个字符串str1和str2,若str1和str2中的字符种类一样,每个字符出现的频率一样,那么str1和str2就互为变形词。题目分析: 题目解析: