목차
추천의 글 ... 3
베타 리뷰어 글 ... 4
저자 서문 ... 7
학습 로드맵 ... 10
part 1 자료구조
   1장 리스트
      01. 링크드 리스트 ... 25
        배열 유감 ... 25
        링크드 리스트를 소개합니다 ... 25
        C 언어로 표현하는 링크드 리스트의 노드 ... 27
        링크드 리스트의 주요 연산 ... 27
        링크드 리스트의 예제 프로그램 ... 38
        링크드 리스트의 뒷이야기 ... 43
      02. 더블 링크드 리스트 ... 44
        더블 링크드 리스트를 소개합니다 ... 44
        더블 링크드 리스트의 주요 연산 ... 45
        더블 링크드 리스트 예제 프로그램 ... 50
      03. 환형 링크드 리스트 ... 56
        리스트 세계의 우로보로스, 환형 링크드 리스트 ... 56
        환형 더블 링크드 리스트의 주요 연산 ... 57
        환형 더블 링크드 리스트 예제 프로그램 ... 59
      이것만은 알고 갑시다 ... 66
   2장 스택
      01. 스택 주차장의 추억 ... 69
      02. 스택의 주요 기능: 삽입과 제거 ... 70
      03. 배열로 구현하는 스택 ... 71
        스택과 스택의 노드 표현하기 ... 72
        스택의 기본 연산 구현하기 ... 73
        배열로 구현하는 스택 예제 프로그램 ... 75
      04. 링크드 리스트로 구현하는 스택 ... 79
        스택과 스택의 노드 표현하기 ... 79
        스택의 기본 연산 구현하기 ... 81
        링크드 리스트로 구현하는 스택 예제 프로그램 ... 84
      05. 스택의 응용: 사칙 연산 계산기 ... 89
        수식의 중위 표기법과 후위 표기법 ... 90
        후위 표기식을 계산하는 알고리즘 ... 91
        사칙 연산 계산기 예제 프로그램 ... 97
      이것만은 알고 갑시다 ... 104
   3장 큐
      01. 큐 ... 107
      02. 큐의 주요 기능: 삽입과 제거 ... 108
      03. 끝은 새로운 시작이다: 순환 큐 ... 109
        순환 큐를 소개합니다 ... 109
        비어 있거나 또는 가득 차 있거나 ... 112
        순환 큐 구현하기 ... 113
        순환 큐 예제 프로그램 ... 117
      04. 링크드 큐 ... 121
        순환 큐 VS 링크드 큐 ... 121
        링크드 큐 구현하기 ... 122
        링크드 큐 예제 프로그램 ... 125
      이것만은 알고 갑시다 ... 129
   4장 트리
      01. 트리 기초 다지기 ... 133
        트리를 소개합니다 ... 133
        트리를 열어봅시다 ... 134
        트리 표현하기 ... 137
        노드 표현하기 ... 138
        트리 구현하기 ... 140
      02. 이진 트리 ... 148
        누구냐, 넌! ... 148
        이진 트리의 여러 형태 ... 148
        이진 트리의 순회 ... 150
        이진 트리 구현하기 ... 154
      03. 수식 트리 ... 162
        수식 트리를 소개합니다 ... 162
        수식 트리의 구축 ... 163
        수식 트리의 구현 ... 166
      04. 분리 집합 ... 173
        분리 집합: 교집합을 갖지 않는 집합들 ... 173
        분리 집합의 표현 ... 175
        분리 집합의 연산 ... 176
        분리 집합 예제 프로그램 ... 178
      이것만은 알고 갑시다 ... 181
part 2 알고리즘
   5장 정렬
      01. 콩쥐의 해결책: 정렬 알고리즘 ... 187
      02. 버블 정렬 ... 189
        버블 정렬을 소개합니다 ... 189
        버블 정렬은 얼마나 빠를까요? ... 191
        거품을 내는 코드를 작성해 봅시다 ... 195
      03. 삽입 정렬 ... 197
        삽입 정렬은 무엇인가요? ... 197
        삽입 정렬은 버블 정렬보다 빠를까요? ... 199
        삽입 정렬 예제 ... 200
      04. 퀵 정렬 ... 202
        빠른 정렬, 퀵 정렬 ... 202
        퀵 정렬이 퀵 정렬을 호출합니다 ... 205
        퀵 정렬은 빠릅니다! ... 209
      05. C 표준 라이브러리의 퀵 정렬 함수 ... 213
        qsort() 함수를 소개합니다 ... 213
        qsort() 함수를 테스트해 봅시다 ... 214
        콩쥐가 되어 보세요 ... 216
      이것만은 알고 갑시다 ... 217
   6장 탐색
      01. 데이터를 찾아서 ... 222
      02. 순차 탐색 ... 223
        자기 구성 순차 탐색 ... 224
      03. 이진 탐색 ... 229
        탐색 익스프레스 : 이진 탐색 ... 229
        이진 탐색의 성능 측정 ... 230
        이진 탐색의 구현 ... 231
        C 표준 라이브러리의 이진 탐색 함수: bsearch() ... 234
      04. 이진 탐색 트리 ... 236
        이진 탐색을 위한 이진 트리 ... 236
        이진 탐색 트리는 어떻게 생겼을까? ... 237
        이진 탐색 트리의 기본 연산 ... 238
        이진 탐색 트리 예제 프로그램 ... 245
        뒤늦게 생각해보는 이진 탐색 트리의 문제점 ... 250
      05. 레드 블랙 트리 ... 251
        레드 블랙 트리가 균형을 유지하는 비결 ... 252
        레드 블랙 트리의 기본 연산 ... 253
        레드 블랙 트리 예제 프로그램 ... 269
      이것만은 알고 갑시다 ... 282
   7장 우선순위 큐와 힙
      01. 우선순위 큐 ... 286
        우선순위 큐의 삽입 연산 ... 287
        우선순위 큐의 제거 연산 ... 287
        우선순위 큐의 구현 ... 288
      02. 힙 ... 288
        힙에 새 노드 삽입하기 ... 289
        힙의 최소값 삭제 ... 291
        힙의 구현 ... 293
        힙 예제 프로그램 ... 297
      03. 힙을 이용한 우선순위 큐의 구현 ... 302
      이것만은 알고 갑시다 ... 309
   8장 해시 테이블
      01. 해시에 대하여 ... 313
      02. 해시 테이블: 공간을 팔아 시간을 사다 ... 315
      03. 해시 함수 ... 317
        나눗셈법 ... 317
        나눗셈법 예제 프로그램 ... 319
        자릿수 접기 ... 322
        해시 함수의 한계: 충돌 ... 325
      04. 충돌 해결하기 ... 325
        체이닝 ... 325
        개방 주소법 ... 336
      이것만은 알고 갑시다 ... 350
   9장 그래프
      01. 그래프를 소개합니다 ... 354
        오일러의 도구 ... 354
        그래프의 정의 ... 355
      02. 그래프를 어떻게 표현할 것인가? ... 357
        인접 행렬 ... 358
        인접 리스트 ... 360
        인접 행렬 VS 인접 리스트 ... 361
        인접 리스트의 구현 ... 362
        인접 리스트 예제 프로그램 ... 363
      03. 그래프 순회: 그래프를 따라 산책하기 ... 369
        깊이 우선 탐색 ... 369
        너비 우선 탐색 ... 372
        그래프 순회 예제 프로그램 ... 376
      04. 위상 정렬 ... 380
        위상 정렬 예제 프로그램 ... 387
      05. 최소 신장 트리 ... 391
        프림 알고리즘 ... 393
        크루스칼 알고리즘 ... 401
        최소 신장 트리 예제 프로그램 ... 409
      06. 최단 경로 탐색 ... 413
        다익스트라 알고리즘 ... 414
        다익스트라 알고리즘 예제 프로그램 ... 418
      이것만은 알고 갑시다 ... 424
   10장 문자열 검색
      01. 고지식한 검색 ... 428
        고지식하거나 미련하거나 ... 428
        고지식한 검색의 구현 ... 429
      02. 카프-라빈 알고리즘 ... 433
        해시 값을 활용한 문자열 검색 ... 433
        카프-라빈 알고리즘의 구현 ... 436
      03. KMP 알고리즘 ... 440
        접두부, 접미부, 그리고 경계 ... 440
        경계 정보를 미리 계산하기 ... 442
        KMP 알고리즘의 구현 ... 444
      04. 보이어-무어 알고리즘 ... 448
        나쁜 문자 이동 ... 449
        착한 접미부 이동 ... 450
        보이어-무어 알고리즘의 전처리 과정 ... 452
      이것만은 알고 갑시다 ... 461
part 3 알고리즘 설계 기법
   11장 알고리즘 성능 분석
      01. 알고리즘의 성능에 대하여 ... 467
      02. 알고리즘 수행 시간의 분석 ... 469
      03. 점근 표기법 ... 470
        O 표기법 ... 472
        Ω 표기법 ... 474
        Θ 표기법 ... 475
      04. 재귀 알고리즘의 성능 분석 ... 476
        재귀 방정식과 재기 알고리즘 ... 476
        마스터 정리 ... 483
      이것만은 알고 갑시다 ... 486
   12장 분할 정복
      01. 아우스터리츠 전투 ... 489
      02. 분할 정복 알고리즘 ... 490
      03. 분할 정복의 응용 ... 491
        병합 정렬 ... 491
        거듭 제곱 ... 498
        피보나치 수 ... 501
      이것만은 알고 갑시다 ... 509
   13장 동적 계획법
      01. 동적 계획법이란 ... 514
      02. 피보나치 수 구하기 ... 515
        동적 계획법으로 피보나치 수 구하기 ... 515
        동적 계획법으로 설계된 피보나치 수 알고리즘의 구현 ... 517
      03. 최장 공통 부분 순서 ... 519
        최장 공통 부분 순서란 ... 519
        LCS 알고리즘 ... 520
        동적 계획법으로 설계하는 LCS 알고리즘 ... 523
      이것만은 알고 갑시다 ... 531
   14장 탐욕 알고리즘
      01. 탐욕 알고리즘에 대하여 ... 535
      02. 편의점 점원의 거스름돈 줄이기 ... 537
        거스름돈 계산 프로그램 ... 538
        거스름돈을 만드는 탐욕 알고리즘은 항상 최적일까? ... 540
      03. 크루스칼의 최소 신장 트리 알고리즘 다시 보기 ... 542
      04. 다익스트라의 최단 경로 알고리즘 다시 보기 ... 545
      05. 허프만 코딩을 이용한 데이터 압축 ... 548
        고정 길이 코드와 접두어 코드 ... 548
        허프만 코딩 ... 550
        허프만 코딩의 구현 ... 557
      이것만은 알고 갑시다 ... 565
   15장 백트래킹
      01. 백트래킹을 소개합니다 ... 570
      02. 미로 탈출로 찾기 ... 574
        트리 대신 재귀 호출로 구현하는 백트래킹 ... 574
        미로 탈출 알고리즘 구현하기 ... 576
      03. 8개의 퀸 ... 585
        8개의 퀸이 만드는 해공간과 백트래킹 ... 587
        8개의퀸 알고리즘 구현하기 ... 590
      이것만은 알고 갑시다 ... 598
찾아보기 ... 599
닫기