题目
假设表达式中允许包含3种括号:圆括号、方括号和大括号。设计一个算法采用顺序栈判断表达式中的括号是否正确匹配。
解题
基本思路如下:实例化一个字符栈,维持一个bool变量flag,初始化为true。然后遍历整个表达式:
如果是三种正括号‘(’ '[' '{',则入栈;
如果是三种反括号‘)’ ']' '}',则对比栈顶元素,如果是正好对应的正括号,则将其从栈中弹出,否则flag设为false,break停止循环;
如果是其他字符,跳过;
最后判断,如果flag为true且栈为空,则括号正确匹配,否则不正确匹配。
代码如下:
// 目前我在复习C++,暂时对泛型编程那一块不太熟悉了,所以先定义另外的字符栈,下次再用模板吧。
// StackForChar.h 字符栈
#include <iostream>
using namespace std;
class StackForChar
{
private:
int maxSize;
int top;
char * ptr;
public:
StackForChar(const int maxSize_)
{
maxSize = maxSize_;