括号匹配问题(C语言)

算法实现

#include 
#include 
#include 
#define MaxSize 10

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 = S.top+1;//指针加1
	S.data[S.top]=x;//新元素入栈 
	return true; 
} 

//出栈
char Pop(SqStack &S){
	if(S.top==-1) return false;//空栈
	char x;
	x = S.data[S.top];
	S.top = S.top-1; 
	return x;
} 

//检查括号是否匹配 
bool bracketCheck(char str[],int length){
	SqStack S;
	InitStack(S);
	for(int i=0;i<length;i++){
		if(str[i]=='(' || str[i]=='{' || str[i]=='['){
			Push(S,str[i]);
		}
		else{
			if(StackEmpty(S)){
				printf("失败1");
				return false;
			} 
			char t;
			t=Pop(S);
			if(str[i]==')' && t!='('){
				printf("失败2");
				return false;
			} 
			if(str[i]==']' && t!='['){
				printf("失败3"); 
				return false;
			} 
			if(str[i]=='}' && t!='{'){
				printf("失败4");
				return false;
			} 
		}
	}
	return StackEmpty(S);
} 

int main(){
	char ch[10];
	for(int i=0;i<10;i++){
		scanf("%c",&ch[i]);
	}
	if(bracketCheck(ch,10)){
		printf("括号匹配成功");
	}
	else{
		printf("括号不匹配");
	}
	return 0;
}

你可能感兴趣的:(c语言,算法,数据结构)