연산이 정하는 자료형
스택에 A, B, C 순서로 넣으면 먼저 꺼내는 값은 C다. 항목을 추가하는 연산을 push, 맨 위 항목을 꺼내는 연산을 pop이라고 한다. 꺼내지 않고 맨 위의 값만 확인하는 연산도 제공할 수 있다.
스택은 배열이라는 저장 방식과 같은 개념이 아니다. 배열이나 연결 구조로 구현할 수 있으며, 구현 방식이 달라도 외부에서 관찰하는 후입선출 규칙은 유지된다.
중첩된 작업을 되돌아오기
함수가 다른 함수를 호출하면 나중에 원래 위치로 돌아와야 한다. 호출 스택은 복귀 위치와 지역 상태 등을 관리하는 데 쓰인다. 뒤에 시작한 호출이 먼저 끝나는 중첩 관계가 스택과 잘 맞는다.
그래프 탐색에서도 나중에 방문할 위치를 스택에 보관할 수 있다. 방문한 정점을 기록하는 별도의 상태가 없으면 같은 위치를 반복해서 탐색할 수 있으므로, 스택 하나만으로 전체 알고리즘이 완성되는 것은 아니다.
실행 취소와 복구
편집 작업을 순서대로 저장하면 가장 최근 변경부터 되돌릴 수 있다. 다시 실행 기능을 함께 만들 때는 별도의 이력과 현재 위치를 관리하는 등 추가 설계가 필요하다.
실행 취소는 단순히 작업 이름만 저장하는 것으로 충분하지 않을 수 있다. 되돌리는 데 필요한 이전 값이나 역연산 정보가 있어야 한다. 새 작업이 들어왔을 때 기존 복구 이력을 어떻게 처리할지도 정해야 한다.
용량과 경계 조건
빈 스택에서 값을 꺼내려 하거나, 정해진 용량을 넘겨 추가하려 할 때의 동작은 명시해야 한다. 오류를 반환할지 예외를 낼지에 따라 사용하는 코드도 달라진다.
배열을 확장하는 스택은 일부 추가 연산에서 재할당 비용이 들 수 있다. 호출 스택 또한 무제한이 아니므로 재귀 호출이 깊어지면 사용 가능한 공간을 넘을 수 있다.