- •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 Индекс
390 Глава 9. Хеш-таблицы, карты и списки пропуска
обратитесь к тому же самому входу ведра. Это осуществлено в Кодовом Фрагменте 9.11.
/* HashMap K, V, H:: */ // iterators равны?
bool Iterator:: оператор == (константа Iterator& p) константа
если (ba! = p.ba скобка! = p.bkt) ложное возвращение;
еще, если (скобка == ba-> конец ()) верное возвращение;
еще возвратитесь (ent == p.ent);
// // //
ba или скобка отличаются? оба в конце? еще используйте вход, чтобы решить
Кодовый Фрагмент 9.11: операторы Iterator для тестирования равенства и приращения.
Затем, давайте полагать, что Iterator увеличивают оператора, показанного в Кодовом Frag-ment 9.12. Цель состоит в том, чтобы продвинуть iterator к следующему действительному доступу. Typ-ically, это включает продвижение к следующему входу в пределах текущего ведра. Но, если мы падаем с конца этого ведра, мы должны продвинуться к первому элементу следующего непустого ведра. Чтобы сделать это, мы сначала продвигаемся к следующему входу ведра, применяя оператора приращения STL на вход iterator ent. Мы тогда используем полезность func-tion endOfBkt, чтобы определить, прибыли ли мы в конце этого ведра. Если так, мы ищем следующее непустое ведро. Чтобы сделать это, мы неоднократно увеличиваем скобку и проверяем, упали ли мы с конца множества ведра. Если так, это - конец карты, и мы сделаны. Иначе, мы проверяем, пусто ли ведро. Когда мы сначала находим непустое ведро, мы перемещаем ent в первый вход этого ведра.
/* HashMap K, V, H:: */ //продвижение к следующему входу
Iterator& Iterator:: оператор ++ ()
++ ent;
//
следующий вход в ведре
если (endOfBkt (*this))
++ скобка;
в то время как (скобка! = ba-> конец () && скобка-> пустой ())
++ скобка;
// // //
в конце ведра? пойдите в следующее ведро, находят непустое ведро
если (скобка == ba-> конец ()) возвращаются *это;
ent = скобка-> начинаются ();
//конец множества ведра?//первый непустой вход
возвратитесь *это;
//возвратитесь сам
Кодовый Фрагмент 9.12: операторы Iterator для тестирования равенства и приращения.
Определения функций члена HashMap
Прежде, чем обсудить главные функции класса HashMap, давайте представим функции, начинаются и заканчиваются. Они даны в Кодовом Фрагменте 9.13. Конец функции - более простые из двух. Это включает создание iterator, компонент ведра которого - конец множества ведра. Мы не потрудились определять стоимость для части входа
9.2. Хеш-таблицы 391
iterator. Причина состоит в том что наш iterator тест на равенство (показана в Кодовом Фрагменте 9.11)
не потрудился сравнивать вход iterator ценности, если ведро iterators в конце множества ведра.
/* HashMap K, V, H:: */ //iterator, чтобы закончиться
Конец Iterator ()
возвращают Iterator (B, B.end ());/* HashMap K, V, H:: */ //iterator к фронту
Iterator начинаются ()
если (пустой ()) возвращают конец ();
Скобка BItor = B.begin ();
в то время как (скобка-> пустой ()) ++ скобка;
возвратите Iterator (B, скобка, скобка-> начинаются ());
// // // //
emtpty - возвратитесь конец еще ищут вход, находят, что непустое ведро возвращается сначала из ведра
Кодовый Фрагмент 9.13: функции HashMap, возвращаясь iterators к началу и концу карты.
Функция начинается, показанный в нижней части Кодового Фрагмента 9.13, более сложно, так как мы должны искать непустое ведро. Мы сначала проверяем, пуста ли карта. Если так, мы просто возвращаем конец карты. Иначе, начиная в начале множества ведра, мы ищем непустое ведро. (Мы знаем, что преуспеем в том, чтобы найти тот.), Как только мы находим его, мы возвращаем iterator, который указывает на первый вход этого ведра.
Теперь, когда мы представили iterator-связанные функции, мы готовы представить функции для класса HashMap. Мы начинаем с конструктора и sim - ple контейнерные функции. Конструктору дают способность множества ведра и создает вектор этого размера. Участник n отслеживает число записей. Они даны в Кодовом Фрагменте 9.14.
/* HashMap K, V, H:: */
HashMap (международная способность): n (0), B (способность)/* HashMap K, V, H:: */
международный размер () константавозвращает n;/* HashMap K, V, H:: */
пустые bool () константавозвращают размер () == 0;
//конструктор
//число записей
//действительно ли карта пуста?
Кодовый Фрагмент 9.14: конструктор и стандарт функционируют для HashMap.
Затем, мы представляем функции, связанные с нахождением ключей в верхней части Кодекса
Фрагмент 9.15. Большая часть работы сделана сервисным искателем функции. Это сначала применяет функцию мешанины, связанную с данным компаратором мешанины к ключу k. Это преобразовывает это в индекс во множество ведра, беря модуль стоимости мешанины
392
Глава 9. Хеш-таблицы, Карты и Списки Пропуска размер множества. Чтобы получить iterator к желаемому ведру, мы добавляем этот индекс к началу iterator множества ведра. (Мы используем факт, упомянутый в Разделе 6.1.4, что векторы STL обеспечивают произвольный доступ iterator, таким образом, дополнение позволено.) Позволяют скобке быть iterator к этому ведру. Мы создаем iterator p, который инициализирован к началу этого ведра. Мы тогда выполняем поиск входа, ключ которого соответствует k или пока мы не падаем с конца списка. В любом случае мы возвращаем окончательное значение iterator как результат поиска.
/* HashMap K, V, H:: */ //находят полезность
Искатель Iterator (константа K& k)
интервал i = мешанина (k) % B.size ();
Скобка BItor = B.begin () + я;
Iterator p (B, скобка, скобка-> начинается ());
в то время как (! endOfBkt (p) && (*p) .key ()! = k)
nextEntry (p);
// // // //
g и имеет h i ndex i ith запуск ведра ith поиска ведра k
возвратите p; //возвращают заключительное положение
/* HashMap K, V, H:: */ //находят ключ
Iterator находят (константа K& k)
Iterator p = искатель (k);
если (endOfBkt (p))
возвратите конец ();
еще
возвратите p;
//ищите k//, не находил его?//возвращение заканчивают iterator
//возвратите его положение
Кодовый Фрагмент 9.15: функции HashMap имели отношение к нахождению ключей.
Общественную членскую находку функции показывают в нижней части Кодового Frag-ment 9.15. Это призывает полезность искателя. Если компонент входа в конце ведра, мы знаем, что ключ не был найден, таким образом, мы возвращаем специальный конец iterator () до конца карты. (Таким образом все неудачные поиски приводят к тому же самому результату.) Это показывают в Кодовом Фрагменте 9.15.
Полезность вставки, вставку, показывают в верхней части Кодового Фрагмента 9.16. Этой полезности дают желаемое положение, в котором можно вставить новый вход. Это призывает функцию вставки списка STL, чтобы выполнить вставку. Это также увеличивает количество числа записей в карте и возвращает iterator к вставленному положению.
Общественная функция вставки, помещенная, сначала применяет искателя, чтобы определить, существует ли какой-либо вход с этим ключом в карте. Мы сначала определяем, не было ли это найдено, проверив ли iterator, как упали конец ведра. Если так, мы вставляем его в конце этого ведра. Иначе, мы изменяем существующую ценность этого входа. Позже, в Разделе 9.5.2, мы представляем альтернативный подход, который вставляет новый вход, даже когда двойной ключ обнаружен.
9.2. Хеш-таблицы 393
/* HashMap K, V, H:: */ //вставляют полезность
Вставка Iterator (константа Iterator& p, константа Entry& e)
EItor ins = p.bkt-> вставка (p.ent, e);
n + +;
возвратите Iterator (B, p.bkt, ins);
//вставка прежде p//еще один вход//возвращает это положение
/* HashMap K, V, H:: */ //вставляют/заменяют (v, k)
Итерэтор поместил (константа K& k, константа V& v)
Iterator p = искатель (k);
//поиск k
если (endOfBkt (p))
возвратите вставку (p, Вход (k, v));
еще
//k не найденный?//вставляют в конце ведра
//найденный им?
p.ent-> setValue (v);
возвратите p;
//замените стоимость v//, возвращают это положение
Кодовый Фрагмент 9.16: функции HashMap для вставки и замены записей.
Функции удаления также довольно прямые и даны в Кодовом Фрагменте 9.17. Главная полезность - резинка функции, которая удаляет вход в данном положении, призывая список STL, стирают функцию. Это также декременты число записей. Находящаяся в iterator функция удаления просто призывает резинку. Основанная на ключе функция удаления сначала применяет полезность искателя, чтобы искать ключ. Если не найдено, то есть, если возвращенное положение - конец ведра, исключение брошено. Иначе, полезность резинки призвана, чтобы удалить вход.
/* HashMap K, V, H:: */
недействительная резинка (константа Iterator& p)
p.bkt-> стирают (p.ent); n-;
/* HashMap K, V, H:: */
пустота стирает (константа Iterator& p)
резинка (p);/* HashMap K, V, H:: */
//удалите полезность
//удалите вход из ведра//один меньше входа
//удалите вход в p
//удалите вход с ключом k
пустота стирает (константа K& k)
Iterator p = искатель (k);
если (endOfBkt (p))
/ / fi без обозначения даты k//не найденный?
бросьте NonexistentElement («Стирают несуществующих»);//.. .error
резинка (p); //удаляют его
Кодовый Фрагмент 9.17: функции HashMap, связанного с удалением записей.
