Главная » Просмотр файлов » Искусство программирования на Си

Искусство программирования на Си (984073), страница 38

Файл №984073 Искусство программирования на Си (Искусство программирования на Си) 38 страницаИскусство программирования на Си (984073) страница 382015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 38)

значснис йегя нового узла, устанавливает указатели на 145 е1яе Удобное вссго разделить все возможные варианты надва л В В дочерна узлы на ]Ч[ЛЛ., устанавливает значснис полл 146 апяегС(и->Ьа1 == +1); случая: у находится е левом поддерсве узла х (строки и и 141 «ч = х = я->Ипх[1); Ьа] равным О, увеличивает поле соцп! структуры !гее на ! 36 — 166). и у — в правол«полдсреве узла х (строки 166— 140 и->11пх[1] = х->Ипх[0); сдиницу и возврашаст новый узел.

В противном случае она возвращает нулсвой указатель. 195). Эти случаи аналогичны, поэтому рассмотрим код 150 только для первого случая. Код в строках 104 †1 производит поиск и вставю 151 х->1лпк[1] = х; Если коэффициент сбалансированности узла х раасн узла в АНЕ-дсрево. Он аналогичен соответствующему и« ч« х 152 11 (х->Ьа1 == -1) [ ь] или О, то это простой случай: можно просто помес- Орлан и начин данные $٠— ' Часть И Ламл наде< и»пи< Мрен> Глава 12 205 зпт Х = 17 269 и = ар[В]7 333 3рстий случай (строки 241 — 261) несколько сложнсс.

270 хв (ад[В] == О) В процсссс прохожлсния дсрсва при поиске наслслни- 207 вттпст ач1 пода ** , *г. ач1 пода у, гг 271 1< (и->Ьа1 == -1] [ 335 и->1тпк<0< = х->1тпк[1[; ка узла т (строки 247 †2) нсобходимо держать прой- 208 272 и->Ьа1 = 0; 336 х->1зпх[11 = м< 209 авватт(Став .= НОЬЬ); 273 соптзппа лснныс узлы в стскс (строки 250 и 251). И с<цс один мо- 210 274 338 )Г (х->Ьа1 == О) ( мент: поскольку узел х заменяется узлом», нужно 211 ад[01 = О; 275 а1ве 11 (в->Ьа1 == О) ( 339 х->Ьа1 = +1; также в стскс замснить х на » <строки 254 и 255) 212 ар[О) = (встать аи1 асн)е *) астее->тост< 276 в->Ьа1 = 1; 340 Ьтеах; Г[срсходис< к этапу базансировки (строки 265 †3).

213 277 Ьтеа)с; 341 Он осу<цсствлястсв почти так жс, как при вставке узла 214 г = стае->тоот; 278 342 е1ва 215 т (;;) ( от (;;) ( 279 343 и->Ьа1 = х->Ьа1 = 07 в АЧЕ-дсрсво, но иногла приходится выполнять нс- 216 тат 41т; 280 344 сколько ротаций. 217 11 [г == ИОЬЬ] 281 345 е1ве т( (х->Ьа1 == +1] [ [[икл выполнвстсл ло тсх пор, пока в стеке есть узлы. 218 татвтп 0; 282 х = в->11пк[ 1 1; 346 В начачс каждого цикза» присваивастся верхний узел 283 авнатт(х 1= ВОЬЬ). стока (строка 269). Элемент ад[К[ содсрж<п индекс мвс- 220 Ьтаак; 284 348 г->1зпк[01 = х; 221 285 11 (х->Ьа1 > -1) ( в и->1лп)с[0) = г->1<ах(1 1; сива »->1]ай[[ поддерева, из которого был удален узсл. 222 дтт = 1саа > г->даса< 286 ю->1[ах[1] = х->1[ах[0)< 350 г->1зпк[1) = и; Как и при встввкс при удалснии возл<ожны два сим- 223 ар()с) = х; 287 351 1( (г->Ьа1 == -1) ( матричных случая.

Рассмотрим вариант, когда ад[)с[ 224 ад[В++) = дьтз 288 ар[к - 1)->)ьпк(ад[ — 1]) = х; 352 в->Ьа1 = 1; равно 0 (строки 270 — 317), т.с. узел улалястсл с лсвого 225 г = г->1[па[4<с)< 289 < >Ь 1 О) < 353 х->Ьа1 = О; 226 ) 290 х->Ьа1 = -1; 354 ) 227 291 а1ва г0 (г->Ьа1 == 0) Возможны два простых случая.

Если коэффициснт изф, ' 7 й Пансе во девичее нт дерев> Глава 12 ввслена Гибалсом (С'сба)б) и Седжвиком (бес(кете[с(с) в ее х (978 г. Вставка 154 у = ар[а1с — 1[; +2 О 155 В дереве тес)-Ыасй каждый узел ассоциируется с оп- Бсз лишних прелюдий рассмотрим код, которыи встав- х = ар(ах — 2)! х чч рсдсленным цветом: красным или черным. Баланс дос- ляст с зсл в дерево гес(-Ь(аск. 157 х->со1ог = ВВ ВЕО; А +1 тигается путем упорядочения узлов определенным об- 158 у->со1ог = ВВ ВЬЛСЕ; П+1 100 гпе гЬ ьпвегг(вггпсе гЬ Ггее *Егее, гпе разом с учетом их цвета.

Точные правила выглядят 1геп) х->1!па(0) = У->11пх(1)' В А В следующим образом: 101 ( П и 161 у->11п)с[1) = х; ). Красныс узлы могут иметь только черные дочерние 162 ар[ах — 3)->11пх[аа(ах - 3)) = у; узлы. 103 гпс ад(48[! 163 104 гпс а!с; 164 Ьгеах; 2. Вес пути от узла до любого листа, расположенного 105 165 ) ниже в дереве, содержат одно и то жс количество 106 всгпсс гЬ поде *х, 'у; 166 ) +2 -1 черных узлов.

107 167 е1ве ( 108 аввегс(ггее != ВОЬЬ); 168 У = аР[ах — 2)->11пх[0); х мс Кроме того. корневым узлом дерева гас[-Ыасй в этой 109 18 [Егее->гоос == ВВЬЬ) 169 И (у 1= Ивьь бь у->со1аг А О +1 С главе лля простоты кола всегда булст черньсй узел. 110 Ггее->гоог = пем паап(егее, гсеа, вв вео) П+1 В общем случае корневым узлом дерева гсс(-Ыас1 может 88 Вьаск); — 170 ар[-ах)->со1ог = у->со1ог 111 геспгп Егее->гоог 1= ВВЬЬ; ЕВ Вьаск! В С А В быть узел любого цвета. 112 ) 171 ар[-ах)->со1ог = ВВ ВЕО; П+1 П+1 П+1 Высапса данного узла на черным узлам — это количс- 113 67 ство черных ухюв на пути от данного узла ло листа, нс 114 аа(0) = 0; 173 е1ве ( С ~н-1 а) 7<опек пода ичнок<уЯреиу ЩД— Орсини>ацип данник ° 4 Глава 12 Часть 1! И последний этап — устанавливасм черный пвст лля 255 Строки 118 — 136 знакомы вам по поиску по двоича а корневого узла (строка !95).

Это вссгда можно сдслать, 256 11 (У >со]ог == "В "80) ( ному дереву и по вставке нового узла. Кромс того, каж- 257 (гее(у)1 поскольку это нс приводит к нарушению правил. дый пройденный узсл для послслуюшсго использования ь г58 гехпгп 1; при балансировке записывается в стек (строки 126 и Удаление 259 ] 127). 260 Первоначально новый узел х считается красным.

О Е А О Е < спорь рассмотрим прон«дуру удаления узла. Начнем с 261 Ггее(у)1 Рассмотрим правила для дсрсва гсдкЫас1, которые при листинга. 263 ив]1е (1 > 1 44 (х == ВОЬЬ [[ х->со1ог этол< могут быть нарушены. Вставка красного узла нс В С 202 1п«гЬ де1е«е (есгпс««Ь с«ее *Гхее, 1п«кпее) 88 ВЬАСК)) нарушает правило 2, поскольку она нс изменяет коли- гоз ( 264 11 (ад[)с — )] == 0) ( чсство чсрных узлов ни на одном пз путей. Но это мо- 204 асгпсв гЬ поде *ар[48); 265 е = ар(к — 11->1«пк]11; а а 205 1пс ад[481; 266 жст нарушить правило 1: если родительский узсл ута лпс )с; 267 11 (а->со1ог == ДВ ВЕО) х красный, то вставка красного узла л нс разрсшастся и 207 268 и->со1ог = 88 ВЬАСК; У нам придстся вноси~ь измснсния в структуру. О У 208 всгпсс гЬ поде ие, *х, *у, *г; 269 ар[А — 1]->со1ог = ВВ 880; []игл в строках 138 в 193 повторяется до тех пор, 209 270 пока нс будет удовлетворено первое правило В начале 210 аввегс(сгее 1= ИОЬЬ); 271 аР[1с — 11->1]па[1 1 = е->11пх[0)1 А С 211 272 е->1]п1с[0) = ар[)с — 1); каждой итсрапии мы сч<насм, чю узсл х являсгся крас- ад[О) = 0; ным, так жс как ого родительский узел ар[а)с-][.

(В дсй- В С А В ствитсльности х в ш<клс отсутствуст. При нсоблолимо- ар[к) = ар[к — 11; в с а) Оиигл ни дини исаа> дгранс Орюни сан ил диннчн Часть й Глава !2 316 з Е [ч->со)ог == ЕВ ЕЕП) нивается со зна'сенном Ыеш, узлы, по которым осушс- Нд рис. 128 ссрныс узлы залиты черным цветом.

а Слусан 2 (рис. !2.8 Ь, строки 283 288). Если узел ч 316 ч->со1ог ствляется продвижение, заносятся в стек. Если значс- красныс оставлен ь! незалитыми. Узлы, залитыс серым нс имеет красного дочернего узла (узлы Ь и с могут быть 317 ар[К вЂ” 11->со1ог = ЕВ ЕЕП! ние Иегп найдено, цикл завершается. При выходе из сссссгом, могут быть либо черными, либо красными. черными либо вообшс отсутствовать), то его цвет мож- цикла г является узлом, который необходимо удалить, Ус и! не обознсченнссс в кодс функции для удобствз но просто зал!спить на красныи Это позволяет убрать 319 ар[К вЂ” 11->11лх[01 = ч->1ла1с[11; 320 ч->11лк[11 = ар[к — ); 1' - к 11; ра[К-1] является родительским у~лом узла г и т д. отхссчсны как и, Ьи г.

Поддерсвья обозначеньс пропис- олин черный узел из правого полдерева родительского 321 ар[К вЂ” 21->11пК[ад(К - 211 Методика, которая используется для удаления узла ными буквами. узла узла х, соотвстствуюший чсрнолсу ух!у, удалснно- 322 в функции гЬ бе[е[еП, немного отличается от мстоди- Случай ! (рис. [2.8 а, строки 267-28!). С этим слу- му в х. Таким образом восстанавливается правило 2 лля 323 ар(!с! = вр[1с — 11; ки, примснясмои в функциях ач! бе1е[еП и Ьсп бе!е[еП. чаем, когда узел ъ — красный, легче справиться, про- поддерева. Тем нс лсснсе, по-прежнему требуется про- поэтому рассмотрилс ее более подробно ас[[ К) = 1; образовав его к одному из трех других случаев, а нс раз- водить изменения вверх по дереву, поскольку высота 325 ар[К вЂ” 11 = ч; 326 кн+! Если узел г имеет меньше двух дочерних узлов, то решая сто напрямую.

Преобразование выполняется за вссгодсрсва почсрным узлам излсенилась. Поэтому цикл 327 указатель на этот узел в его ролитсльском узле залссня- счст левой ротации ъ на место, занилсасмое увзолс а, и выполняется до тек пор, пока стек будет содержать узлы. 320 ч = ар[К вЂ” 11->11пК[01; ется указателем на левый дочерний узел узла г, если обновления стека Обратите внимание, что такое пре- Случаи 3 (рис.

Характеристики

Тип файла
DJVU-файл
Размер
12,26 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее