题目:求字符串[(())]的括号是否匹配,这个题相对比较简易,也记录一下。
思路,左括号就入栈,遇到右括号就出栈一个元素进行匹配判定,构造一个switch。同时,设置一个监视flag,初始置1,一旦不匹配就将之置为0,也就是以后就不用再比较了。
#include <iostream> using namespace std; #define maxsize 10 typedef struct stack { char a[maxsize]; int top; }stack,*Stack; void push(Stack &s,char ch)/*入栈*/ { s->a[++s->top]=ch; } char pop(Stack &s)/*出栈*/ { char x=s->a[s->top--]; return x; } int main() { int i=0,flag=1; char x; char *string="[(((())))]"; Stack s=(Stack)malloc(sizeof(stack)); s->top=-1; while(string[i]!='