다음은 연결리스트 스택의 삭제 알고리즘이다. ㉠ ~ ㉢에 들어갈 문장으로 옳게 짝지어진 것은? (단, 스택이 비었을 때 top은 NULL이고, top은 스택의 최상위 노드를 가리키는 포인터이다. 또한 스택이 빈 상태에서 맨 처음 삽입되는 노드의 next는 NULL이다)
typedef struct node{
int key;
struct node *next;
} NODE; // 스택의 노드 구조
NODE *top = NULL; // 스택의 최상위 노드를 가리키는 포인터
int pop(void) {
NODE *temp;
int ret;
if ( ㉠ ) {
printf("\n Stack underflow.");
return -1;
}
ret = top→key;
㉡ ;
㉢ ;
free(temp);
return ret;
} ㉠ | ㉡ | ㉢ | |
① | top→next == NULL | temp = top→next | top = top→next |
② | top→next == NULL | temp = top | top→next = temp→next |
③ | top == NULL | temp = top | top = top→next |
④ | top == NULL | temp = top→next | top→next = temp→next |
- ①①
- ②②
- ③③
- ④④
선지를 골라 바로 채점해 보세요.
정답 ③
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)