稍微看了看刘汝佳的白皮书,“实用主义”的STL实在是香到我了,而且在实验室大佬的推荐下我开始了stl的学习. 每篇附带一个题目方便理解,那行,直接开始. 毕竟是实用主义,所以就按照给的题目的例子来理解需要用到的函数,算法题目里用的多的函数也会拿出来晒一晒,其他就无所谓啦. 栈(stack) push.pop.size.empty push 入栈一个元素 pop 出栈一个元素,pop无返回值 top 取栈顶元素 size 查看元素个数 empty() 当队列为空时,返回true (来一张直观的图)…
大概描述        用c++语言在vc中实现部分数学计算功能.其中实现的数学计算功能包括加减乘除运算.开方计算.自然对数运算.以10为底的对数运算.幂计算.正弦余弦计算. 由用户输入要计算的表达式,然后判断表达式是否含有未知变量,若含有未知变量则调用可以处理未知量的计算函数,否则调用一般的计算函数. 把用户输入的表达式存进一个存放中缀表达式的字符数组,再定义一个存放后缀表达式的字符数组,通过调用中缀转后缀的函数,将转为后缀的字符存进后缀表达式的字符数组. 用存放后缀表达式的字符数组调用计算函…
题目链接:P1449 后缀表达式 题目描述: 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3(5–2)+7对应的后缀表达式为:3.5.2.-7.+@.'@'为表达式的结束符号.'.'为操作数的结束符号. 输入格式:输入:后缀表达式 输出格式:输出:表达式的值 输入输出样例: 输入 #1 3.5.2.-*7.+@ 输出 #1 16 分析: 栈的一大用处是表达式的计算.本题要求…
NC212914 牛牛与后缀表达式 题目 题目描述 给定牛牛一个后缀表达式 \(s\) ,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,'#'作为操作数的结束符号. 其中,表达式中只含有'+'.'-'.'*'三种运算,不包含除法. 本题保证表达式一定合法,且计算过程和计算结果的绝对值一定不会超过\(10^{18}\) 示例1 输入 "1#1#+" 返回值 2 说明 1#1#+这个后缀表达式表示的式子是1+1,结果为2 示例2 输入 "12#3#+15#*"…
最近在网上查了一下表达工计算器的类库,发现Java版本的有一个比较成熟的叫W3EVal,好像是一个IBM工程师写的,.net就很少了(可能是我了解不够多),但投机取巧的实现思路有很多,比如: (1)将Javasript中代码编译成.net类库,利用Javascript中的eval函数来实现; (2)利用ScriptControl执行JavaScript脚本实现; (3)利用DataTable的计算功能实现简单计算; (4)利用.net动态编译功能来实现等 这些方法在csdn的坛里有讨论,请见:h…
#include<stdio.h> #include<stdlib.h> int sw(char *a){ ,c=; while(a[i]){ ') c=c*+a[i]-'; i++; } ]=='-') c=-c; return c; } int main(){ ],b[]; ],i=; while(scanf("%s %s",a,b)!=EOF) { a1=sw(a); b1=sw(b); c[i]=a1+b1; i++; } ;j<i;j++) pr…
题目描述 将中缀表达式(infix expression)转换为后缀表达式(postfix expression).假设中缀表达式中的操作数均以单个英文字母表示,且其中只包含左括号'(',右括号‘)’和双目算术操作符+,-,*,/. 输入格式 第一行是测试样例个数n.以下n行,每行是表示中缀表达式的一个字符串(其中只包含操作数和操作符和左右括号,不包含任何其他字符),长度不超过100个字符. 输出格式 为每一个测试样例单独一行输出对应后缀表达式字符串(其中只包含操作数和操作符,不包含任何其他字符…
1.利用栈(Stack)来存储操作数和操作符: 2.包含中缀表达式转后缀表达式的函数,这个是难点,也是关键点: 2.1.将输入字符串转为数组: 2.2.对转换来的字符进行遍历:创建一个数组,用来给存储转换为后缀表达式的字符:创建一个栈,用来存储操作符: 2.3.通过正则来过滤,为数字的则放在数组中,其他的则放在栈中: 2.4.接下来是最麻烦的操作符判断,我做的这个比较简单,如果再复杂些,我这个可能还要进行扩展或优化: 2.5.对操作符的判断按照其优先级来,首先是括号,有'(',直接压人,等到有'…
题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@.’@’为表达式的结束符号.‘.’为操作数的结束符号. 输入输出格式 输入格式: 输入:后缀表达式 输出格式: 输出:表达式的值 输入输出样例 输入样例#1: 3.5.2.-*7.+@ 输出样例#1: 16 说明 字符串长度,1000内. 代码 #includ…
1.堆栈-Stack 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除操作. 堆栈中允许进行插入和删除操作的一端称为栈顶,另一端称为栈底.堆栈的插入和删除操作通常称为进栈或入栈,堆栈的删除操作通常称为出栈或退栈. Java中已经出了Stack的具体实现类 堆栈的数据集合可以表示为a0,a1,-,an-1,每个数据元素的数据类型可以是任意的类类型. 操作集合 (1)入栈…