핵심 개념과 동작 원리로 이해하는 자료 구조 첫걸음!
유명한 자료 구조 책들이 여러 권 있지만, 방대한 양에 읽다 지치기 쉽다. 그래서 자료 구조를 좀 더 쉽게 공부하기 위해 단순히 자료 구조의 구현에 집중하기보다는 “인덱스는 어떻게 작동하기에 데이터베이스의 성능을 좋게 만들 수 있을까?”라는 한 가지 질문을 던져 놓고 이 질문의 답을 찾아가는 과정을 담았다. 모든 자료 구조를 다루진 않지만 이 과정에서 다룰 수 있는 여러 가지 자료 구조를 배우며, 개념을 확장해 나가는 방식으로 설명한다. 빅오, 재귀 함수에서부터 다양한 그래프 알고리즘까지 그림 184개로 필수 자료 구조의 핵심 개념을 익힌 후 파이썬으로 구현한 코드도 직접 확인하고 실행해 볼 수 있다. 또한, 실제 자료 구조를 어디에 어떻게 활용할 수 있는지도 엿볼 수 있다. 이 책이 자료 구조를 학습하려는 분들에게 시작점이자 다른 유명한 자료 구조 책을 볼 수 있게 해주는 징검다리 역할을 해줄 것이다.
1장 재귀 함수
1.1 재귀 함수: 자신을 호출하는 신기한 함수
__1.1.1 재귀 함수로 팩토리얼 구현하기
__1.1.2 스택 프레임으로 재귀 함수 이해하기
__1.1.3 순열을 재귀 함수로 구현하기: 재귀 트리 사용하기
2장 성능 분석
2.1 자료 구조 성능 이야기: 빅오
__2.1.1 알고리즘 성능 분석
__2.1.2 성능을 비교하는 방법: 빅오
__2.1.3 방심은 금물!: 빅오의 함정
2.2 추상 데이터 타입이란
3장 배열: 변수가 한곳에 모여 있으면 빠르다!
3.1 동적 배열이란
3.2 지역성의 원리와 캐시
3.3 인덱싱: 데이터에 빠르게 접근한다!
3.4 동적 배열에서 데이터의 삽입과 삭제 1
3.5 동적 배열에서 데이터의 삽입과 삭제 2
4장 연결 리스트: 삽입과 삭제를 빠르게 할 수 없을까?
4.1 연결 리스트 이해하기
4.2 동적 배열과 연결 리스트
4.3 더미 이중 연결 리스트
5장 스택과 큐, 그리고 덱
5.1 스택: 데이터를 차곡차곡 쌓는다
__5.1.1 스택 구현: 동적 배열을 이용하여 구현하기
5.2 큐: 데이터로 줄 세우기
__5.2.1 큐 구현 1: 동적 배열을 단순하게 사용해서 구현하기
__5.2.2 큐 구현 2: 원형 큐로 구현하기
5.3 덱: 스택으로도 큐로도 사용할 수 있는 덱
6장 그래프: 관련 있는 데이터 연결하기
6.1 그래프 용어 정리
6.2 그래프를 표현하는 두 가지 방법: 도시와 도시를 이어 보자
6.3 그래프의 모든 노드 방문: 모든 도시를 여행해 보자
__6.3.1 너비 우선 탐색: 인근 도시부터 여행하기
__6.3.2 깊이 우선 탐색: 한 방향으로 쭉 따라 여행하기
7장 트리: 정말 쓸 데가 많은 자료 구조
7.1 트리 용어 정리
7.2 이진 트리의 순회: 모든 노드 방문하기
__7.2.1 전위 순회
__7.2.2 중위 순회
__7.2.3 후위 순회
__7.2.4 레벨 순서 순회
8장 다양한 트리 1: 이진 탐색 트리
8.1 이진 탐색 알고리즘
8.2 딕셔너리의 내부 구현
8.3 이진 탐색 트리
8.4 이진 탐색 트리의 구현
8.5 이진 탐색 트리의 단점
9장 다양한 트리 2: 레드 블랙 트리
9.1 어떻게 균형을 맞출 것인가?
9.2 레드 블랙 트리
9.3 레드 블랙 트리의 구현
10장 다양한 트리 3: B 트리
10.1 메모리 계층 구조
10.2 데이터베이스에 데이터 삽입, 탐색, 삭제해 보기
10.3 B 트리
10.4 B 트리에 키 삽입·삭제하기
10.5 B+ 트리
10.6 B 트리로 인덱스 만들기
11장 다양한 트리 4: 힙과 우선순위 큐
11.1 힙
11.2 우선순위 큐
12장 다양한 그래프 알고리즘 1: 위상 정렬
12.1 위상 정렬
13장 다양한 그래프 알고리즘 2: 최소 비용 신장 트리
13.1 탐욕 알고리즘
13.2 크루스칼 알고리즘
__13.2.1 그래프의 표현
__13.2.2 분리 집합: 사이클이 형성되는지 어떻게 확인하지?
__13.2.3 크루스칼 알고리즘 구현
13.3 프림 알고리즘
__13.3.1 가중치가 가장 작은 에지를 찾는 방법
__13.3.2 프림 알고리즘 구현
14장 다양한 그래프 알고리즘 3: 최단 경로
14.1 데이크스트라 알고리즘
14.2 BFS와 프림 알고리즘, 그리고 데이크스트라 알고리즘
15장 자료 구조가 적용된 실제 사례
15.1 생산자 -소비자 패턴: 큐
15.2 자바스크립트 엔진: 스택과 큐
ㆍ지은이 양태환
독자의견 남기기