다음 C 코드에서 foobar 함수가 하는 일을 올바르게 설명한 것은?
struct list_t {
int data;
struct list_t *link;
};
typedef struct list_t *list_p;
void foobar(list_p *ptr, struct list_t *node)
{
if (*ptr == NULL) {
*ptr = node;
node->link = node;
} else {
node->link = (*ptr)->link;
(*ptr)->link = node;
}
}- ①한 줄로 연결된 단순 연결 리스트에서 *ptr이 가리키는 노드의 뒤에 node를 삽입, 리스트가 비어 있으면 node로 새로 리스트를 만든다.
- ②한 줄로 연결된 이중 연결 리스트에서 *ptr이 가리키는 노드의 뒤에 node를 삽입, 리스트가 비어 있으면 node로 새로 리스트를 만든다.
- ③원형으로 연결된 단순 연결 리스트에서 *ptr이 가리키는 노드의 뒤에 node를 삽입, 리스트가 비어 있으면 node로 새로 리스트를 만든다.
- ④원형으로 연결된 이중 연결 리스트에서 *ptr이 가리키는 노드의 뒤에 node를 삽입, 리스트가 비어 있으면 node로 새로 리스트를 만든다.
선지를 골라 바로 채점해 보세요.
정답 ③
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)