1. 스택 자료 구조
스택은 후입선출(Last In First Out, LIFO) 방식을 따르는 자료구조이다.
마지막에 들어온 요소가 가장 먼저 나가는 특징을 가진다.
1-1. 스택의 구조
* 구조
- 후입선출(Last In First Out) 방식을 따르는 선형 구조이다.
- 데이터는 한쪽 끝에서만 추가되거나 제거된다.
* 접근 방식
- 오직 스택의 맨 위(Top)에서만 데이터에 접근이 가능하다.
- 삽입(push)와 삭제(pop) 작업은 스택의 top에서만 이루어진다.
* 용도
- 재귀 알고리즘, 함수 호출, 역순 문자열 생성, 후위 표현식 계산 등에 사용된다.
- 데이터의 순서를 일시적을 뒤집거나, 가장 최근의 요소에 빠르게 접근할 필요가 있을 때 유용하다.
* 구현
- 배열이나 연결 리스트를 사용하여 구현할 수 있다.
- 연결 리스트를 사용한 구현은 유연성이 더 높으며, 스택의 크기 제한이 없다.
1-2. 연결 리스트와 스택
- 동적 구조 : 두 자료 구조 모두 실행 시간에 크기가 변경될 수 있다. - 기본 연산 : 삽입, 삭제, 조회 등 기본적인 자료 구조 연산을 지원한다.연결 리스트는 유연하고 다양한 위치에서의 삽입 및 삭제가 가능한 반면, 스택은 매우 제한적인 접근 방식(LIFO)을 가지고 있다.스택은 연결 리스트를 사용하여 구현될 수 있으며, 연결 리스트의 appendleft와 popleft 메서드가 각각 스택의 push와 pop 연산에 해당한다.
1-3. Stack 클래스 구현
- 노드 클래스(Node)
*
스택에 저장될 각 요소를 표현하는 노드 클래스이다.
* 각 노드는 데이터(data)와 다음 노드를 가리키는 포인터(next)를 가지고 있다.
- 스택 클래스(Stack)
* 스택의 기본적인 동작을 구현한다.
* push : 새로운 데이터를 스택의 맨 위에 추가한다.
* pop : 스택의 맨 위 데이터를 제거하고 반환한다.
* peek : 스택의 맨 위 데이터를 확인하지만 제거하지는 않는다.
* is_empty : 스택이 비어있는지 여부를 반환한다.
- 메인 함수
* 스택에 문자 'A', 'B', 'C'를 차례로 추가하고 각 단계에서 peek을 사용하여 맨 위의 데이터를 확인한다.
* is_empty 함수를 사용하여 스택이 비어 있지 않은 동안 pop를 호출하여 스택에서 데이터를 제거하고 출력한다.
* 마지막으로 peek을 호출하여 스택이 비었을 때 상태를 확인한다.
'웹 서비스 개발(FB,BE,SERVER,DB) > Algorithm' 카테고리의 다른 글
6. 해시 테이블(Hash Table) (0) | 2024.01.15 |
---|---|
5. 큐(Queue) (0) | 2024.01.15 |
3. 연결 리스트(Linked List) (0) | 2024.01.15 |
2. 배열(Array)과 리스트(List) (0) | 2024.01.14 |
1. 자료구조와 알고리즘 (0) | 2024.01.14 |
댓글