다음은 연결 스택(linked stack)에서 새로운 노드를 삽입하는 C 언어 프로그램이다. ㉠, ㉡에 들어갈 내용으로 옳게 짝지은 것은? (단, top은 스택의 첫 번째 노드를 가리키는 포인터이며, top이 NULL이면 공백 스택이다)
typedef struct node {
int key;
struct node *link;
} StackNode;
StackNode *top = NULL;
void push(int data) {
StackNode *tmp = (struct node*)malloc(sizeof(StackNode));
if (tmp == NULL) {
printf("Memory allocation is failed.\n");
exit(1);
}
tmp→key = data;
if (top == NULL) {
tmp→link = NULL;
top = tmp;
}
else {
㉠;
㉡;
}
} ㉠ ㉡
- ①tmp→link = top top = tmp
- ②top→link = tmp tmp = top→link
- ③top→link = tmp tmp = top
- ④tmp→link = top top = tmp→link
선지를 골라 바로 채점해 보세요.
정답 ①
출처: 인사혁신처 공개 기출(공공데이터포털, 이용허락 제한 없음)