栈在括号匹配中的应用

括号匹配

3.3.1栈在括号匹配中的应用
假设表达式中允许包含三种括号:圆括号,中括号,大括号。其嵌套的顺序任意,例如{)()})匹配失败
([])(){} 匹配成功!!!

//顺序栈
#include
#define Maxsize 10

typedef struct {
	char data[Maxsize];
	int top;
}SqStact;
void InitStact(SqStact &S){
	S.top=0;
}
bool Emptystact(SqStact S){
	if(S.top==0) return true;
	else return false;
}
bool Push(SqStact &S,char c){
	if(S.top==Maxsize) return false;
	S.data[S.top]=c;
	S.top++;
	return true;
}
bool Pop(SqStact &S,char &c){
	if(S.top==0) return false;
	S.top--;
	c=S.data[S.top];
	return true;
}

bool bracketCheck(char str[],int length){
	SqStact S;
	InitStact(S);
	for(int i=0;i<length;i++)
	{
		if(str[i]=='('||str[i]=='{'||str[i]=='['){
			Push(S,str[i]);
		}
		else{
			if(Emptystact(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;
		}
	}
	return Emptystact(S);
}
int main(){
	char str[10];
	scanf("%s",str);
	for(int i=0;i<10;i++){
		printf("%c",str[i]);
	}
	printf("\n");
	if(bracketCheck(str,10)){
		printf("括号匹配成功!");
	}
	else printf("括号匹配失败!"); 
	return 0;
}

运行演示
栈在括号匹配中的应用_第1张图片

你可能感兴趣的:(数据结构—考研代码实现,数据结构,c语言)