#include<stdio.h>
#include<stdbool.h>
#include <string.h>
#include <stdlib.h>
#define MaxSize 50
#define _CRT_SECURE_NO_WARNINGS
typedef struct {
char data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack *S){
S->top = -1;
}
bool StackEmpty(SqStack S)
{
if (S.top == -1)
return true;
else
return false;
}
bool Push(SqStack *S, char x)
{
if (S->top == MaxSize - 1)
return false;
S->top += 1;
S->data[S->top] = x;
return true;
}
bool Pop(SqStack* S, char* x)
{
if (S->top)
return false;
*x = S->data[S->top];
S->top -= 1;
return true;
}
bool check(char str[], int length)
{
int i;
SqStack S;
InitStack(&S);
for (i = 0; i < length; i++)
{
if (str[i] == '(' || str[i] == '[' || str[i] == '{')
{
Push(&S, str[i]);
}
else
{
if (StackEmpty(S))
{
return false;
}
}
char topelem;
if (str[i] == ')' && topelem == '(')
{
return false;
}
else if (str[i] == '}' && topelem != '{')
{
return false;
}
else if (str[i] == ']' && topelem != '[')
{
return false;
}
}
return StackEmpty(S);
}
int main() {
char s[MaxSize];
printf("请输入需要判断的括号:\n");
scanf("%s", s);
int len = strlen(s);
printf("当前输入的括号个数为:%d\n", len);
printf("--------现在开始进行判断--------\n");
if (check(s, len)) {
printf("匹配成功!");
}
else {
printf("匹配失败!");
}
return 0;
}
11111
最新推荐文章于 2024-10-11 16:56:17 发布