I,O分别表示入栈和出栈操作,栈的初态和终态均为空。
#include<stdio.h>
int main()
{
int a[] = { 'I','O','I','O','I','O','I','O'};
int sz = sizeof(a) / sizeof(a[0]);
int i = 0;
int j = 0;
int k = 0;
while (a[i] != '\0')
{
switch (a[i]) {
case 'I':j++; break;
case 'O':k++;
if (k > j)
{
printf("非法的\n");
exit(0);
}
}
i++;
}
if (j != k)
printf("非法\n");
else
printf("合法\n");
return 0;
}