문제
다음 C 코드의 출력 결과는?
C#include <stdio.h> #include <stdlib.h> struct node { int p; struct node* n; }; int main() { struct node a = {1, NULL}; struct node b = {2, NULL}; struct node c = {3, NULL}; a.n = &b; b.n = &c; c.n = NULL; c.n = &a; a.n = &b; b.n = NULL; struct node* head = &c; printf("%d %d %d", head->p, head->n->p, head->n->n->p); return 0; }
① 1 2 3 ② 3 1 2 ③ 3 2 1 ④ 2 1 3
정답
2번
해설
정답: 2. 최종 연결은 c → a → b → NULL이다. head가 c를 가리키므로 출력은 3 1 2이다.
오답 풀이
- 1번: 초기 연결 a→b→c를 기준으로 본 값이다.
- 2번: 최종 연결 상태를 올바르게 추적했다.
- 3번: c 다음을 b로 잘못 본 결과이다.
- 4번: head를 b로 잘못 본 결과이다.
보충 개념 연결 리스트 문제는 마지막으로 대입된 포인터 값이 최종 구조를 결정한다. 같은 포인터 필드에 다시 대입하면 이전 연결은 덮어써진다.