목차 일부
chapter 1 데이터 구조와 데이터 처리 ... 1
1. 데이터와 정보 ... 2
2. 데이터 처리를 위한 데이터 구조 ... 2
3. 데이터의 표현 ... 4
3.1 데이터의 표현 ... 4
4. 알고리즘 ... 10
4.1 알고리즘의 정의 ... 10
4.2 시간 및 공간 복잡도와 그 상호 관계 ...
더보기
목차 전체
chapter 1 데이터 구조와 데이터 처리 ... 1
1. 데이터와 정보 ... 2
2. 데이터 처리를 위한 데이터 구조 ... 2
3. 데이터의 표현 ... 4
3.1 데이터의 표현 ... 4
4. 알고리즘 ... 10
4.1 알고리즘의 정의 ... 10
4.2 시간 및 공간 복잡도와 그 상호 관계 ... 11
연습문제 ... 15
chapter 2 기본 데이터 구조 ... 17
1. 순서 리스트 ... 18
2. 배열 ... 19
2.1 배열의 정의 ... 20
2.2 배열 요소의 위치 계산 ... 21
3. 행렬 ... 33
3.1 전치 행렬 ... 33
3.2 희소 행렬 ... 34
4. 레코드 ... 37
4.1 레코드의 개요 ... 38
4.2 C/C++에서의 레코드 처리 ... 39
5. 스트링 ... 43
5.1 스트링의 개요 ... 44
5.2 스트링의 운용 ... 45
5.3 C/C++에서의 스트링 처리 ... 46
연습문제 ... 56
chapter 3 리스트 ... 59
1. 선형 리스트(Linear List) ... 60
1.1 선형 리스트의 삽입과 삭제 연산 ... 61
1.2 선형 리스트의 삽입과 삭제 시 평균 이동횟수 ... 62
2. 링크드 리스트 ... 63
2.1 링크드 리스트의 구조 ... 64
2.2 C/C++에서의 링크드 리스트 처리 ... 66
3. 다중 링크드 리스트 ... 81
3.1 이중 링크드 리스트 ... 81
3.2 환형 링크드 리스트 ... 84
3.3 이중 환형 링크드 리스트 ... 87
연습문제 ... 88
chapter 4 스택, 큐, 데크 ... 89
1. 스택 ... 90
1.1 스택의 정의 ... 90
1.2 스택의 구현 방법 ... 92
1.3 C/C++에서 스택의 이용 ... 93
1.4 스택의 구현 알고리즘 ... 98
2. 큐 ... 108
2.1 큐의 정의 ... 108
2.2 큐의 구현 방법 ... 109
2.3 큐의 구현 알고리즘 ... 110
2.4 큐의 오버플로 처리 ... 115
2.5 큐의 활용 ... 128
2.5 큐의 길이 ... 128
3. 다중 스택과 다중 큐 ... 129
3.1 다중 스택 ... 129
3.2 다중 큐 ... 130
4. 데크 ... 131
4.1 데크의 정의 ... 131
4.2 데크의 구현 ... 132
연습문제 ... 134
chapter 5 데이터 구조와 데이터 처리 ... 136
1. 트리 ... 136
1.1 트리의 정의 ... 137
1.2 용어 ... 138
1.3 트리의 종류 ... 139
1.4 트리의 문제 ... 140
2. 이진 트리 ... 141
2.1 이진 트리의 종류 ... 143
2.2 이진 트리의 생성 방법 ... 147
2.3 이진 탐색 트리 ... 150
3. 트리의 운행 ... 153
3.1 트리의 운행 ... 153
3.2 이진 트리의 운행 ... 155
4. 연산식의 표현 ... 161
5. 스레드 이진 트리 ... 163
연습문제 ... 167
chapter 6 그래프 ... 171
1. 그래프 ... 172
1.1 그래프의 용어 ... 174
1.2 그래프의 종류 ... 175
2. 그래프의 표현 ... 180
2.1 인접 행렬(adjacency matrix) ... 180
2.2 인접 리스트(adjacency list) ... 182
2.3 인접 다중 리스트(adjacency multilist) ... 182
3. 그래프의 운행 ... 184
3.1 깊이 우선 탐색 ... 184
3.2 너비 우선 탐색 ... 189
4. 최단 경로 ... 194
4.1 하나의 출발점에서 모든 종착점 ... 194
4.2 모든 쌍(all-pairs) 최단 경로 문제 ... 197
4.3 이행적 폐쇄 ... 198
5. 최소 스패닝 트리 ... 199
5.1 Prim의 방법 ... 200
5.2 Kruskal 방법 ... 202
연습문제 ... 204
chapter 7 정렬 ... 207
1. 정렬의 개요 ... 208
2. 내부 정렬 ... 211
2.1 삽입 정렬 ... 211
2.2 버블 정렬 ... 215
2.3 셀렉션 정렬 ... 219
2.4 쉘 정렬 ... 222
2.5 퀵 정렬 ... 229
2.6 2-way 병합 정렬 ... 234
2.7 기수 정렬 ... 238
2.8 힙 정렬 ... 245
3. 외부 정렬 ... 254
3.1 밸런스드 병합 정렬(balanced merge sort) ... 254
3.2 다단계 병합 정렬(polyphase merge sort) ... 257
3.3 캐스케이드 병합 정렬(cascade merge sort) ... 260
3.4 오실레이팅 병합 정렬(oscillating merge sort) ... 262
연습문제 ... 265
chapter 8 탐색 ... 267
1. 탐색의 개요 ... 268
1.1 탐색의 정의 ... 268
1.2 평균 탐색장 ... 269
2. 탐색 방법 ... 271
2.1 선형 탐색, 순차 탐색(Linear. Sequential Search) ... 271
2.2 이진 탐색 ... 275
2.3 피보나치 탐색(Fibonacci Search) ... 280
2.4 보간 탐색(Interpolation Search) ... 285
2.5 블록 탐색(Block Search) ... 286
2.6 이진 탐색 트리에 의한 탐색 ... 292
2.7 AVL 트리 ... 298
2.8 B 트리 ... 299
3. 해싱 ... 300
3.1 해싱의 개요 ... 300
3.2 충돌 해결 ... 301
3.3 평균 탐색 길이 ... 303
연습문제 ... 306
chapter 9 기억장치와 파일 처리 ... 309
1. 기억장치 ... 310
1.1 주기억장치 ... 310
1.2 보조기억장치 ... 311
2. 파일 처리 ... 312
2.1 파일의 분류 ... 312
2.2 파일의 편성 ... 316
2.3 C?C++에서의 파일 처리 ... 322
연습문제 ... 343
chapter 10 기억 장소 관리 ... 345
1. 주기억장치 관리 ... 346
1.1 주기억장치 관리 기법 ... 346
1.2 주기억장치 관리상의 문제점 및 해결책 ... 348
1.3 주기억장치에서 프로그램과 데이터의 적재 방법 ... 349
2. 버디 시스템을 이용한 기억장치 관리 ... 352
3. 피보나치 기억 장소 관리 ... 354
4. 기억 장소 관리 최적화 방법 ... 355
연습문제 ... 360
더보기 닫기