学习笔记------数据结构(C语言版)栈应用 括号匹配

//main.cpp

#include "predefined.h"
#include "SqStack.h"
void PrintElem(SElemType *p)
{
	printf("%d ",*p);
}

int main()
{
	char *s="{[(1+3)*(6+7)]/(9+8)}";
	printf("★判断表达式%s括号是否匹配...\n",s);
	Bracket_test(s)?printf("▲表达式括号匹配!\n"):printf("▲表达式括号不匹配!\n");
}


Status Bracket_test(char *s)
{
	int i=0;
	SqStack S;
	InitStack(&S);
	SElemType m;
	while(s[i])
	{
		switch (s[i])
		{
		case '(':
		case '[':
		case '{':Push(&S,s[i]);break;
		case ')':
		case ']':
		case '}':if(StackEmpty(S))return ERROR;
			     Pop(&S,&m);
				 if(!Matching(m,s[i])) return ERROR;
				 break;

		}
		i++;
	}
		if(!StackEmpty(S))return ERROR;
		return OK;
}

Status Matching(char a,char b)
{
	switch(a)
	{
	case'(':if(b!=')') return ERROR;break;
	case'[':if(b!=']') return ERROR;break;
	case'{':if(b!='}') return ERROR;break;	
	}
	return OK;
}


你可能感兴趣的:(学习笔记---数据结构)