모두CBT

다음 C 코드의 reverseList()는 단순 연결 리스트에 있는 노… | [7급 국가직 자료구조론] 22년 1회차 기출문제 상세 페이지

1[7급 국가직 자료구조론] 22년 1회차
다음 C 코드의 reverseList()는 단순 연결 리스트에 있는 노드의 순서를 역순으로 만드는 함수이다. (가)~(다)에 들어갈 내용을 바르게 연결한 것은?
struct node {
int data;
struct node *link;
} *head;

void reverseList() {
struct node *prevNode, *curNode;
prevNode = head;
curNode = head;
head = NULL;

while ( [ (가) ] ) {
curNode = curNode->link;
prevNode->link = head;
[ (나) ] ;
[ (다) ] ;
}
}
(가)  (나)  (다)
1
curNode != NULL  head = curNode  curNode = prevNode
2
curNode != NULL  head = prevNode  prevNode = curNode
3
head != NULL  head = curNode  curNode = prevNode
4
head != NULL  head = prevNode  prevNode = curNode
해설

(가) curNode != NULL, (나) head = prevNode, (다) prevNode = curNode이다.

prevNode는 이번에 뒤집을 노드, curNode는 다음 노드를 미리 잡아 두는 포인터, head는 이미 뒤집힌 부분의 첫 노드이다. 반복마다 prevNode의 링크를 head로 돌리고, head를 prevNode로, prevNode를 curNode로 한 칸씩 전진시킨다.

a→b→c를 추적하면 head가 a, b, c로 바뀌며 c→b→a가 되고, curNode가 NULL이 된 반복에서 마지막 노드까지 처리된 뒤 종료한다.

  • curNode != NULL, head = curNode, curNode = prevNode: head가 아직 뒤집지 않은 노드를 가리키고 포인터가 앞으로 나아가지 않는다.
  • head != NULL, head = curNode, curNode = prevNode: 시작 시 head가 NULL이라 반복이 실행되지 않는다.
  • head != NULL, head = prevNode, prevNode = curNode: 갱신 순서는 맞지만 시작 시 head가 NULL이라 반복에 들어가지 못한다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 22년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기