学習ノート------データ構造(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      ...
",s); Bracket_test(s)?printf("▲ !
"):printf("▲ !
"); } 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; }