스택 (Stack)
Programming/Data Structure 2013. 1. 6. 21:56 |스택이란 '쟁반 위에 쌓인 접시', '쌓아 올려진 상자더미' 를 연상할 수 있겠다.
즉, 맨 밑에 상자(제일 먼저 들어간 데이터) 를 꺼내려면 위에 얹혀있는 상자들부터 꺼내야 꺼낼 수 있다. 이것이 바로 스택의 특성이다.
스택은 나중에 들어간 것이 먼저 나오는 구조이다 보니 '후입선출방식의 자료구조' 라고도 불리고, 영어로 'LIFO(Last-In, Fisrt-Out) 구조의 자료구조' 라고도 불린다.
실제로 스택은 쉽게 이해할 수 있고 또 숩게 구현할 수 있는 자료구조이다.
스택을 대표하는 넣고, 꺼내고, 들여다 보는 연산을 가리켜 각각 push, pop, peek 라고 한다.
void StackInit(Stack * pstack);
- 스택의 초기화를 진행한다.
- 스택 생성 후 제일 먼저 호출되어야 하는 함수이다.
int IsEmpty(Stack * pstack);
- 스택이 빈 경우 TRUE(1)을 그렇지 않은 경우 FALSE(0)을 반환
void Push(Stack * pstack, Data data);
- 스택에 데이터를 저장한다. 매개변수 data로 전달된 값을 저장
Data Pop(Stack * pstack);
- 마지막에 저장된 요소를 삭제
- 삭제된 데이터는 반환된다.
- 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장되어야 한다.
Data Peek(Stack * pstack);
- 마지막에 저장된 요소를 반환하되 삭제하지 않는다.
- 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장되어야 한다.
실행결과에서 입력된 데이터가 역순으로 출력됨을 보이고 있다.
그리고 이것이 스택의 가장 중요한 특성이다.
'Programming > Data Structure' 카테고리의 다른 글
연결 리스트(원형 연결 리스트)를 이용한 스택의 또 다른 구현 (0) | 2013.01.07 |
---|---|
스택(Stack)을 연결 리스트 기반으로 구현 (0) | 2013.01.06 |
[Dummy Node를 이용] 양방향 연결 리스트 (0) | 2013.01.06 |
양방향 연결 리스트 (0) | 2013.01.06 |
원형 연결리스트에 더미노드 추가 (0) | 2013.01.05 |