다음과 같이 이중연결리스트를 이용하여 큐 자료구조를 정의하였다. add는 큐의 삽입 알고리즘이고, delete는 큐의 삭제 알고리즘이다. ㉠, ㉡에 들어갈 내용을 바르게 연결한 것은?
typedef struct _dnode {
int key;
struct _dnode *prev, *next;
} dnode;
dnode *head = (dnode*)malloc(sizeof(dnode));
dnode *tail = (dnode*)malloc(sizeof(dnode));
head->prev = head; head->next = tail;
tail->prev = head; tail->next = tail;
int add(int k) {
dnode *t = (dnode*)malloc(sizeof(dnode));
if (t == NULL) {
printf("\n Out of memory.");
return -1;
}
t->key = k;
㉠
tail->prev = t; t->next = tail;
return k;
}
int delete(void) {
dnode *t; int i;
t = head->next;
if (t == tail) {
printf("\n Queue underflow.");
return -1;
}
i = t->key;
㉡
free(t); return i;
}- ①㉠ tail->prev = t; t->prev = tail->prev;㉡ head->next = t->next; t->next->prev = head;
- ②㉠ tail->prev->next = t; t->prev = tail->prev->next;㉡ head->next = t->next; t->next->prev = head;
- ③㉠ tail->prev->next = t; t->prev = tail->prev;㉡ head->next = t->next; t->next = head;
- ④㉠ tail->prev->next = t; t->prev = tail->prev;㉡ head->next = t->next; t->next->prev = head;
선지를 골라 바로 채점해 보세요.
정답 ④
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)