다음은 이중연결리스트의 맨 앞에 새로운 키 값을 갖는 노드를 삽입하는 알고리즘이다. ㉠ ~ ㉢에 들어갈 문장으로 옳게 짝지어진 것은? (단, head는 이중연결리스트의 맨 앞 노드를 가리키는 포인터이며, 리스트는 초기에 비어있다고 가정한다)
struct node { // 이중연결리스트의 노드 구조
int key;
struct node *prev; // 이전 노드를 가리키는 포인터
struct node *next; // 다음 노드를 가리키는 포인터
};
struct node *head = NULL; // 맨 처음 노드를 가리키는 포인터
void insertDoubleList(int ikey)
{
struct node *temp;
temp = (struct node *) malloc(sizeof(struct node));
if (temp == NULL) {
printf("Memory allocation is failed. \n");
exit(1);
}
temp→key = ikey;
㉠ ;
if (head == NULL) // 리스트에 노드가 없는 경우
㉡ ;
else { // 리스트에 노드가 있는 경우
㉢ ;
head→prev = temp;
}
head = temp;
} ㉠ | ㉡ | ㉢ | |
① | temp→prev = NULL | temp→prev = head | temp→prev = head |
② | temp→prev = NULL | temp→next = NULL | temp→next = head |
③ | head→next = temp | temp→next = NULL | temp→prev = head |
④ | head→next = temp | temp→prev = head | temp→next = head |
- ①①
- ②②
- ③③
- ④④
선지를 골라 바로 채점해 보세요.
정답 ②
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)