检查()、[]、{}是否配对。
/* stack_balance_symbol */#include "stack.h"
#include <stdio.h>
#include <stdlib.h>
#include <error.h>int
main(int argc, char **argv)
{
FILE *fp;
stack s;
char c;
char ctmp; if(argc != 2)
{
printf("usage: a.out <filename>\n");
exit(0);
} fp = fopen(argv[1], "r");
if(fp == NULL)
{
perror("fopen");
exit(1);
} s = create_stack( 10 );
c = fgetc(fp);
while(c != EOF)
{
switch(c)
{
case '(':
push(c, s);
break;
case ')':
ctmp = top_and_pop( s );
if(ctmp != '(')
printf("not match!\n");
break;
case '{':
push(c, s);
break;
case '}':
ctmp = top_and_pop( s );
if(ctmp != '{')
printf("not match!\n");
break;
case '[':
push(c, s);
break;
case ']':
ctmp = top_and_pop( s );
if(ctmp != '[')
printf("not match!\n");
break;
}
c = fgetc(fp);
} if(is_empty( s ))
printf("match\n");
else
printf("not match\n");
}
上面的程序中所使用的stack.h参考http://www.cnblogs.com/nufangrensheng/p/3610520.html。(注:stack.h中使用的是
typedef char element_type;
)
测试结果: