括号匹配问题 求思路,求代码注释。
#include<stdio.h>#include<stdlib.h>
#define STSIZE 100
typedef struct stack{
char *data;
int top;
}STack;
void inistack(STack &s)
{
s.data = (char *)malloc(STSIZE * sizeof(char));
s.top = 0;
}
int push(STack &s, char x)
{
if (s.top < STSIZE )
{
s.data[s.top++] = x;
return 1;
}
return 0;
}
char pop(STack &s)
{
if (s.top)
return s.data[--s.top];
return '#';
}
char gettop(STack s)
{
if(s.top)
return s.data[s.top-1];
return '#';
}
int is_right(STack &st, char *exp)
{
int i=0;
char ch;
while (exp[i] != '\0')
{
switch (exp[i]){
case '(': push(st, exp[i]); break;
case '[': push(st, exp[i]); break;
case '{': push(st, exp[i]); break;
case ')': ch = pop(st); if (ch != '(') return 0; break;
case ']': ch = pop(st); if (ch != '[') return 0; break;
case '}': ch = pop(st); if (ch != '{') return 0; break;
}
i++;
}
if (st.top) return 0;
return 1;
}
main()
{
char exp[100], ch;
int i=0;
STack st;
inistack(st);
gets(exp);
if (is_right(st, exp))
printf("括号匹配正确!\n");
else
printf("括号错误!\n");
}
初学数据结构,很多东西不懂,希望得到诸位帮助,告诉 我思路和这些代码的详细注释。