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"는 출력되지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.