24-3아래 C 프로그램을 실행했을 때 출력 결과를 적으시오.#incl… | 2024년 정보처리기사실기 3회차 기출문제 상세 페이지
11
24-3
아래 C 프로그램을 실행했을 때 출력 결과를 적으시오.
#include <stdio.h>
#include <stddef.h>
struct Box {
int val;
struct Box *nxt;
};
void swapPairs(struct Box *b) {
while (b != NULL && b->nxt != NULL) {
int tmp = b->val;
b->val = b->nxt->val;
b->nxt->val = tmp;
b = b->nxt->nxt;
}
}
int main(void) {
struct Box a = {5, NULL}, b = {8, NULL}, c = {2, NULL}, d = {6, NULL}, e = {9, NULL};
struct Box *cur;
a.nxt = &d;
d.nxt = &b;
b.nxt = &e;
e.nxt = &c;
swapPairs(&a);
for (cur = &a; cur != NULL; cur = cur->nxt)
printf("%d", cur->val);
return 0;
}해설
65982
[해설]
main에서 연결한 순서는 변수 선언 순서가 아니라 nxt 포인터를 따라간 a(5) → d(6) → b(8) → e(9) → c(2)이다.
swapPairs는 이웃한 두 노드의 값을 맞바꾼 뒤 두 칸 건너뛴다.
- 1회: a와 d 교환 → 6, 5
- 2회: b와 e 교환 → 9, 8
- c는 짝이 없어(nxt가 NULL) 그대로 2
출력은 65982다. 노드 연결은 바뀌지 않고 값만 교환된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.