데이터 구조 재 미 있 는 문제 - 괄호 일치
10889 단어 데이터 구조
1: #include <stdio.h> 2: #include <stdlib.h> 3: #define STACK_INIT_SIZE 20 4: #define STACKINCREMENT 10 5: 6: typedef char ElemType; /* char ElemType*/ 7: 8: typedef struct{ /* */ 9: ElemType *base; 10: ElemType *top; 11: int stacksize; 12: }sqStack; 13: 14: 15: void initStack(sqStack *s) 16: { 17: /* , s->base*/ 18: s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); 19: if(!s->base) exit(0); /* */ 20: s->top = s->base; /* , */ 21: s->stacksize = STACK_INIT_SIZE; /* STACK_INIT_SIZE */ 22: } 23: 24: void Push(sqStack *s, ElemType e){ /* */ 25: if(s->top - s->base >= s->stacksize){ 26: /* , */ 27: s->base = (ElemType *)realloc(s->base, (s->stacksize + 28: STACKINCREMENT)*sizeof(ElemType)); 29: if(!s->base) exit(0); /* */ 30: s->top = s->base + s->stacksize; 31: s->stacksize = s->stacksize + STACKINCREMENT; /* */ 32: } 33: *(s->top) = e; /* */ 34: s->top++; 35: } 36: 37: void Pop(sqStack *s , ElemType *e){ /* */ 38: if(s->top == s->base) return; /* */ 39: *e = *--(s->top); /* */ 40: } 41: 42: int StackLen(sqStack s){ /* s */ 43: return (s.top - s.base) ; 44: } 45: 46: 47: int match(char e,char c){ 48: if(e=='(' && c==')')return 1; 49: if(e=='[' && c==']')return 1; 50: return 0; 51: } 52: 53: int main() 54: { 55: sqStack s; 56: char c , e ; 57: initStack( &s ) ; /* */ 58: scanf("%c",&c); /* */ 59: while(c!='#'){ /*'#' */ 60: if(!StackLen(s)) 61: Push(&s,c); /* , , */ 62: else 63: { 64: Pop(&s,&e); /* */ 65: if(!match(e,c)){ /* , */ 66: Push(&s,e); /* */ 67: Push(&s,c); /* */ 68: } 69: } 70: scanf("%c",&c); /* */ 71: } 72: if(!StackLen(s)) printf("The brackets are matched
"); /* s , */ 73: else printf("The brackets are not matched
"); /* s , */ 74: return 0; 75: 76: } 77:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.