스택의 정의
"스택"이란 여러 개의 데이타 항목들이 일정한 순서로 나열된 자료 구조로, 한쪽 끝에서만 새로운 항목을 삽입하거나 기존 항목을 삭제할 수 있도록 고안된 것이다.
스택의 원리
스택은 동전을 넣고 뺄 수 있도록 되어 있는 동전 케이스와 같은 작동 원리를 가지고 있다. 삽입된 동전들은 케이스 내부에 일정한 순서로 저장된다. 먼저 삽입된 동전은 케이스의 가장 아래쪽에 위치하고 가장 최근에 삽입된 동전은 입구에 놓인다.
스택의 성질
스택에 저장된 데이타 항목들 중에 먼저 삽입된 것은 나중에 삭제되고, 나중에 삽입된 것이 먼저 삭제된다. 그래서 스택을 후입 선출 리스트(Last- In-First-Out List)라고 부른다. 선입 선출법을 사용하는 큐와는 상반된 성질을 가진다.
스택의 구조
- 스택은 기저(base)로부터 데이타 항목들을 차례로 쌓아올린 모양을 가진다.
- 삽입과 삭제는 현재 저장된 최상위 항목이 위치한 top 에서만 일어난다.
- top 위치는 "스택 포인터"라는 지시자가 가리킨다.
- 스택 포인터는 스택 기저에서 시작하여 항목이 삽입되면 하나 증가하고, 삭제되면 하나 감소한다.
- 스택에는 한계가 있어서 그 한계를 초과하도록 삽입할 수 없다.
스택에 데이타 항목 삽입 (push)
데이타 항목을
삽입하려면 스택 포인터를 하나만큼 증가시켜 주고 스택의 top 에 데이타 항목을 저장한다. 데이타 항목을 삽입하기 전에 새로운 항목을 저장할 빈 공간이 있는지 검사해야 한다.
full 검사
다음의 그림처럼
스택이 가득차 있으면 새로운 데이타 항목을 삽입할 수 없다. 데이타 항목을 삽입하기 전에 먼저, 스택 포인터가 스택의 한계에 도달해 있는지 검사해야 한다.
스택에서 데이타 항목 삭제 (pop)
데이타 항목을
삭제하려면 스택의 top 에 있는 데이타 항목을 제거하고 스택 포인터를 하나만큼 감소시켜 준다. 데이타 항목을 삭제하기 전에 스택이 비어있는지를 검사해야 한다.
empty 검사
다음의 그림처럼
스택이 비어 있으면, 데이타 항목을 삭제할 수 없다. 데이타
항목을 삭제하기 전에 스택 포인터가 기저에 도달해 있는지를 검사해야 한다.