다음 C 프로그램의 실행 결과는?
#include <stdio.h>
typedef struct stack {
int data[10]; int top;
} stack;
stack s1, s2;
void push(stack *ss, int i) {
ss->top = ss->top + 1;
ss->data[ss->top] = i;
}
int pop(stack *ss) {
return ss->data[ss->top--];
}
int size(stack *ss) {
return ((ss->top) + 1);
}
void push2(int n) {
push(&s1, n);
}
int pop2() {
if(size(&s2) == 0) {
int s = size(&s1);
for(int i = 0; i < s; i++)
push(&s2, pop(&s1));
}
return pop(&s2);
}
int main(int argc, char **argv) {
s1.top = s2.top = -1;
push2(1); push2(2); push2(3);
printf("%d ", pop2());
printf("%d ", pop2());
push2(4); push2(5);
printf("%d ", pop2());
printf("%d ", pop2());
printf("%d ", pop2());
return 0;
}- ①1 2 3 4 5
- ②2 1 5 4 3
- ③3 2 5 4 1
- ④5 4 3 2 1
선지를 골라 바로 채점해 보세요.
정답 ①
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)