栈的使用之括号匹配Char s[n]是一个字符串数组。Stack是一栈,i是元素对应的下表。设一个char flag[n]数组,用来标记是否匹配,数组中数值是‘l’(左不匹配,即没有找到右括号),‘r’(右不匹配),‘o’匹配成功。算法描述:(1)遍历该字符串数组。While(遍历...
分类:
其他好文 时间:
2014-12-10 14:07:04
阅读次数:
135
这次在原基础上添加了对于括号的支持,主要改进在如果碰到括号就将他压入栈中,同时具有最低优先级的输出(因为直到读取到了右括号左括号才被弹出)。主要代码如下,可以对照着上一篇随笔看,stack头文件是一样的。main.cpp 1 #include "stack.h" 2 #include "string...
分类:
其他好文 时间:
2014-11-21 21:43:53
阅读次数:
292
将算数表达式a+b+c*d转换成后缀表达式ab+cd*+,就可以利用栈来实现这种有优先级的运算,因此首先可以使用栈来将一种表达式转化成对应的后缀表达式。下面是实现的转换算法,注意不能带括号,支持+-*/运算符,stack的实现我可以去掉了错误检测,因为默认已经声明好了足够大小的栈。栈头文件stack...
分类:
其他好文 时间:
2014-11-21 14:12:48
阅读次数:
179
初看貌似有点复杂,但是搞懂了非常简单,就一个简单的栈应用,每次遇到计算符号"+", "-", "*", "/"就将栈顶端两个数字出栈,计算后再将结果压栈即可。。
#include
#include
#include
using namespace std;
class Solution {
public:
int evalRPN(vector &tokens) {
stack s...
分类:
其他好文 时间:
2014-10-03 15:36:44
阅读次数:
144
#include
#include
#define LENGTH 100 //初始分配栈的长度
#define ADD_LEN 10 //栈长增量
typedef struct //定义字符栈
{ int *base;
int *top;
int stacksize;
}SqStack;
void InitStack(SqStack &S); //初始化一...
分类:
其他好文 时间:
2014-08-01 13:50:31
阅读次数:
237
计算逆波兰表达式,了解更多关于逆波兰表达式请点击。
计算逆波兰表达式这是个很典型的栈应用的例子。
解题方法就是用栈来处理,需要注意的是本题输入给的是字符串数组,所以需要在字符串和整数之间有个转换。...
分类:
其他好文 时间:
2014-06-04 14:06:18
阅读次数:
318
---恢复内容开始---后缀表达式--->中缀表达式①.读到操作数,立刻放到输出中②.读到操作符,入栈,左括号也入栈③.读到右括号,依次出栈直到左括号(括号不输出)④.读到优先级低的操作符,原栈中操作符依次出栈,直到更低优先级,然后新的操作符入栈(保证栈中元素优先级
高-->低)中缀 a+b*c+(...
分类:
其他好文 时间:
2014-05-26 22:23:52
阅读次数:
296