Lab 9 1 Stack typedef int element typedef
Lab 9 -1: 스택 - 배열이용 � 배열을 이용한 Stack typedef int element; typedef struct { element stack[MAX_STACK_SIZE]; int top; } Stack. Type; � Stack 함수 ◦ ◦ void init(Stack. Type *s) int is_empty(Stack. Type *s) int is_full(Stack. Type *s) void push(Stack. Type *s, element item) �s->stack[++(s->top)] = item; ◦ element pop(Stack. Type *s) �return s->stack[(s->top)--]; ◦ element peek(Stack. Type *s) �return s->stack[s->top] ◦ void display(Stack. Type *s) 구현할 것 한성대학교 컴퓨터공학과 프로그래밍랩 – 9 스택 2
Lab 9 -2: 스택응용 - 괄호검사 � 배열 stack을 이용 typedef char element; // typedef struct { element stack[MAX_STACK_SIZE]; int top; } Stack. Type; � 함수 구현 ◦ int check_matching(char *in) ◦ main () while (1) gets(buf) if (check_matching(buf)==TRUE) printf("괄호검사성공n"); else printf("괄호검사실패n"); 한성대학교 컴퓨터공학과 int check_matching(char *in) { Stack. Type s; char ch, open_ch; int i, n = strlen(in); init(&s); for (i = 0; i < n; i++) { ch = in[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; // stack이 비어 있으면 성공 } 프로그래밍랩 – 9 스택 3
Lab 9 -3 -2: 스택응용 - 수식의계산 � � 중위식 입력하면 후위식 변환 후 계산 까지 이어지도록 void infix_to_postfix(char infix[], char postfix[]) ◦ 후위식 결과를 문자열에 저장하려면 ? ? ◦ printf() 문장 대신 postfix[] 에 저장하여 return main() { char buf[100], postfix[100]; printf("(2+3)*4+9 ==> "); infix_to_postfix("(2+3)*4+9", postfix); printf("%s = %dn", postfix, eval(postfix)); while (1) { printf("중위식입력 : "); gets(buf); infix_to_postfix(buf, posrtfix); printf("후위식 : %s = %d", postfix, eval(postfix)); } } 한성대학교 컴퓨터공학과 프로그래밍랩 – 9 스택 5
- Slides: 7