利用堆栈原理,实现括号匹配,练手程序,没什么实际意义,仅供参考。
#include<stdio.h>
#include<string.h>
void main()
{
int i,len,top=-1;
char stack[200],brace[100];
fgets(brace,100,stdin);
len = strlen(brace)-1; //end char is '\0'
// [ ] ( ) { }
// 91 93 40 41 123 125
// input & output
for(i=0;i<len;i++)
{
if(brace[i]==(char)40||brace[i]==(char)123||brace[i]==(char)91)
{
top++;
stack[top]=brace[i];
printf("input %c\n",brace[i]);
}
else if(brace[i]==(char)41 && stack[top]==(char)40)
{
printf("output )\n");
top--;
}
else if(brace[i]==(char)93 && stack[top]==(char)91)
{
printf("output ]\n");
top--;
}
else if(brace[i]==(char)125 && stack[top]==(char)123)
{
printf("output }\n");
top--;
}
}
if(top==-1)
{
printf("\ntop = %d ;output success!\n",top);
}
}
norton@norton-laptop:~/learning/sample code/algrithm/parenthesis_matching$ ./match.o
(1+3*[4/6])+{4*[5+6]}
input (
input [
output ]
output )
input {
input [
output ]
output }
top = -1 ;output success!