链接: 王道2021数据结构链接
提取码:rpy8
–来自百度网盘超级会员V4的分享`
#include<stdio.h>
#define MaxSize 50
typedef char ElemType;
typedef struct{
ElemType data[MaxSize];
int top;
} SqStack;
//初始化栈
void InitStack(SqStack &S){
S.top = -1;
printf("初始化栈成功\n");
}
//判断栈是否为空
bool StackEmpty(SqStack S){
printf("判断栈是否为空成功\n");
if(S.top == -1){
return true;
}
else{
return false;
}
}
//新元素入栈
bool Push(SqStack &S, ElemType x){
if(S.top == MaxSize-1) return false;
S.top += 1;
S.data[S.top] = x;
printf("新元素入栈成功\n");
return true;
}
//栈顶元素出栈,用x返回
bool Pop(SqStack &S, ElemType &x){
if(S.top == -1) return false;
x = S.data[S.top];
S.top--;
printf("栈顶元素返回成功\n");
return true;
}
//str是输入的字符串,lenght是他的长度
bool bracketCheck (ElemType str[], int lenght){
//初始化顺序栈
SqStack S;
InitStack(S);
//for循环遍历字符串
for(int i = 0; i < lenght; i++){
//str[i]是否为左括号(如果是,将其压入栈中)
if(str[i] == '(' || str[i] == '[' || str[i] == '{'){
//将str入栈
Push(S, str[i]);
}else{//不是的话但是右括号的话
//判断栈是否为空
if(StackEmpty(S)){
//如果为空的话就返回错误(结束)
return false;
}
char topElem;
//栈顶元素出栈
Pop(S, topElem);
if(str[i] == ')' && topElem != '(')
return false;
if(str[i] == ']' && topElem != '[')
return false;
if(str[i] == '}' && topElem != '{')
return false;
}
}
printf("算法实现成功\n");
return StackEmpty(S);
}
int main(void){
ElemType str[] = {'(','(',')',')'};
bool b = bracketCheck(str, 4);
if(b == true){
printf("正确");
}else{
printf("不正确");
}
return 0;
}