文章
2
粉丝
31
获赞
0
访问
556
思路:括号匹配→栈
利用栈的先入后出,当访问到左括号`(`和`[`时,就入栈。当访问到右括号时,取栈顶元素,判断栈顶元素是否与左括号匹配,如果匹配,则继续进行字符的判断。
注意:
① 本解法仅阐述原理,有更优解法(如C++自带栈)
② 在访问右括号时,可以先进性栈是否为空的判断,如果有右括号而栈空,则也可以判定为不匹配。
输入示例:(几个容易错的示例)
)[]()
(1+2+3)/1
(
代码:
方法一:自建栈
#include <stdio.h>
#include <iostream>
#include <malloc.h>
#include <string.h>
using namespace std;
#define MAXSIZE 100
typedef struct SqStack {
char* base;
int top;
};
void InitStack(SqStack& S) {
S.base = (char*)malloc(MAXSIZE * sizeof(char));
S.top = 0;
}
bool IsEmpty(SqStack S) {
if (S.top == 0) return true;
else return false;
}
int Push(SqStack& S, char e) {
if (S.top == MAXSIZE) return 0;// 栈满
else {
S.base[S.top++] = e;
}
 ...
登录后发布评论
暂无评论,来抢沙发