2021-10-17
作者:互联网
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Maxsize 50
typedef char Datatype;
typedef struct{
Datatype data[Maxsize];
int top;
}SqStack;
//栈初始化
void InitStack(SqStack *S)
{
S->top=-1;
}
//判断栈空
int StackEmpty(SqStack *S)
{
if(S.top==-1)
return 0;
else
return 1;
}
//入栈
int Push (SqStack *S,Datatype x)
{
if(S->top==Maxsize-1)//栈满,出错
return 0;
else
S->data[++S.top]=x;//栈顶指针加1,入栈
return 1;
}
//出栈
int Pop(SqStack *S, Datatype *x)
{
if(S->top==-1)//栈满,出错
return 0;
else
*x=S->data[S.top--];//出栈,栈顶指针减一
return 1;
}
int Bracketscheck(SqStack *S,char *str)
{
InitStack(S);
char e;
int i=0;
while(str[i]!='\0')//循环
{
if(str[i]=='('||str[i]=='['||str[i]=='{')
{
Push(S,str[i]); //如果有{ ( [ 先入栈
}else{
if(StackEmpty(S))
{return 0;
}
char d;
Pop(S,&d);//用刚进入的字符与刚出栈的字符相比较
if(str[i]==')'&&d!='(')
return 0;
if(str[i]==']'&&d!='[')
return 0;
if(str[i]=='}'&&d!='{')
return 0;
}
i++;
}
int h=StackEmpty(S);//如果最后栈空,则匹配
if(h==1)
return 0;
else
return 1;
}
int main()
{
SqStack S;
char str[Maxsize];
printf("请输入你要匹配的字符串:");
scanf("%s",str);
int h=Bracketscheck(&S,str);
if(h==0)
printf("括号不匹配");
else
printf("括号匹配");
return 0;
}
标签:10,return,17,SqStack,int,top,else,2021,str 来源: https://blog.csdn.net/qq_57983127/article/details/120813329