책소개
이 책은 C#을 사용하여 자료구조를 보다 쉽게 이해하기 위한 교재입니다. 이 책은 배열, 연결리스트, 큐, 스택, 트리, 힙, 트라이, 해시테이블, 그래프 등 다양한 자료구조들의 기본적인 개념과 그 구현에 대해 자세히 소개하고 있으며, 이들 자료구조를 C# 으로 구현한 다양한 예제들을 제공하고 있습니다. 프로그래밍을 배우는 빠른 길이 프로그램을 자신이 직접 작성해 보는 것이듯, 자료구조를 배우는 지름길은 이를 직접 구현해 보면서 자료를 구조화하는 방법을 이해하는 것입니다. 아무쪼록 이 책을 통해 자료구조의 개념들을 정립하고 실무에서 자유자재로 활용할 수 있는 계기가 되길 바랍니다.
목차
1. 자료구조
1.1 자료구조 (Data Structure)
1.2 추상적 자료형과 자료구조
1.3 자료구조의 종류
2. 배열 (Array)
2.1 배열의 기초개념
2.2 가변 배열 (Jagged Array)
2.3 동적 배열 (Dynamic Array)
2.4 원형 배열 (Circular Array)
2.5 .NET의 배열 클래스
3. 연결 리스트 (Linked List)
3.1 연결 리스트의 기초개념
3.2 단일 연결 리스트
3.3 이중 연결 리스트
3.4 원형 연결 리스트
3.5 원형 단일 연결 리스트의 변형
3.6 .NET의 연결 리스트
4. 큐 (Queue)
4.1 Queue 자료구조
4.2 배열로 구현한 Queue
4.3 연결 리스트로 구현한 Queue
4.4 .NET의 Queue 클래스
5. 스택 (Stack)
5.1 Stack 자료구조
5.2 배열로 구현한 Stack
5.3 연결리스트로 구현한 Stack
5.4 .NET의 Stack 클래스
5.5 스택의 활용 - 수식계산
6. 트리 (Tree)
6.1 Tree 자료구조
6.2 Tree 구조의 표현
N-링크 표현법
왼쪽자식-오른쪽형제노드 표현법
6.3 .NET의 Tree 클래스
7. 이진 트리 (Binary Tree)
7.1 이진 트리 자료구조
7.2 연결리스트를 이용한 이진 트리의 구현
7.3 배열을 이용한 이진 트리의 구현
7.4 이진 트리 순회 (Traversal)
7.5 이진 트리 활용 - 수식트리
7.6 이진 트리의 몇가지 알고리즘
이진 트리 깊이(Depth) 구하기
이진 트리 노드 수 구하기
이진 트리에서 노드 경로 찾기
최소 공통 조상(Lowest Common Ancestor) 구하기
8. 이진 탐색 트리 (Binary Search Tree)
8.1 이진 탐색 트리 자료구조
8.2 이진 탐색 트리 순회 (Traversal)
8.3 이진 탐색 트리의 구현
8.4 이진 탐색 트리의 몇가지 알고리즘
K번째 작은 수 혹은 K번째 큰 수 구하기
중위 순회에서 특정 노드의 다음 노드 찾기
최소 공통 조상(Lowest Common Ancestor) 구하기
이진 트리를 이진 탐색 트리로 변환하기
9. 힙 (Heap)
9.1 Heap 자료구조
9.2 Heap 구현
10. 트라이 (Trie)
10.1 Trie 자료구조
10.2 Trie 구현
10.3 Trie로 Auto Complete 기능 구현
11. 해시테이블 (Hash Table)
11.1 해시테이블 자료구조
11.2 해시 함수
11.3 해시 충돌 (Hash Collision)
Chaining 방식
Open Addressing 방식
11.4 해시테이블 구현
11.5 .NET의 해시테이블
12. 그래프 (Graph)
12.1 그래프(Graph) 자료구조
12.2 그래프의 종류
12.3 그래프의 표현
인접 리스트(Adjacency List)
다양한 인접 리스트 표현
인접 행렬(Adjacency Matrix)
12.4 그래프의 탐색
깊이 우선 탐색
너비 우선 탐색
깊이 우선 탐색(DFS) 구현
너비 우선 탐색(BFS) 구현
12.5 그래프의 몇가지 알고리즘
위상 정렬 (Topological Sort)
최소 신장트리 (Minimum Spanning Tree)
최단경로 (Shortest Path) 알고리즘