#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define MaxSize 10
typedef struct stack
{
char data[MaxSize]; //元素
int top; //栈顶指针
} SqStack;
//初始化栈
void InitStack(SqStack &S)
{
S.top = -1; //栈顶的位置在-1
}
// 增加一个元素
bool Push(SqStack &S, char x)
{
if (S.top == MaxSize)
{
return false; //栈满
}
S.top = S.top + 1;
S.data[S.top] = x;
return true;
}
// 删除一个元素 取出X
bool pop(SqStack &S, char &x)
{
if (S.top == -1)
{
return false; //栈空
}
x = S.data[S.top];
S.top = S.top - 1;
return true;
}
//判断是否为空
bool isEmpty(SqStack S)
{
if (S.top==-1)
{
return true;
}
return false;
}
bool bracketCheck(char str[],int len)
{
SqStack S;
InitStack(S);
for (int i = 0; i < len; i++)
{
if (str[i] == '(' || str[i] == '{' || str[i] == '[')
{
Push(S,str[i]);//入栈
}else
{
char topElem;
if (!pop(S,topElem))
return false;
if (str[i]==')'&&topElem!='(')
return false;
if (str[i] == '}' && topElem != '{')
return false;
if (str[i] == ']' && topElem != '[')
return false;
}
}
return isEmpty(S);
}
int main()
{
char str[] = "()()()()(){}{}[";
printf("%d",bracketCheck(str,strlen(str)));
}
数据结构-栈的应用-C语言实现括号匹配(括号的匹配)
最新推荐文章于 2022-10-26 21:28:22 发布