学習ノート------データ構造(C言語版)スタックにかっこマッチングを適用
1021 ワード
//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;
}