首先构建栈
调用匹配函数
代码调用
1.括号匹配问题就是当遇到{( [这些左括号的时 将括号字符入栈
2.当遇到右括号时判断栈顶元素是不是与左括号匹配如果匹配就出栈
如果不匹配就直接结束程序(即括号匹配失败)
首先构建栈
struct STACK
{
char num[10];
int top;
};
struct STACK* creatstack()
{
struct STACK* stack = new struct STACK;
assert(stack);
stack->top = -1;//0 -1这些根据直接所习惯去标记栈顶 -1只是先置加 0后置加
return stack;
}
void push(struct STACK* stack, char ch)
{
stack->num[++stack->top] = ch;
}
void pop(struct STACK* stack)
{
stack->top--;
}
调用匹配函数
如果返回true即匹配成功 返回false即匹配失败
bool Match(struct STACK* stack, char* match)
{
int len = strlen(match);
for (int i = 0; i < len; ++i)
{
if (match[i] == '{' || match[i] == '[' || match[i] == '(')
{
push(stack, match[i]);
}
if (match[i] == '}' )
{
if (stack->num[stack->top] == '{')
{
pop(stack);
}
else
{
return false;
}
}
if (match[i] == ')' )
{
if (stack->num[stack->top] == '(')
{
pop(stack);
}
else
{
return false;
}
}
if (match[i] == ']' )
{
if (stack->num[stack->top] == '[')
{
pop(stack);
}
else
{
return false;
}
}
}
if (stack->top == -1)
return true;
else
{
return false;
}
}
代码调用
如果是输出1说明匹配成功 输出0匹配不成功
int main()
{
struct STACK* stack = creatstack();
char str[10] = "()[][]{}";
cout << Match(stack ,str)<< endl;
}
以上就是C语言堆栈括号匹配问题示例详解的详细内容,更多关于C语言堆栈括号匹配的资料请关注软件开发网其它相关文章!