16. 다음은 C언어의 문제이다. 아래 코드를 보고 알맞는 출력값을 작성하시오.
GPT 풀이
*구조체 node는 정수 p와 다음 노드를 가르키는 포인터 n을 가진다.
*a,b,c 세 노드를 만들고, 중간에 포인터들을 여러 번 재할당한다.
*마지막에 head=&c로 두고, head->p, head->n->p, head->n->n->p를 출력
*포인터 재할당은 \'마지막 대입이 최종 상태\'를 결정한다.
*포인터의 연결 변화 추적
초기
a = { p=1, n=NULL }
b = { p=2, n=NULL }
c = { p=3, n=NULL }
순서대로 대입
1. a.n = &b; → a → b
2. b.n = &c; → b → c
3. c.n = NULL; → c → NULL
4. c.n = &a; → c → a (3번을 덮어씀)
5. a.n = &b; → a → b (이미 그대로, 재확인)
6. b.n = NULL; → b → NULL (2번을 덮어씀)
최종 링크 상태
a.n = &b
b.n = NULL
c.n = &a
즉, c → a → b → NULL 형태가 된다.
head부터 따라가기
head = &c
head->p = c.p = 3
head->n = c.n = &a → head->n->p = a.p = 1
head->n->n = a.n = &b → head->n->n->p = b.p = 2
최종 출력
printf(\"%d %d %d\", head->p, head->n->p, head->n->n->p); → 3 1 2
따라서 최종 출력은
3 1 2(띄어쓰기 있음)
자유 댓글