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

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

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

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

и а уз. в Одно Ватного с едтвцего Узла Равным Указатели на /» теперь поде ров указыВает аа узел, который долкен стоять после текуцего узла. препндуцнй узел удаляемого узла поскольку этот узел долнен стоять после текудего узла в двусвязаом списке, уставоввть в списка с требуемым количеством обратных указателей Если этот узел является едваствеааым узлом стеке указатель на следувцн значительно усложнило бы код.

Если ны не использусв загоповочаом списке, то пель побе = побе Роз; те Односнязныс списки, то присоединение узлов ничем Устааоввть первнй и последний указатели '((ПР иове " )(пеы поде->д)аепя1оп вьасд ! нс б>дст отличаться от вставки узлов. элемента загоповочаого опаска равнымв НОЬЬ (2 я спгг дйа))) Если этот узел является первым указателем пеке поде; Удаление узлов матрицы зпемеата загоповочвого слиска, то Устааоввть первый указатель эпемеата указатель ва предидуция узел соответствует указатели на предыдуцвй узел стаРого узла *I удатение узла матрицы является болсс простой Опсраци- заголовочного спвска раваим указатели аа ; -О«я(' Глава (5 кн в структуре ВРА)(ВЕ МАТ)((Х. Если получсно зна чсние (н(()ЕЕ и операция прошла без ошибок, значит просто с данной упорядоченной парой нс связано ни какое значснис.

Проверка диапазонов Провсрка диапаюнов (или пределов) осушсствлястся в функции вр ге(пете поде. Такая проверка имеет два важных момента. Во-первых, количество измерений в кортсжс проверяется по коли <сству измерений в разреженном массиве. Далее, ка»дь<й элемент в кортеже проверяется по минимальному и максимальному значениям для каждою измерения в массиве. Примср кода, который выполняет эту функцию, приведен ниже: (теани<аи ия дани нее Разлен чннаямагнрииа Щ~ Часть Н ргеч поде = *((ЯР НООЕ **)(де1 поде->б1веавзоп всаск выбирает требуемый элемент заголовочного списка, а (2 я спгг бйв) + 1)); за<ем с помошью первого и последнего указателей пс/* устааоввть указатель ва следувивй узел узла ргеч поде ва узел пехг поде '/ *((ЯР ИООЕ **)(ргеч поде->б1вепайоп зсаск (2 ' согг б1а))) = пехс поде; Перемещение по упорядоченным парам /я устаиоввть указатель ва предмдумвй узел узла лекс поде аа узел ргеч поде я/ Псрсмсшсние по упорядоченным парам основано на '((ЯР МООЕ " )(лехе поде->бйвепвгоп зсаск + создании структуры кортежей.

Кортеж хранит положс- (2 я спгг бйа) Ф 1)) = ргеч поде; ннс узла в виде упорядоченной пары. В кортеже в виде стсьз хранятся порядковые номсра, соотвезствуюшис /* Езмевеаая могут повлиять иа указатели в заголовке */ Ьеабег = '(яр ЕОЯ ЕЬЕНЕИТ я ° )(бе1 поде->Ьбг всаск положению узла в измерении в порядке возрастания номеров измерений. После того как кортеж создан, с помошью функции яр геизече поде можно найти трс/' Если зто последаий узел в списке, то установить лервмй а поспедаий указателе в бусмый узел.

Чтобы убелиться, что узел извлечен без заголовке разлива ИОЬЬ */ ошибок, очень важно не забыть проверить поле ошиб- 11 ((пехс поде == ргеч поде) ка (пехг поде = бе1 поде)) ( Ьеабег->уйгас = (ЯР ИООЕ я)ИОЬЬ; /' провервть, соответствует ли количество азмереавй в кортеве количеству азмереавй в разреаеааов Ьеабег->1аак = (ЯР ЙООЕ Я)НОЬЬ; матрвае я/ (вр->бйвеавгопз <= Спр1е->б1мепайопв) Работа е графини Глава 16 Работа с графами пень захода вершины в неориентировапном графе — зто то жс самос, что и ее степень. РИСУНОК 16РК Неориентироаанныи граф Нсориентированные графы являются полными, если каждая вершина в графе имеет ребра ко всем другим иа ,';.' "„г.';ю,;;"~ г~„:.,:,"т - „:-',-, ~',*,.'„-Ъ ";,',",'~ гз'Е к;*.; и ме ","," "" ''"".,-"л.'„' т и,-,«,;"; '„" ",' е '..., г нйур г ",.".'"ен'*:-"-**'":.за ','".ш-.:- .'-" .

":. -,тл т.и ", си~из"-",л, „:.:-. ";, ' ',;-,:,;.:"...', н ; "га -":,," ...,;;:,-гй:...ъ".",б," з"1."'.";ъ,»„:,",,': 'гт,"„~„„, 1; .:".;.т,','; н и Г':"',! %е . ";не ',, " ' ' -„" ":,, нт ~'е ч.-:- -.,:,,'" .'';::.-':г" 'Оз'.-''- Г'.,'.Гр'н. » ', „,.г! ';,н' .",.',4..:-- " '.'"',.о еиго „',4. .;,:".,:, г 'е' „' И,', "го;;ь ""--, ~,'-а-атб ;... Е' г",."' е.б ед ".*,;„"-: '".,",.„,е',*- .;"1 "':...:"„,%,"Пн,„'. ". . ' ' '.. "" '"::, *'..."'е"-!~"',"'-',",.""нг о р":„. Г,.~' йс я:,'. ', З г Ёг*;"'";., '";, В ЭТОЙ ГЛАВЕ ° Определение графов Ян Вуде ° Циклические и апиклическис графы е Представление графов ° гнлгоритмы поиска кратчайшего пути ° Минимальные остовные деревья ° Оптимизапия: последнее замечание РИСУНОК 16.1.

Граф нроетога Игей-гайто графы предоставляют программистам очень полез- чсния использузотся, когда осушествлястся выбор опти- ОрИВНТИрОВВННЬЮ Графм , т,„е'-.; ..";""';...",; '.„,„"....";"',",,- ' ' е,.'-узнг -"О', '...' ',', г-" " -"д~,,, «, Е"-'"'-" ",, '",',' .„,,"!.,;"',, '" ",."'"'",, '",: „гн '.„'„"'„'."',, -"*"" ". ",,з'.."йауе"-„, ',' . "';„.'...ньое б и ':""" ".," .

чрзгн '-~ р " и зг" Органитциз данныт 6й г Часть и Работа г:рафами Глава тв Для ориентированных графов все это немного слож- гнозирование того, рассматривать граф насышенным или гб ив у, тг» уз нее. Когда, как в случае с неориентированным связан- разреженным, зависит от того, что граф будет представным графом, сеть путь от любой одной вершины ко всем лять. Реальные сети обычно являются разреженными. другим вершинам, граф можно описать как сцлвгго связанный (рис.

16.6). ПРИМЕЧАНИЕ Для получения более детальном информации по разре- "о Ул Уг женным матрицам просмотрите главу 15. уг Собираясь использовать граф, необходимо опреде5 у л 7 лить хотя бы предположительно, насколько он будет уз Уз насышенным. Если используются списки смежных вср- РИСУНОК 16.6. Неориентировонныи цив. тческий граф РИСУНОК 16лй Неоривнтираванный ацикличвский граф.

шин, то для хранения насыщенного графа потребуется б больше памяти. Если граф кажется насышснным, тп более эффективно хранить сто как матрицу смежности Матрицы смежности няются только ребра, представленные в графе. Вся вы- РИСУНОК 16.6. Ориентированный сильно связанный граф. деленная память используется тояько для представлеДля представления графа можно использовать лгатрицу ния ребер. ориентированный граф люжно описать также как ЦИКЛИЧЕСКИЕ И ацИКЛИЧЕСКИЕ ГрафЫ смежности <афаселсу таггт) Это просто двумерный слабо свЯзанный.

ОРиентиРованный слабо свнзанный 11 т п едставляет собой путь, который начинается и массив со ст окой и столбцом для каждой вершины. р нею сднсок. Каждый элемент связанного списка прелг а нс имеет и ! отлю й одной ве шины к д гим, Ребра между вершинами получаются путем манипули- Р' У Р ' У ' У" - отдаляет одно ребро и хранит вес этого ребра и соотвст- рования содержимым массива. Органа ма им Ланн ьа Ридата г графами часть П Глава 16 Структура бгарй является структурой верхнего уров- )-лввчегеех(с); пп)оп ( ня, которая определяет граф в библиотеке.

Эта струк- гзт (таа) ( /' Здесь ввпелаяатся какие-лвбо деастввя тура отслеживает все существуюшис в графе вершины чоИ ' Рег; аад злехевтахв Е '/ и ребра независимо от того, представлен граф матрицсй тпс тпдех) ) смежности или списком смежных всрглин. ) гпсегпа)1 /* вспсльзуется для Ебделс Епв(ЬЛ); запаса полоаеввя и/ исгпсс ОгарЬ ): Топологическав сортировка О->Чете(сев((1->тад.вся=4)1 Ьпс Еодввсапвсагс(асгпсг ОгарЬ * О, Ьпг тпг)вх, (пс Мппчегстсев) апг Ввхсчвчвгевх(асгпсс ОгарЬ * 6, Лпг Хповх)г вегасе еодвасап * евсап); Ориснтированныс ацнклнчсские графы можно нспольНсобходимо также иметь возможность удалять в зовать для представления событий или состояний, коа е иметь возможность удалять вер- Эта функция инициализирует структуру Епйеасап /'ввутреввее заачевве '/ шины, Любое ребро, которое входит или выходит из прн подготовке списка ребер для отдельной вершины, торых можно наллежащнлг об азом достнгн ть, как но- )г удаленной вершины, тоже нужно улалить.

Котла улг— улалить. огла ула- опрсделснной своим индексом. казано на рис. 16.12. Обычно такис графы применяют 3 есь имеет ляется одна вершина, друпзс вершины получают н в р г 1 получают новыс лля сети заданий, которая используется лля опрсдслед сь имеется две функции, которые относятся толь- гпс Еадв5сапвпл(асгпсе Елдвасап и Б5сап); ння требуемого порядка выполнения нескольких залач. ко к этой структуре. индексы, так что в графе нс остается "дыры" на месте вновь удаленной вершины. ф р и ю с к а г г и р г ~ в а н и я П с Р с л в ы п оп н е н е м о е Р ' л н о й н о в о й 'з асгпсс ОгарЬ * Маввпгарь(вппх ОгарЬТурв Т1г ребра к его концу, освобождая любые источники в варитсльныс условия (т.е.

предыдущие задачи) дояжны Впс Сеппвсгчвггвх(асгпсс ОгарЬ * О, данная функция созласт новый пустой граф и воз- впе вспгсв, гпе пваеьпаеьоп, апе ссае); структуре Еййеасап, Как только проводится эта опера- быть выполнены. вращает указатель на стру Ога Ь или )и)Г) П., если Вершины такого графа в основном прслназначсны ° ' 'труктуру О Р Ы.)-, если Данная функция добавляет ориентированное ребро, не для того, чтобы пометить его в порядке, в котором память нс может быть выделена для сс азмещения.

шс недсиствитсльным лл сс размещения. имеющее заданный вес, от исходной вершины к верши нх требуется обходить. Порядок обхода описывает лга- Работа сгрофами Глава 16 Корневая вершина имеет полустепснь захода, рав- Во-первых, нам необходимо создать таблицу полуную О. При удалении корневой вершины полустепень степеней захода каждой вершины (листинг (6.(). Это /' Попок верпвв с попустепевьв захода, равво / и з х , раввов 0 '/ захода всех схзежных вершин уменьшается на ], при можно сделать, сели просто просмотреть место назна- уох (Х 0>1СС >ВЕВВЕГЫСЕВ11++) этом погснциально создаются новыс корневые верши- чения каждого ребра в графе и увеличивать значение ( ны.

Наиболее трудоемкой частью такого алгоритма явчя- счетчика на единицу. Для этого потребуется выполне- 11 (1СаЫе[1]==0) Кпяпепе(1) ется поиск корневых вершин. Линейный поиск вершин ние Е (количество ребер в графе) итераций. ) будет очень медленным, так как его требуется делать Теперь можно просмотреть таблицу для поиска верПока по-преввему вмеется вервввм с полустепемьв захода, равно каждый раз, когда удазяется очередная вершина.

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

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

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

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