
- •X Предисловие
- •XII Предисловие
- •XVI Содержание
- •XVIII Содержание
- •XX Содержание
- •XXII Содержание
- •1.2. Выражения 17
- •1.2. Выражения 19
- •1.2. Выражения 21
- •1.3. Поток контроля 23
- •1.3. Поток контроля 25
- •1.4. Функции 27
- •1.4. Функции 29
- •1.4. Функции 31
- •1.5. Классы 33
- •1.5. Классы 35
- •1.5. Классы 37
- •1.5. Классы 39
- •1.5. Классы 41
- •1.5. Классы 43
- •1.5. Классы 45
- •1.8. Упражнения 61
- •1.8. Упражнения 63
- •66 Глава 2. Ориентированный на объект дизайн
- •2.1. Цели, принципы и образцы 67
- •68 Глава 2. Ориентированный на объект дизайн
- •2.1. Цели, принципы и образцы 69
- •70 Глава 2. Ориентированный на объект дизайн
- •2.2. Наследование и полиморфизм 71
- •Глава 2. Ориентированный на объект дизайн
- •2.2. Наследование и полиморфизм 73
- •Глава 2. Ориентированный на объект дизайн
- •2.2. Наследование и полиморфизм 75
- •2.2. Наследование и полиморфизм
- •Глава 2. Ориентированный на объект дизайн
- •2.2. Наследование и полиморфизм 79
- •Глава 2. Ориентированный на объект дизайн
- •2.2. Наследование и полиморфизм 81
- •82 Глава 2. Ориентированный на объект дизайн
- •2.2. Наследование и полиморфизм 83
- •Глава 2. Ориентированный на объект дизайн
- •2.2. Наследование и полиморфизм 85
- •2.2. Наследование и полиморфизм 87
- •Глава 2. Ориентированный на объект Дизайн определен как определение типа и коллекция членских функций для этого типа с аргументами в пользу каждой функции, являющейся указанных типов.
- •2.2. Наследование и полиморфизм 89
- •90 Глава 2. Ориентированный на объект дизайн
- •2.3. Шаблоны 91
- •2.4. Исключения 93
- •94 Глава 2. Ориентированный на объект дизайн
- •2.4. Исключения 95
- •2.4. Исключения 97
- •98 Глава 2. Ориентированный на объект дизайн
- •Раздел 2.2.3, чтобы найти 7-ю ценность прогрессии Фибоначчи, которая начинается с 3 и 4 как ее первые две ценности.
- •2.5. Упражнения 99
- •Глава 2. Ориентированный на объект дизайн
- •2.5. Упражнения 101
- •104 Глава 3. Множества, связанные списки и рекурсия
- •3.1. Используя множества 105
- •3.1. Используя множества 107
- •108 Глава 3. Множества, связанные списки и рекурсия
- •3.1. Используя множества 109
- •110 Глава 3. Множества, связанные списки и рекурсия
- •3.1. Используя множества 111
- •112 Глава 3. Множества, связанные списки и рекурсия
- •3.1. Используя множества 113
- •3.1. Используя множества 115
- •Глава 3. Множества, связанные списки и рекурсия
- •3.2. Отдельно связанные списки 117
- •Глава 3. Множества, связанные списки и рекурсия
- •3.2. Отдельно связанные списки 119
- •120 Глава 3. Множества, связанные списки и рекурсия
- •3.2. Отдельно связанные списки 121
- •122 Глава 3. Множества, связанные списки и рекурсия
- •3.3. Вдвойне связанные списки 123
- •124 Глава 3. Множества, связанные списки и рекурсия
- •3.3. Вдвойне связанные списки 125
- •3.3. Вдвойне связанные списки 127
- •Глава 3. Множества, связанные списки и рекурсия
- •3.4. Циркулярные связанные списки и аннулирование списка
- •Глава 3. Множества, связанные списки и рекурсия
- •3.4. Циркулярные связанные списки и аннулирование списка 131
- •Глава 3. Множества, связанные списки и рекурсия
- •3.4. Циркулярные связанные списки и аннулирование списка 133
- •134 Глава 3. Множества, связанные списки и рекурсия
- •3.5. Рекурсия 135
- •136 Глава 3. Множества, связанные списки и рекурсия
- •3.5. Рекурсия 137
- •Глава 3. Множества, связанные списки и рекурсия
- •3.5. Рекурсия 139
- •140 Глава 3. Множества, связанные списки и рекурсия
- •3.5. Рекурсия 141
- •142 Глава 3. Множества, связанные списки и рекурсия
- •3.5. Рекурсия 143
- •144 Глава 3. Множества, связанные списки и рекурсия
- •3.5. Рекурсия 145
- •Раздел 2.2.3, что Числа Фибоначчи рекурсивно определены следующим образом:
- •Глава 3. Множества, связанные списки и рекурсия
- •3.5. Рекурсия 147
- •148 Глава 3. Множества, связанные списки и рекурсия
- •3.6. Упражнения
- •Глава 3. Множества, связанные списки и рекурсия
- •3.6. Упражнения 151
- •Глава 3. Множества, связанные списки и рекурсия
- •Глава 4. Аналитические инструменты
- •4.1. Семь функций, используемых в этой книге 155
- •156 Глава 4. Аналитические инструменты
- •4.1. Семь функций, используемых в этой книге 157
- •Глава 4. Аналитические инструменты
- •4.1. Семь функций, используемых в этой книге 159
- •Глава 4. Аналитическое Суждение Инструментов 4.4 (Правила Образца): Учитывая положительные целые числа a, b, и c, мы имеем:
- •162 Глава 4. Аналитические инструменты
- •4.2. Анализ алгоритмов 163
- •164 Глава 4. Аналитические инструменты
- •166 Глава 4. Аналитические инструменты
- •Глава 4. Аналитические инструменты
- •4.2. Анализ алгоритмов 169
- •170 Глава 4. Аналитические инструменты
- •4.2. Анализ алгоритмов
- •172 Глава 4. Аналитические инструменты
- •4.2. Анализ алгоритмов 173
- •174 Глава 4. Аналитические инструменты
- •4.2. Анализ алгоритмов 175
- •176 Глава 4. Аналитические инструменты
- •4.2. Анализ алгоритмов 177
- •178 Глава 4. Аналитические инструменты
- •4.2. Анализ алгоритмов 179
- •180 Глава 4. Аналитические инструменты
- •4.3. Простые методы оправдания 181
- •182 Глава 4. Аналитические инструменты
- •4.3. Простые методы оправдания 183
- •184 Глава 4. Аналитические инструменты
- •4.4. Упражнения
- •186 Глава 4. Аналитические инструменты
- •4.4. Упражнения 187
- •Глава 4. Аналитические инструменты
- •4.4. Упражнения 189
- •Глава 4. Аналитические инструменты
- •4.4. Упражнения 191
- •192 Глава 4. Аналитические инструменты
- •194 Глава 5. Стеки, очереди и Deques
- •5.1. Стеки 195
- •196 Глава 5. Стеки, очереди и Deques
- •5.1. Стеки 197
- •Глава 5. Стеки, очереди и Deques
- •5.1. Стеки 199
- •Глава 5. Стеки, очереди и Deques
- •5.1. Стеки 201
- •Глава 5. Стеки, очереди и Deques
- •5.1. Стеки 203
- •204 Глава 5. Стеки, очереди и Deques
- •5.1. Стеки 205
- •Глава 5. Стеки, очереди и Deques
- •5.1. Стеки 207
- •5.2. Очереди
- •5.2. Очереди 211
- •Глава 5. Стеки, очереди и Deques
- •5.2. Очереди 213
- •Глава 5. Стеки, Очереди и Deques как фронт очереди и фронт круглого списка как задняя часть очереди?)
- •5.2. Очереди
- •Глава 5. Стеки, очереди и Deques
- •5.3. Симметричные очереди 217
- •218 Глава 5. Стеки, очереди и Deques
- •5.3. Симметричные очереди 219
- •220 Глава 5. Стеки, очереди и Deques
- •5.3. Симметричные очереди 221
- •Глава 5. Стеки, очереди и Deques
- •5.4. Упражнения
- •Глава 5. Стеки, очереди и Deques
- •5.4. Упражнения
- •Глава 5. Стеки, очереди и Deques
- •228 Глава 6. Список и Iterator adTs
- •6.1. Векторы 229
- •Глава 6. Список и Iterator adTs элемент, чей индекс I списка в индексе I во множестве a. (См. Рисунок 6.1.)
- •6.1. Векторы 231
- •232 Глава 6. Список и Iterator adTs
- •6.1. Векторы 233
- •Глава 6. Список и Iterator adTs
- •6.1. Векторы 235
- •236 Глава 6. Список и Iterator adTs
- •6.1. Векторы 237
- •238 Глава 6. Список и Iterator adTs
- •6.2. Списки 239
- •6.2. Списки 241
- •6.2. Списки
- •Глава 6. Список и Iterator adTs
- •6.2. Списки
- •246 Глава 6. Список и Iterator adTs
- •6.2. Списки
- •Глава 6. Список и Iterator adTs
- •6.2. Списки
- •250 Глава 6. Список и Iterator adTs
- •6.2. Списки
- •252 Глава 6. Список и Iterator adTs
- •6.2. Списки
- •6.3. Последовательности 255
- •6.3. Последовательности 257
- •Глава 6. Список и Iterator adTs
- •6.4. Тематическое исследование: вид пузыря на последовательности 259
- •Глава 6. Список и Iterator adTs
- •6.4. Тематическое исследование: вид пузыря на последовательности 261
- •262 Глава 6. Список и Iterator adTs
- •6.5. Упражнения 263
- •Глава 6. Список и Iterator adTs
- •6.5. Упражнения 265
- •268 Глава 7. Деревья
- •7.1. Общие деревья 269
- •270 Глава 7. Деревья
- •7.1. Общие деревья 271
- •272 Глава 7. Деревья
- •7.1. Общие деревья 273
- •274 Глава 7. Деревья
- •7.2. Алгоритмы пересечения дерева 275
- •276 Глава 7. Деревья
- •7.2. Алгоритмы пересечения дерева 277
- •278 Глава 7. Деревья
- •7.2. Алгоритмы пересечения дерева 279
- •Глава 7. Деревья
- •7.2. Алгоритмы пересечения дерева 281
- •282 Глава 7. Деревья
- •7.2. Алгоритмы пересечения дерева 283
- •284 Глава 7. Деревья
- •7.3. Двоичные деревья 285
- •7.3. Двоичные деревья 287
- •288 Глава 7. Деревья
- •7.3. Двоичные деревья 289
- •Глава 7. Деревья
- •7.3. Двоичные деревья 291
- •292 Глава 7. Деревья
- •7.3. Двоичные деревья 293
- •Глава 7. Деревья
- •7.3. Двоичные деревья
- •Глава 7. Деревья
- •7.3. Двоичные деревья
- •298 Глава 7. Деревья
- •7.3. Двоичные деревья 299
- •300 Глава 7. Деревья
- •7.3. Двоичные деревья 301
- •302 Глава 7. Деревья
- •7.3. Двоичные деревья 303
- •7.3. Двоичные деревья 305
- •306 Глава 7. Деревья
- •7.3. Двоичные деревья 307
- •Глава 7. Деревья
- •7.3. Двоичные деревья 309
- •310 Глава 7. Деревья
- •7.4. Упражнения 311
- •Глава 7. Деревья
- •7.4. Упражнения 313
- •Глава 7. Деревья
- •7.4. Упражнения
- •Глава 7. Деревья c-7.24 Позволяют t быть деревом с n узлами. Определите самого низкого общего предка (lca)
- •7.4. Упражнения 317
- •Глава 7. Деревья p-7.9 разрезание floorplan являются разложением прямоугольника с горизонтальным и
- •7.4. Упражнения 319
- •320 Глава 7. Деревья
- •Глава 8. Кучи и приоритетные очереди
- •8.1. Приоритетный тип данных резюме очереди 323
- •324 Глава 8. Кучи и приоритетные очереди
- •8.1. Приоритетный тип данных резюме очереди 325
- •Глава 8. Кучи и приоритетные очереди
- •8.1. Приоритетный тип данных резюме очереди
- •8.1. Приоритетный тип данных резюме очереди 329
- •Глава 8. Кучи и приоритетные очереди
- •8.2. Осуществление приоритетной очереди со списком 331
- •Глава 8. Кучи и приоритетные очереди
- •8.2. Осуществление приоритетной очереди со списком 333
- •Глава 8. Кучи и приоритетные очереди
- •8.2. Осуществление приоритетной очереди со списком 335
- •336 Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 337
- •338 Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 339
- •Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 341
- •Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 343
- •Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 345
- •Глава 8. Кучи и Приоритет Стоят в очереди в t, пока никакое нарушение собственности заказа кучи не происходит. (См. Figures8.7 (e) и (h).)
- •8.3. Кучи 347
- •348 Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 349
- •Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 351
- •Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 353
- •354 Глава 8. Кучи и приоритетные очереди
- •8.3. Кучи 355
- •Глава 8. Кучи и приоритетные очереди
- •8.4. Приспосабливаемые приоритетные очереди 357
- •358 Глава 8. Кучи и приоритетные очереди
- •8.4. Приспосабливаемые приоритетные очереди 359
- •360 Глава 8. Кучи и приоритетные очереди
- •8.5. Упражнения
- •Глава 8. Кучи и приоритетные очереди
- •8.5. Упражнения 363
- •Глава 8. Кучи и Приоритетные Очереди, c-8.10 Описывают последовательность n вставок к куче, которая требуетw (n регистрируют n), время
- •8.5. Упражнения 365
- •368 Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.1. Карты 369
- •Глава 9. Хеш-таблицы, Карты и карта Списков Пропуска. Мы можем перечислить все записи карты m, инициализировав p к m.Begin () и затем неоднократно увеличивая p, пока это не равно m.End ().
- •9.1. Карты
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.1. Карты 373
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •376 Глава 9. Хеш-таблицы, карты и списки пропуска
- •382 Глава 9. Хеш-таблицы, карты и списки пропуска
- •386 Глава 9. Хеш-таблицы, карты и списки пропуска
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •390 Глава 9. Хеш-таблицы, карты и списки пропуска
- •394 Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.3. Заказанные карты 395
- •9.3. Заказанные карты 397
- •9.3. Заказанные карты 399
- •400 Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.3. Заказанные карты 401
- •402 Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.4. Пропустите списки 403
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.4. Пропустите списки 405
- •406 Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.4. Пропустите списки 407
- •408 Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.4. Пропустите списки 409
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.5. Словари 411
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.5. Словари 413
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.5. Словари 415
- •Глава 9. Хеш-таблицы, Карты и Списки Пропуска (Вспоминают, что местоположение () теперь возвращает целое число.) Этот подход бежал бы быстро, если бы вход e был сохранен около конца t.
- •9.6. Упражнения
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •9.6. Упражнения 419
- •Глава 9. Хеш-таблицы, карты и списки пропуска
- •424 Глава 10. Деревья поиска
- •10.1. Деревья двоичного поиска 425
- •426 Глава 10. Деревья поиска
- •10.1. Деревья двоичного поиска 427
- •428 Глава 10. Деревья поиска
- •10.1. Деревья двоичного поиска 429
- •430 Глава 10. Деревья поиска
- •10.1. Деревья двоичного поиска 431
- •10.1. Деревья двоичного поиска 433
- •10.1. Деревья двоичного поиска 435
- •Глава 10. Деревья поиска
- •10.1. Деревья двоичного поиска 437
- •438 Глава 10. Деревья поиска
- •10.2. Деревья avl 439
- •440 Глава 10. Деревья поиска
- •10.2. Деревья avl 441
- •442 Глава 10. Деревья поиска
- •10.2. Деревья avl 443
- •444 Глава 10. Деревья поиска
- •10.2. Деревья avl 445
- •446 Глава 10. Деревья поиска
- •10.2. Деревья avl 447
- •Глава 10. Деревья поиска
- •10.2. Деревья avl 449
- •450 Глава 10. Деревья поиска
- •10.3. Косые деревья 451
- •452 Глава 10. Деревья поиска
- •10.3. Косые деревья 453
- •454 Глава 10. Деревья поиска
- •10.3. Косые деревья 455
- •456 Глава 10. Деревья поиска
- •10.3. Косые деревья 457
- •10.3. Косые деревья 459
- •Глава 10. Деревья поиска
- •10.4. (2,4) Деревья 461
- •462 Глава 10. Деревья поиска
- •10.4. (2,4) Деревья 463
- •Глава 10. Деревья поиска
- •10.4. (2,4) Деревья 465
- •466 Глава 10. Деревья поиска
- •10.4. (2,4) Деревья 467
- •468 Глава 10. Деревья поиска
- •10.4. (2,4) Деревья 469
- •470 Глава 10. Деревья поиска
- •10.4. (2,4) Деревья 471
- •472 Глава 10. Деревья поиска
- •10.5. Красно-черные деревья 473
- •Глава 10. Деревья поиска
- •10.5. Красно-черные деревья 475
- •Глава 10. Случай Деревьев поиска 1: Родной брат w V Темнокожий. (См. Рисунок 10.29.) в этом случае, двойное
- •10.5. Красно-черные деревья 477
- •478 Глава 10. Деревья поиска
- •10.5. Красно-черные деревья 479
- •Глава 10. Деревья поиска
- •10.5. Красно-черные деревья 481
- •Глава 10. Случай Деревьев поиска 2: Родной брат y r Темнокожий, и Оба Ребенка y Темнокожие. (См. Фигу -
- •10.5. Красно-черные деревья 483
- •Глава 10. Случай Деревьев поиска 3: Родной брат y r Красный. (См. Рисунок 10.36.) в этом случае мы выступаем
- •10.5. Красно-черные деревья 485
- •486 Глава 10. Деревья поиска
- •10.5. Красно-черные деревья 487
- •488 Глава 10. Деревья поиска
- •10.5. Красно-черные деревья 489
- •490 Глава 10. Деревья поиска
- •10.5. Красно-черные деревья 491
- •492 Глава 10. Деревья поиска
- •10.6. Упражнения
- •494 Глава 10. Деревья поиска
- •10.6. Упражнения 495
- •Глава 10. Деревья поиска
- •500 Глава 11. Сортировка, наборы и выбор
- •11.1. Вид слияния 501
- •502 Глава 11. Сортировка, наборы и выбор
- •11.1. Вид слияния 503
- •504 Глава 11. Сортировка, наборы и выбор
- •11.1. Вид слияния 505
- •506 Глава 11. Сортировка, наборы и выбор
- •11.1. Вид слияния 507
- •508 Глава 11. Сортировка, наборы и выбор
- •11.1. Вид слияния 509
- •Глава 11. Сортировка, наборы и выбор
- •11.1. Вид слияния 511
- •512 Глава 11. Сортировка, наборы и выбор
- •11.2. Быстрый вид 513
- •514 Глава 11. Сортировка, наборы и выбор
- •11.2. Быстрый вид 515
- •516 Глава 11. Сортировка, наборы и выбор
- •11.2. Быстрый вид 517
- •518 Глава 11. Сортировка, наборы и выбор
- •11.2. Быстрый вид 519
- •520 Глава 11. Сортировка, наборы и выбор
- •11.2. Быстрый вид 521
- •Глава 11. Сортировка, наборы и выбор
- •11.2. Быстрый вид 523
- •Глава 11. Сортировка, наборы и выбор
- •11.2. Быстрый вид 525
- •Глава 11. Сортировка, наборы и выбор
- •11.3. Изучение сортировки алгоритмической линзы 527
- •Глава 11. Сортировка, наборы и выбор
- •11.3. Изучение сортировки алгоритмической линзы 529
- •Глава 11. Сортировка, наборы и выбор
- •11.3. Изучение сортировки алгоритмической линзы 531
- •11.4. Наборы и Структуры Союза/Находить 533
- •Глава 11. Сортировка, наборы и выбор
- •11.4. Наборы и Структуры Союза/Находить 535
- •11.4. Наборы и Структуры Союза/Находить 537
- •538 Глава 11. Сортировка, наборы и выбор
- •11.4. Наборы и Структуры Союза/Находить 539
- •540 Глава 11. Сортировка, наборы и выбор
- •11.4. Наборы и Структуры Союза/Находить 541
- •542 Глава 11. Сортировка, наборы и выбор
- •11.5. Выбор 543
- •544 Глава 11. Сортировка, наборы и выбор
- •11.6. Упражнения
- •Глава 11. Сортировка, Наборы и Выбор Шоу r-11.14, что вероятность, что любой данный входной элемент X принадлежит больше
- •11.6. Упражнения 547
- •11.6. Упражнения 549
- •Глава 12. Последовательности и динамическое программирование
- •12.1. Операции по последовательности 555
- •Глава 12. Последовательности и динамическое программирование
- •12.2. Динамическое программирование 557
- •558 Глава 12. Последовательности и динамическое программирование
- •12.2. Динамическое программирование
- •Глава 12. Последовательности и динамическое программирование
- •12.2. Динамическое программирование 561
- •562 Глава 12. Последовательности и динамическое программирование
- •12.2. Динамическое программирование 563
- •Глава 12. Последовательности и динамическое программирование
- •12.3. Алгоритмы соответствия образца 565
- •566 Глава 12. Последовательности и динамическое программирование
- •12.3. Алгоритмы соответствия образца 567
- •568 Глава 12. Последовательности и динамическое программирование
- •12.3. Алгоритмы соответствия образца 569
- •Глава 12. Последовательности и динамическое программирование
- •12.3. Алгоритмы соответствия образца 571
- •572 Глава 12. Последовательности и динамическое программирование
- •12.3. Алгоритмы соответствия образца 573
- •Глава 12. Последовательности и динамическое программирование
- •12.4. Текстовое сжатие и жадный метод 575
- •576 Глава 12. Последовательности и динамическое программирование
- •12.4. Текстовое сжатие и жадный метод
- •578 Глава 12. Последовательности и динамическое программирование
- •12.5. Попытки 579
- •Глава 12. Последовательности и динамическое программирование
- •12.5. Попытки 581
- •582 Глава 12. Последовательности и динамическое программирование
- •12.5. Попытки 583
- •584 Глава 12. Последовательности и динамическое программирование
- •12.5. Попытки 585
- •586 Глава 12. Последовательности и динамическое программирование
- •12.6. Упражнения
- •Глава 12. Последовательности и динамическое программирование
- •12.6. Упражнения 589
- •Глава 12. Последовательности и Динамическое Программирование c-12.16 Описывают алгоритм для строительства компактного представления a
- •12.6. Упражнения 591
- •Глава 12. Последовательности и Динамическое Программное p-12.10 Орудие поисковая система для страниц небольшого веб-сайта, добавляя
- •594 Глава 13. Алгоритмы графа
- •13.1. Графы 595
- •13.1. Графы 597
- •13.1. Графы 599
- •Глава 13. Алгоритмы графа
- •13.2. Структуры данных для графов
- •602 Глава 13. Алгоритмы графа
- •13.2. Структуры данных для графов 603
- •604 Глава 13. Алгоритмы графа
- •13.2. Структуры данных для графов 605
- •606 Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 607
- •608 Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 609
- •13.3. Пересечения графа 611
- •612 Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 613
- •Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 615
- •Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 617
- •618 Глава 13. Алгоритмы графа
- •13.3. Пересечения графа
- •620 Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 621
- •Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 623
- •624 Глава 13. Алгоритмы графа
- •13.3. Пересечения графа 625
- •626 Глава 13. Алгоритмы графа
- •13.4. Направленные графы 627
- •628 Глава 13. Алгоритмы графа
- •13.4. Направленные графы 629
- •13.4. Направленные графы 631
- •632 Глава 13. Алгоритмы графа
- •13.4. Направленные графы 633
- •Глава 13. Алгоритмы графа
- •13.4. Направленные графы 635
- •636 Глава 13. Алгоритмы графа
- •13.5. Кратчайшие пути 637
- •638 Глава 13. Алгоритмы графа
- •13.5. Кратчайшие пути 639
- •13.5. Кратчайшие пути 641
- •642 Глава 13. Алгоритмы графа
- •13.5. Кратчайшие пути 643
- •644 Глава 13. Алгоритмы графа
- •13.6. Минимальные деревья охвата 645
- •646 Глава 13. Алгоритмы графа
- •13.6. Минимальные деревья охвата 647
- •648 Глава 13. Алгоритмы графа
- •13.6. Минимальные деревья охвата 649
- •650 Глава 13. Алгоритмы графа
- •13.6. Минимальные деревья охвата 651
- •652 Глава 13. Алгоритмы графа
- •13.6. Минимальные деревья охвата 653
- •654 Глава 13. Алгоритмы графа
- •13.7. Упражнения 655
- •Глава 13. Шоу r-13.15 Алгоритмов графа, как изменить псевдокодекс для алгоритма Дейкстры для случая
- •13.7. Упражнения 657
- •Глава 13. Алгоритмы графа
- •13.7. Упражнения 659
- •Глава 13. Сети Graph Algorithms c-13.20 Computer должны избежать единственных пунктов неудачи, то есть, сети
- •13.7. Упражнения 661
- •662 Глава 13. Алгоритмы графа
- •Глава 14. Управление памятью и b-деревья
- •14.1. Управление памятью 667
- •Глава 14. Управление памятью и b-деревья
- •14.1. Управление памятью
- •670 Глава 14. Управление памятью и b-деревья
- •14.1. Управление памятью 671
- •Глава 14. Управление памятью и b-деревья
- •14.2. Внешняя память и кэширование 673
- •674 Глава 14. Управление памятью и b-деревья
- •14.2. Внешняя память и кэширование 675
- •676 Глава 14. Управление памятью и b-деревья
- •14.2. Внешняя память и кэширование 677
- •Глава 14. Управление памятью и b-деревья
- •14.3. Внешний поиск и b-деревья 679
- •680 Глава 14. Управление памятью и b-деревья
- •14.3. Внешний поиск и b-деревья 681
- •682 Глава 14. Управление памятью и b-деревья
- •14.4. Сортировка внешней памяти 683
- •684 Глава 14. Управление памятью и b-деревья
- •14.5. Упражнения
- •Глава 14. Управление памятью и b-деревья
- •Глава 14. Управление памятью и b-деревья
- •692 Приложение a. Полезные математические факты
- •706 Индекс
- •708 Индекс
- •710 Индекс
Эта страница преднамеренно оставила незаполненный
Структуры данных и алгоритмы в C ++
Второй выпуск
Эта страница преднамеренно оставила незаполненный
Структуры данных и алгоритмы в C ++
Второй выпуск
Майкл Т. Гудрич
Факультет информатики
Калифорнийский университет, Ирвин
Роберто Тамассиа
Факультет информатики
Университет Брауна
Дэвид М. Мунт
Факультет информатики
Университет Мэриленда
John Wiley & Sons, Inc.
РЕДАКТОР ПРИОБРЕТЕНИЙ ПОМОЩНИК ПЕРЕДОВОЙ СТАТЬИ МЕНЕДЖЕРА ПО МАРКЕТИНГУ РЕДАКТОР СМИ СЕНЬОР ДИЗАЙНЕРСКИЙ МЕНЕДЖЕР ПО СОДЕРЖАНИЮ ПРОИЗВОДСТВЕННЫЙ РЕДАКТОР ФОТОРЕДАКТОР
Бет Лэнг Голуб Крис Руель Элизабет Миллз Томас Кулеса Джим О'Ши Мишлин Фредерик Эми Вейнтроб Шина Голдстайн
Эта книга была установлена в LTEX авторами и напечатана и связана Литографами Malloy. A
Покрытие было напечатано Литографами Malloy. Нанесенное на обложку изображение от Wuta Wuta Tjan-
праздничный, «Страус эму, мечтающий» c состояние художника, 2009 лицензируется исконным Агентством Художников. Дженнифер Ресурс Steele/Art, Нью-Йорк.
Эта книга напечатана на бескислотной бумаге.¥
Фирменное Признание: Ява - торговая марка Sun Microsystems, Inc. UNIX R является зарегистрированной торговой маркой в Соединенных Штатах и других странах, лицензируемых через X/Open Company, Ltd. PowerPoint R - торговая марка Microsoft Corporation. Все другие названия продукта, упомянутые здесь, являются торговыми марками своих соответствующих владельцев.
Copyright c 2011, John Wiley & Sons, Inc. Все права защищены. Никакая часть этой публикации не может быть воспроизведена, сохранена в поисковой системе или передана
в любой форме или каким-либо образом, электронный, механический, фотокопирование, запись, просматривая или иначе, за исключением разрешенного согласно Разделам 107 или 108 1976 Закон об авторском праве Соединенных Штатов, или без предварительного письменного разрешения Издателя или без разрешения через оплату соответствующего сбора за копию Copyright Clearance Center, Inc. 222 Розевуд-Драйв, Дэнверз, Массачусетс 01923, (978) 750-8400, факс (978) 646-8600.
Запросы к Издателю для разрешения должны быть адресованы Разрешениям, Отбывают -
ment, John Wiley & Sons, Inc., 111 речных улиц, Хобокен, Нью-Джерси 07030, (201) 748-6011, факс (201) 748-6008, электронная почта: PERMREQ@WILEY.COM.
К регистрационным журналам или для обслуживания клиентов, пожалуйста, назовите 1 800 ТРЕБОВАНИЕ ВАЙЛИ (225-5945). Основанный в 1807, John Wiley & Sons, Inc. была ценным источником знания и
понимание больше 200 лет, помощь людям во всем мире удовлетворить их потребности и выполняют их стремления. Наша компания построена на основе принципов, которые включают ответственность перед сообществами, которым мы служим и где мы живем и работаем. В 2008 мы проявили Инициативу Корпоративного гражданства, глобальные усилия, чтобы обратиться к экологическим, социальным, экономическим, и этическим трудностям, с которыми мы сталкиваемся в нашем бизнесе. Среди проблем мы обращаемся, углеродное воздействие, бумажные технические требования и приобретение, этическое поведение в пределах нашего бизнеса и среди наших продавцов, и сообщества и благотворительной поддержки. Для получения дополнительной информации, пожалуйста, посетите наш веб-сайт: www.wiley.com/go/citizenship. <www.wiley.com/go/citizenship>
Каталогизация библиотеки Конгресса в данных ISBN 13 978-0-470-38327-8 о публикации
Напечатанный в Соединенных Штатах Америки
10 9 8 7 6 5 4 3 2 1
Карен, Полу, Анне и Джеку
- Майкл Т. Гудрич
Изабель
- Роберто Тамассиа
Жанин
- Дэвид М. Гора
Эта страница преднамеренно оставила незаполненный
Предисловие
Этот второй выпуск Структур данных и Алгоритмов в C ++ разработан к про - смотри введение в структуры данных и алгоритмы, включая их дизайн, analy-сестра и внедрение. С точки зрения учебных планов, основанных на учебном плане IEEE/ACM 2001 Com-puting, эта книга подходит для использования в курсах CS102 (I/O/B версии), CS103 (I/O/B версии), CS111 (Версия), и CS112 (Язычки A/I/O/F/H ver-). Мы обсуждаем его использование для таких курсов более подробно позже в этом предисловии.
Существенные изменения во втором выпуске - следующее:
• Мы добавили больше примеров анализа алгоритма и структуры данных.
• Мы увеличили последовательность с C ++ Standard Template Library (STL).• Мы включили структуры данных STL во многие наши структуры данных.• Мы добавили главу по множествам, связанные списки и iterators (Глава 3).• Мы добавили главу по управлению памятью и B-деревьям (Глава 14).
• Мы увеличили обсуждение алгоритмических методов проектирования, как динамический
программирование и жадный метод.
• Мы упростили и реорганизовали представление кодовых фрагментов.
• Мы ввели STL-стиль iterators в наши контейнерные классы и имеем
представленный C ++ внедрения для этих iterators, даже для комплекса struc-
tures, такой как хеш-таблицы и деревья двоичного поиска.
• Мы изменили наш интерфейс приоритетной очереди, чтобы использовать компаратор STL-стиля
объекты.
• Мы расширили и пересмотрели упражнения, продолжив наш подход деления
их в укрепление, креативность и упражнения проекта.
Эта книга связана со следующими книгами:
• M.T. Гудрич и Р. Тамассия, структуры данных и алгоритмы в Яве,
John Wiley & Sons, Inc. У этой книги есть подобная полная структура к
представьте книгу, но использование Ява как основной язык (с некоторыми скромные, но необходимые педагогические различия, требуемые этим подходом).
• M.T. Гудрич и Р. Тамассия, дизайн алгоритма: фонды, анализ,
и интернет-Примеры, John Wiley & Sons, Inc Это - учебник для больше
продвинутый курс алгоритмов и структур данных, такой как CS210 (T/W/C/S версии) в учебном плане 2001 года IEEE/ACM.
В то время как эта книга сохраняет тот же самый педагогический подход и общую структуру как Структуры данных и Алгоритмы в Яве, кодовые фрагменты были com-pletely перепроектированный. Мы старались полностью использовать C ++ возможности и проектируем кодекс способом, который совместим с современным C ++ использование. В частности если это уместно, мы делаем широкое применение C ++ элементы, которые не являются частью Явы, включая C ++ Standard Template Library (STL), C ++ распределение памяти
vii
viii
Предисловие и освобождение (и связанные проблемы печей для сжигания отходов производства), виртуальные функции, вход и выход потока, оператор, перегружающий и C ++ безопасный кастинг во время выполнения.
Используйте в качестве учебника
Дизайн и анализ эффективных структур данных долго признавались жизненным предметом в вычислении, потому что исследование структур данных - часть ядра каждой университетской информатики и вычислительной техники главная программа, с которой мы знакомы. Как правило, вводные курсы представлены как два - или последовательность с тремя курсами. Элементарные структуры данных часто briefly введены в первом программном курсе или во введении в курс информатики, и это сопровождается более всесторонним введением в структуры данных в курсах, которые следуют после этого. Кроме того, эта последовательность курса, как правило, сопровождается позже в учебном плане более всесторонним исследованием структур данных и алгоритмов. Мы чувствуем, что центральная роль дизайна структуры данных и анализа в учебном плане полностью оправдана, дана важность эффективных структур данных в большинстве систем программного обеспечения, включая Сеть, операционные системы, базы данных, компиляторы и научные системы моделирования.
С появлением ориентированной на объект парадигмы как предпочтительная структура для строительства прочного и повторно используемого программного обеспечения мы попытались взять последовательную объектно-ориентированную точку зрения всюду по этому тексту. Одна из главных идей позади объектно-ориентированного подхода - то, что данные должны быть представлены как заключаемый в капсулу с методами, что доступ и изменяет их. Таким образом, вместо того, чтобы просто рассматривать данные как коллекцию байтов и адресов, мы думаем об объектах данных как о случаях абстрактного типа данных (ADT), который включает репертуар методов для выполнения операций на объектах данных этого типа. Аналогично, ориентированные на объект решения часто организуются, используя общие шаблоны, которые облегчают повторное использование программного обеспечения и надежность. Таким образом мы представляем каждую структуру данных, используя ADTs и их соответствующие внедрения, и мы вводим важные шаблоны как способ организовать те внедрения в классы, методы и объекты.
Для большинства ADTs, представленных в этой книге, мы предоставляем описание общественного интерфейса в C ++. Кроме того, конкретные структуры данных, понимающие ADTs, обсуждены, и мы часто даем бетон C ++ классы, осуществляющие эти интерфейсы. Мы также даем C ++ внедрения фундаментальных алгоритмов, такие как поиск графа и сортировка. Кроме того, в дополнение к обеспечению методов для использования данных struc-tures, чтобы осуществить ADTs, мы также даем примеры приложения структур данных, такие как соответствие HTML-тэга и простая система, чтобы вести плей-лист для системы цифровой звукозаписи. Из-за пространственных ограничений, однако, мы только показываем кодовые фрагменты некоторых внедрений в этой книге и делаем дополнительную пользу исходного кода - способной на сопутствующем веб-сайте.
Предисловие ix
Ресурсы онлайн
Эта книга сопровождается обширным набором ресурсов онлайн, которые могут быть
найденный на следующем веб-сайте:
<www.wiley.com/college/goodrich>
Включенный в этот веб-сайт коллекция образовательных пособий, которые увеличиваются
темы этой книги, и для студентов и для преподавателей. Студенты поощрены использовать этот сайт наряду с книгой, чтобы помочь с упражнениями и увеличением понимают - луг предмета. Преподаватели аналогично могут использовать сайт, чтобы помочь запланировать, организовать и представить их материалы курса. Из-за их добавленной стоимости некоторые из этих ресурсов онлайн защищены паролем.
Для студента
Для всех читателей, и специально для студентов, мы включаем следующие ресурсы:
Весь C ++ исходный код представлен в этой книге.
Раздаточные материалы PDF слайдов Powerpoint (четыре за страницу) обеспечили преподавателям. База данных намеков ко всем упражнениям, внесенным в указатель проблемным числом. Учебник онлайн, который включает решения отобранных упражнений.
Намеки должны иметь значительное применение любому нуждающемуся в небольшой помощи, начинающей на определенных упражнениях, и решения должны помочь любому желающему видеть законченные упражнения. Студенты, которые купили новую копию этой книги, получат доступ пароля к намекам и другим защищенным паролем ресурсам онлайн без всякой дополнительной оплаты. Другие читатели могут купить доступ пароля за номинальный сбор.
Для преподавателя
Для преподавателей, использующих эту книгу, мы включаем следующие дополнительные учебные пособия:
•
••••
Решения более чем 200 из упражнений книги. База данных дополнительных упражнений, подходящих для викторин и экзаменов. Дополнительный C ++ исходный код. Слайды в Powerpoint и PDF (один за страницу) формат. Отдельный, дополнения специальной темы, включая обсуждения выпуклых корпусов, деревьев диапазона и ортогонального пересечения сегмента.
Слайды полностью редактируемые, чтобы позволить преподавателю, использующему эту книгу, полную свободный - dom в настройке его или ее представлений. Все ресурсы онлайн предоставлены без всякой дополнительной оплаты любому преподавателю, принимающему эту книгу для его или ее курса.
X Предисловие
Ресурс для обучения структур данных и алгоритмов
Эта книга содержит много C ++-code и псевдокодовые фрагменты и сотни
упражнения, которые разделены примерно на 40%-е упражнения укрепления, 40% cre-ativity упражнения и 20%, программируя проекты.
Эта книга может использоваться для курса CS2, как описано в ACM 1978 года Научный Учебный план Com-короткой клюшки для гольфа, или в курсах CS102 (I/O/B версии), CS103 (I/O/B ver-язычки), CS111 (Версия), и/или CS112 (Версии A/I/O/F/H), как описано в Учебном плане Вычисления 2001 года IEEE/ACM, с учебными единицами, как обрисовано в общих чертах в Таблице 0.1.
Учебная единица PL1. Обзор языков программирования PL2. Виртуальные машины PL3. Введение в языковой перевод PL4. Декларации и типы PL5. Механизмы абстракции
PL6. Объектно-ориентированное программирование
PF1. Фундаментальное программирование строит PF2. Алгоритмы и решение проблем PF3. Фундаментальные структуры данных
PF4. Рекурсия SE1. Проектирование программного обеспечения
SE2. Используя ПЧЕЛУ
AL1. Основной алгоритмический анализ AL2. Алгоритмические стратегии
AL3. Фундаментальные вычислительные алгоритмы
DS1. Функции, отношения и наборы DS3. Методы доказательства
DS4. Основы подсчета DS5. Графы и деревья DS6. Дискретная вероятность
Соответствующие Материальные Разделы 1.1.2, 1.1.3 Раздела 1.7 Разделов 14.1.1 и 14.1.2 Глав 1 и 2 и 2.2.5 Раздела 2.2.5, 5.1-5.3, 6.1.1, 6.2.1, 6.3, 7. 1, 7. 3. 1, 8. 1, 9. 1, 9. 5, 1 1. 4, d 1 3. 1. 1 Глава 1 и 2 и Разделы 6.2.1, 7. 3. 7, 8. 1. 2, d 1 3. 3. 1 Раздел 3.1, 3.2, 5.1-5.3, 6.1-6.3, 7.1, 7. 3, 8. 1, 8. 3, 9. 1 - 9. 4, 1 Разделов 1.7 и 4.2 Глав 1 и 2 0. 1, d 1 3. 1. 1 Глава 2 Раздела 3.5 и Разделы 6.2.1, 7.3.7, 8. 1. 2, d 1 3. 3. 1 Раздел 2.2.5, 5.1-5.3, 6.1.1, 6.2.1, 6.3, 7. 1, 7. 3. 1, 8. 1, 9. 1, 9. 5, 1 1. 4, d 1 3. 1. 1 Раздел 11.1.1, 11.5.1, 12.2, 12.3.1 Главы 4, и 1 2.4.2 Разделов 8.1.5, 8.2.2, 8.3.5, 9.2, и 9.3.1, и Главы 11, 12, и 13 Разделов 4.1, 8.1 и 11.4 Разделов 4.3, 6.1.3, 7.3.3, 8.3, 10.2-10.5, 1 1.2.1, 1 1.3.1, 1 1.4.3, 1 3.1.1, 1 3.3.1, 1 3. 4, d 1 3. 5 Глав 7, 8, 10 Разделов 2.2.3 и 11.1.5, и 13 Приложений A и Разделы 9.2, 9.4.2, 1 1. 2. 1, d 1 1. 5
Таблица 0.1: Материал для единиц в Учебном плане Вычисления 2001 года IEEE/ACM.
Предисловие xi
Содержание и организация
Главы для этого курса организованы, чтобы обеспечить педагогический путь, который начинается с основ C ++ программирование и ориентированный на объект дизайн. Мы обеспечиваем раннее обсуждение конкретных структур, как множества и связанные списки, чтобы к про - смотри конкретная опора, чтобы положиться, строя другие структуры данных. Мы тогда добавляем основополагающие методы как рекурсия и анализ алгоритма, и, в главной части книги, мы представляем фундаментальные структуры данных и алгоритмы, завершающие обсуждением управления памятью (то есть, архитектурные подкрепления структур данных). Определенно, главы для этой книги - orga-nized следующим образом:
1. C ++ учебник для начинающих 2. Ориентированный на объект дизайн 3. Множества, связанные списки и рекурсия 4. Аналитические инструменты 5. Стеки, очереди и Deques 6. Список и Iterator ADTs 7. Деревья 8. Кучи и приоритетные очереди 9. Хеш-таблицы, карты и списки пропуска
10. Деревья поиска 11. Сортировка, наборы и выбор 12. Последовательности и динамическое программирование 13. Алгоритмы графа 14. Управление памятью и B-деревья
A. Полезные математические факты
Более подробный список содержания этой книги может быть найден в оглавлении.