모두CBT

23-2다음은 배열로 구현한 스택을 사용하는 C 프로그램이다. 실행 결… | 2023년 정보처리기사실기 2회차 기출문제 상세 페이지

19

23-2

다음은 배열로 구현한 스택을 사용하는 C 프로그램이다. 실행 결과를 적으시오.

#include <stdio.h>
#define CAP 8

int box[CAP];
int top = -1;

int empty(void) {
    return top == -1;
}

void put(int v) {
    if (top == CAP - 1) {
        printf("Over");
        return;
    }
    box[++top] = v;
}

int get(void) {
    return box[top--];
}

int main(void) {
    put(7);
    put(3);
    put(8);
    printf("%d", get());
    while (!empty()) {
        put(1);
        printf("%d", get());
        printf("%d", get());
        put(9);
        put(4);
        printf("%d", get());
        printf("%d", get());
        printf("%d", get());
    }
    return 0;
}
해설

813497


[해설]

스택은 마지막에 넣은 값이 먼저 나오는 후입선출(LIFO) 구조다. get()은 top 위치의 값을 돌려주고 top을 1 줄인다.

  • put 7, 3, 8 → [7, 3, 8], get → 8
  • 반복 진입(스택 [7, 3]): put 1 → get 1, get 3 → [7]
  • put 9, 4 → [7, 9, 4] → get 4, 9, 7 → 스택이 빔

반복 한 번 만에 스택이 비어 while이 끝나므로, 찍힌 값을 이으면 813497이다. 용량 8을 넘는 일이 없어 "Over"는 출력되지 않는다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.