#include; #include; #include; #define TRUE 1 #define FALSE 0 #define MAX_STACK_SIZE 100 typedef char element; typedef struct{ element stack[MAX_STACK_SIZE]; int top; }StackType; void init(StackType *s){ s->top = -1; } int is_empty(StackType *s){ return (s->top == -1); } int is_full(StackType *s){ return (s->top == (MAX_STACK_SIZE-1)); } void push(StackType *s,element item){ if( is_full(s)){ fprintf(stderr,"스택포화에러\n"); return; } else s->stack[++(s->top)] = item; } element pop(StackType *s){ if( is_empty(s)){ fprintf(stderr,"스택공백에러\n"); exit(1); } else return s->stack[(s->top)]; } int check_matching(char *sentence){ StackType s; char ch, open_ch; int i, n = strlen(sentence); init(&s); for(i=0; i<n; i++){ ch = sentence[i]; switch(ch){ case '(': case'[': case '{': push(&s,ch); break; case ')': case ']': case '}': if(is_empty(&s)) return FALSE; else{ open_ch = pop(&s); if(( open_ch == '(' && ch != ')') || ( open_ch == '[' && ch != ']') || ( open_ch == '{' && ch != '}')){ return FALSE; } break; } } } if(!is_empty(&s)) return FALSE; return TRUE; } int main(void){ if( check_matching("{ A[(i+1)]=0; }") == TRUE) printf("GOOD\n"); else printf("BAD\n"); return 0; }

'개발 > Algorithm' 카테고리의 다른 글

배열 큐  (0) 2014.05.14
후위 표기식 계산  (0) 2014.05.07
스택 연결리스트 메모리 누수  (0) 2014.04.30
스택 연결리스트  (0) 2014.04.30
Syntax Highlighter 적용법  (0) 2014.04.29
블로그 이미지

잉비니

,