문제 4 · 스택 구현의 두 가지 방법
문제 4 [2점]
스택stack을 구현할 수 있는 두 가지 방법을 연산이 일어나는 위치에 대해 중점적으로 서술(각 1점)하시오.
풀이 및 해설
스택은 후입선출(LIFO) 구조로, 삽입(push)과 삭제(pop)가 **항상 같은 한쪽 끝(top)**에서만 일어납니다. 이를 만족하도록 두 가지로 구현할 수 있습니다.
(1) 배열array 기반 구현
- 원소들을 배열에 담고, 마지막으로 채워진 칸의 인덱스를
top으로 둡니다. push는 배열의 **뒤쪽 끝(top+1위치)**에 원소를 넣고top을 1 증가,pop은 뒤쪽 끝의 원소를 꺼내고top을 1 감소시킵니다.- 연산이 배열의 끝에서만 일어나므로 원소 이동이 없어 각 연산은 (평균)
입니다. 배열이 가득 차면 크기를 늘려야 합니다.
(2) 연결 리스트linked list 기반 구현
- 리스트의 **맨 앞(head)**을 스택의 top으로 삼습니다.
push는 새 노드를 head 앞에 붙이고,pop은 head 노드를 떼어냅니다.- 맨 앞에서만 연산하므로 뒤쪽을 훑을 필요가 없어 각 연산이
이며, 크기 제한이 없습니다.
핵심은 어느 한쪽 끝만 사용해야 LIFO가 성립한다는 점입니다.