18. 다음은 C언어의 문제이다. 아래 코드를 보고 알맞는 출력값을 작성하시오.
GPT 풀이
*func(\"BEST\")가 문자 하나씩 노드를 만들어 연결 리스트를 생성
*새 노드는 항상 현재 head 앞에 붙는다.(전단삽입). 그래서 결과 리스트가 역순으로 생성된다.
*main에서는 그 리스트를 순회하며 문자를 출력하고, 방문한 노드를 즉시 free로 해제
단계별 동작
1. func(\"BEST\") 내부
*초기: h = NULL
*s가 가리키는 문자를 하나씩 읽어 노드 생성, 머리 삽입
구체 흐름
*문자 \'B\': n 생성, n->c=\'B\', n->p=h(NULL), h=n → 리스트: B
*문자 \'E\': n->c=\'E\', n->p=h(B), h=n → 리스트: E → B
*문자 \'S\': n->c=\'S\', n->p=h(E), h=n → 리스트: S → E → B
*문자 \'T\': n->c=\'T\', n->p=h(S), h=n → 리스트: T → S → E → B
*문자열 끝(‘\\0’)에서 종료, h 반환
즉, func는 입력 \"BEST\"를 역순 연결 리스트 T → S → E → B로 만들어 반환
2. main에서 출력
n은 T → S → E → B를 가리킨다.
*while 구문
putchar(n->c)로 현재 문자 출력
현재 노드를 임시 포인터 t에 저장 후, n을 다음으로 이동(n = n->p)
t를 free로 해제
출력 순서 : T, S, E, B 순서로 출력
최종적으로 화면에 TSEB가 출력.
자유 댓글