다음과 같이 배열을 이용하여 스택 자료구조를 정의하였다. ㉠, ㉡에 들… | [7급 국가직 자료구조론] 21년 1회차 기출문제 상세 페이지
1[7급 국가직 자료구조론] 21년 1회차
다음과 같이 배열을 이용하여 스택 자료구조를 정의하였다. ㉠, ㉡에 들어갈 내용을 바르게 연결한 것은?㉠ ㉡#define MAX 10
int stack[MAX];
int top = -1;
int push(int t) {
if (top >= MAX - 1) {
printf("\n Stack overflow.");
return -1;
}
stack[ ㉠ ] = t;
return t;
}
int pop(void) {
if (top < 0) {
printf("\n Stack underflow.");
return -1;
}
return stack[ ㉡ ];
}
1
++top --top
2
++top top--
3
top++ --top
4
top++ top--
해설
㉠에는 ++top, ㉡에는 top--이 들어간다. top은 -1에서 시작해 항상 맨 위 원소의 위치를 가리킨다.
push는 top을 먼저 1 늘린 뒤 그 자리에 저장하고(전위 증가), pop은 현재 top의 값을 꺼낸 뒤 top을 줄인다(후위 감소).
- ㉠ ++top, ㉡ --top 조합은 pop이 top을 먼저 줄인 뒤 읽어 맨 위가 아닌 바로 아래 원소를 반환한다.
- ㉠ top++, ㉡ top-- 조합은 첫 push가 stack[-1]에 저장해 배열 범위를 벗어난다.
- ㉠ top++, ㉡ --top 조합은 push와 pop 양쪽 모두 접근 위치가 한 칸씩 어긋난다.
오류나 개정된 내용이 보이면 알려주세요