为什么我写的顺序栈显示null?
#include <stdio.h>
#define MAXSIZE 20
typedef struct {
char c[MAXSIZE];
int top;
}SeqStack;
int initSeqStack(SeqStack *ss){
ss->top = -1;
return 0;
}
int destorySeqStackA(SeqStack *ss){
while (ss->c[ss->top] != '(') {
ss->c[ss->top] = 'N';
ss->top--;
}
if (ss->c[ss->top] == '{') {
ss->c[ss->top] = 'N';
ss->top--;
}
if (ss->top == -2) {
return 0;
}
return 1;
}
int destorySeqStackB(SeqStack *ss){
while (ss->c[ss->top] != '[') {
ss->c[ss->top] = 'N';
ss->top--;
}
if (ss->c[ss->top] == '[') {
ss->c[ss->top] = 'N';
ss->top--;
}
if (ss->top == -2) {
return 0;
}
return -1;
}
int destorySeqStackC(SeqStack *ss){
while (ss->c[ss->top] != '{') {
ss->c[ss->top] = 'N';
ss->top--;
}
if (ss->c[ss->top] == '{') {
ss->c[ss->top] = 'N';
ss->top--;
}
if (ss->top == -2) {
return 0;
}
return -1;
}
int push(SeqStack *ss, char *str, int i){
ss->top++;
ss->c[ss->top] = str[i];
return 0;
}
int bracketmatch(char *str) {
SeqStack *ss;
initSeqStack(ss);
int i = 0;
while (str[i] != '\0') {
push(ss, str, i);
if (str[i] == ')') {
destorySeqStackA(ss);
}
if (str[i] == ']') {
destorySeqStackB(ss);
}
if (str[i] == '}') {
destorySeqStackC(ss);
}
if (destorySeqStackA(ss) == 0 || destorySeqStackB(ss) == 0 || destorySeqStackC(ss) == 0) {
return 0;
}
}
return 1;
}
int main(int argc, char* argv[])
{
char *str="(1+5)*6 + ({3-5 + [5*9] +4}-6)";
char *str1="(1+5)*6 + ({3-5 + [5*9] +4}-6)}";
if(bracketmatch(str))
printf("str bracket match OK!\n");
else
printf("str bracket match ERROR!\n");
if(bracketmatch(str1))
printf("str1 bracket match OK!\n");
else
printf("str1 bracket match ERROR!\n");
return 0;
}