А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев - Алгоритмы и алгоритмические языки (1113416), страница 13
Текст из файла (страница 13)
9.6.)«). ФЙЙлы Й. СКВ и б. Сх) содергкат ПОСЗГЕДОВЙТЕЛЬНОСТИ ЦЕЛЫХ ЧИССЛ «ВОЗМОЖКН, ПУСТЫЕ), ПРИЧЕМ числа В кажДОм файле у)к)рядочены по пеубыва)ппо. «)аписа т) п))огрймму. которая создает файл с . ) х В, содергкащий Все числа из Обоих Вхйдных файлов и тйкгке тпорядоченны)Д по неубывапн)0. 3Й))рсщается использОВать масснВы н динамнческук) память, ДИИЙМИЧЕскис Ст))утсгуры данных НСИОЛьзук)тся дЛЯ предславления В пам)пи данных, р)гнмер которых заранее неизвестен. В дальнейщем буд;т рйссмйт))нваться ДИНВМИЧЕСЬИЕ СТруКТуры ДЙННЫХ, СОСТОЯЩИЕ И) ОДНОТИПНЫХ злементОВ «звеньев). Иекото))ьге нз которых содергкат ссылки па друГНС зВенья.
Г«ри реализанни таких коиструкпнй )гй Языке Он Для представления звеньев нспользу)отея структурь) ) ВСВ)асс) ;щя представления ссылок — указатсли, Память под звенья Выделяется динамически «например, функцией )))В).1.00) и 707цкиа Освоааьаакдйьься ~фс77кцаас77( ""т.ьь 7 при Яда'ас777777 ЗВСНЬСВ. ((ОстрОизь список из трсх ааас77ьсв. сОдсракйацнй числа (,;.', 3. и зйнссти в 1, 1казйтсль нй сто нйиало, . 77777сйааь7Й 07)77777777и/7777тас7777ьай снлсок —. стРь'7ГТЯРй дйзань7х, В которои казкдос ЗВВИО содсржит ссь7лкъ' нй С77сдтаощсс звс770. 1(йприаиср„м7аяхно иривсстн таков ааписанис списка, кйакдОс звсно котороГО храниа цслОс яисло в кй асствс -'.:,:;!;.„: ДВНИЫХ: ВВтпох 1.(йтголй ' Пт О.' Иваа а / Х(ЭЗНИМОН 377Н~ЗИН7СР з' т72СС ' 1ВВ7аобс "77ОХВ,: // укйзйтсль Чй СЛСЛЗ77оласс~.' ЗНСНО (7 Послсднсс звсно списка содсрккит В полс Хасха: З77ВЧС77ИС НЬа' ", (ЛЛЯ НСКОЛЬДСВЫХ С777ЗСКОВ7 НЛИ ухйййаСЛЬ Нй пс(авос звсно спнскй (7зля кольдсВых спискОВ).
Са ЗВСНЬЯХ дйаа77777~!777КОС7777ОЛО СИЛСКЗ Х()йНЯТСЯ ССЫЛКИ НС тдлькО нй слсдааоп(сс звсно, НО и пй прсдь7да/77(сс.' з(Это<: 1'~в77 Обс ,.1ЗЯЯ з7 п»ОВ 1тй' поаае "отеч', '"пехв; / ЬаРОДЬЬТа З ГНИ М С ЛНДУМЛЗНН ЗНН770 Дал ПВООТЫ СО СПИСКОМ ДОСТВТОИНО ахййааасаал Нй СГО '.":.-,,'::.' псрвос звено: всс остальныс звснья моакно 7аолу аить,,'::::.'-::К'":= послслааватсааь7777 просмйтривйя список. Позтоьа*а* при 77срсдаис::!','-.,";.~~Ф",'-." списка В кйчсствс пй()ймстрй псрсдй7от только этОт акйзааасааь. 7а77Я СПИСКВ, НС СОДЬ(аьийи(ОГО НН ОДНОГО ЗВСНй, ЗПВИСПНС ТВКОГ77:;;у~"..~' 1кйзйтс77Я прааннмйкат (айвным Н(711, У77Н7ме77 1. Описана псрсмсннйя в' тисВ 13 3Впосас а'1 7 .'.'Ф.
,~нйламо 77СРНО7'О Зйиий ОПИСасй О .— 1:зтпобе"а ава1100 (ЭЙВООЙ '.. ВсааСааЕ',~ 7 7 р->О1 нал .= 1; Ооздйкяо нта1хго звена спмокй ГиуВ = .(71НВГаобС'а Яай."~ 100 (ЗЙВОО-' (ВВ7ООВ 17Бсааос(с( 7 7 а>->псх-'->с1сав .= 2," 7,:= р; 7/ ллн" Р нй ВТС7рон злило 077нокй Р->П~ Ха; а.оалйайии 77ОСЛ7 ЛБН7"О Зйиий ОПИОКЗ ра->77ехй:- (17ЗК7707ЗН'( вй1'оо (НЙВВОЙ (ВВ77ПОВ 11втааос(е) 7 7 Р-'>07ЗХ..->С ' .П --: >7 р->пехс->пех1 = (з(7117 ОЛСЛЗ/К7777Н"'О БВСНй НОТ Цджгр2.
Найти сумму всех элсмсптов списке 7 . злтаасс 1 а.звааобо ' О; а.пй 3 ~ап ИД711е (р ! = НУ1,ь7 ЭПВ7 += р->С1Сав7 р->псхс; а / ДВЯЬЖСН770 77О ОЛ ИСКУ НПРСВО (Г. рГ1ПС1 ("'ВП',и", зпв); Пример, 3. Описать копсц зйдйпнОГО списка за и! ХП ДлЯ 00лсГчсний ОпсрйЦИ)( допаВлсниЯ и '"Дйлсний,,:„;;1 ЗВСНЬпВ В СПИСКИ ИСПОЛЬЗУГОТ СПИСКИ С ЗВГЛВВНЬЬГВ ЗВСИОКП Вс;:;.!",~~ таких списках ВссГдй содсрхкитсЯ хотЯ 6ь1 Олно (псрВО61 ",1 ЗВСНО, КОТОРОС и НВЗЫВВКЗТ ЗВГЛВБНЫЬП В ЗаклйВИОН зййий НЕЛ';.!;,'-'"~ хранят никаких дйнпых. Для списка с заглазным звеном'::::.=;„.'",",' ткйзйтсль нй сГО нйийло ние01дй нс измснясзтзя, поскОльк~ зйтлййпос зйсно спнскй нс исплстся.
Это поззоляст писйтй',';.;::~~)ь Оолсс компактньй код. О. кото(зйЯ ЛОГ)ййлйст В~";.::", ПЯМ ЦСЛЬПИ ЗНЯЯВНИЗЬП Сий: ', '4-;,',ф~:;":. -""'-'Р': ',о(с( 1пзег. (зт, ись 11з:попе "')., 1пй х) зпгпсй 1.' ВСпос(е ~р, р =- (з';Кпсс 11з".Поде') вз11ос (зайео1 , 'з' т поп 11з сооГ1е ) ); р->е1еГЯ =. х) р->пехй = Ы('",1.; 11 (~1 =-=- %1З1,', .* ~ 1т7сспой с.'висок: Гиен ест ся .'~й Вз.
Ий на Пело р е1зе ( ~'I нес,<сзсо>1 список," неуоди~ последнее ззе ИП11е (О -> пехС (== % 11.) о = о->пехй; о->пехС = р; з тпсп ",,1зстос10 1пзет',; (зстпсс 11зспосе зь цс ) 1з поГ(е "Р, с(~ (з"'.Кпс" 11зспобе') ГЛВ11ос (з(.аео1 (зСГыст 1ьзСпоае)); р .>е;епа " х; р->пехС = НО1,1.; (Я()1,С,1 Гепыт и о; ~ 1 нз ныпз уь ся с уизззппеля е1зе ,~ 1 находлм последнее ззено нп11е,(с1->Г1ехп (= ИП'1,) О >ПЕХСГ я >пех'~' кейпкп ~кезйтпель нз напало списке не ЙззтенБлсн х) ( ВСГЦСС 11зйпос(е "р, 'с(; р = (зПппсй 11зтпобе') л1з11ос (з1йеа1 (зттыс" 11ВСпоое)); р->е1еьз = х; р- >пех С = %) 1,т; о =- '; //' спиоох точио ие етуст: есть хотя бьз заглавное звепо И1з11е (о -> пехй (=- Н()Ы.) « «З =- а->ПЕХ С; 11 дйяьнс Однонапраапснпь1с н сели инос нс указано 111;1Й1«е(1 4.
Описать ф заданною списка. 11вспобе *1.,', ( «СК ибг б (111 1111 1$ ВС1 1 1 СКурСНВНОС нсрскурсивно1о (хотя как праВило, нижс): ЗС«ЦС -'. ь 3 ОООО «'10 ( ««З« ЗЙ ,«« «4. ()ример ВЫЗОВЙ ТЙКОЙ фуикцни.' 1( зпве «' (ьз«101; ипгсм будут подразумеваться.т СКОльцсвые списки Осз ЗЙГлавноГО 1всна,,;:;;.'я ЯВНО. упкцикх удаля101цу10 Все звенья из В скос ..1.
«в'..110«(е егазе «3 «.Т11«зь«. ПСЬ Зз.вгпо«зе «РЗ ИО « = с„. — 0->. ех.".; -- е 'р( 1Г11 %3",1.; сгпснис нсрсДко ОкйзывастсЯ кОроч6.::!«ДЙ«", бьгстрОЛсйстги1с рскурсиВных решений.„-".:; ~"'«~,. ! 1„~ =. Ь«1 «„7 егйае (Ь->Г«ех",«; бгее «,« 1.екь1кп Н01'1„.
К«С« * " ' 108 ?аи~ча11ие, В задачах 10.1.1. -- 10.1.11. Считать«что под списком под1тйзумсвастся Одионапрйвленнь1Й 1гскольцсвой список без заглавного звена, .в звеньях когорого хранятся 1сзые чи" ча ( «пс' 10.1.1. Огпзоать фУнкци10 В01Й2 (1.), ВОЗВРЙ1ЦЙК11цузО сумму ЛОслсДНСГО и прсДпослсДНВГО чисел В сг1искс 1, (если опи ссть). 10.1.2. Описать функцикз кгак (.";, Возврап(Й101цузо максимальное значенпе в непустом списке Е, 10,1.3, Описать функциьо Йаз 011(11.'.Оасе ( 1, опреде1ППОП(укз, ССТЬ ЛИ В СПИСКС 1.
ХОТЯ бЫ два ЗВСНЙ С Одинаковыми числами. 10.1.4. Описа~ь функцнкз, которая получает В качестве параметра массив и строит по нсму списОК, содср1кагций тс 1кс злемснты В том ькс по(зядке. В качестве результата функция возвраи(аст указатель иа начало построенного списка. 1рекомсндация: стро10 ь список с конца,) 10.1.5, Описать фупкцик1 сору (ь! «которая ст(зонт кОпиго списка 1 н Возврашаст указатель Ба началО нового СПИСКЙ. 10,1.6. Описать функцнкз кечегзе ('1.), измсняк1Ц(ук~ ПорЯДОК ЧИССЛ В СПИСКС гз На П(ЗОТИВОПОЛ«ЗГКНЫЙ. (Рекомендация: строить новый список, добавляя злсменты в сГО начало,) 10.1.10.
Описать функцн)о упорядочивающую список," по нс»бьщщгию, 10 ат) фун НЫХ ПО 1, Е2'„, к ПИС)тов т т КЦИК) ЖС НС»бЫВ РЖБЩИЙ ный по) анию с всс чи Геубьща сла из ")тих НИК). 61 и 62; ф» а) НОВый спис нс должна создавать ОК СТРО НОВЫХ З сок ст)ю МС)ГЯЮТС СП))СК)) т 1 СННЫЙ Коль 1.12. Очитая, тпо направл Ь ф»'ПКЦ т)0 СПИСЬ а, описат о Х в нача. 10.1 СПИСОК ОСЗ Х , котор Х (СОЛИ ОЩ НЫЙ НСКОЛЬ цию с)е.'1 еб хранящие я, что ь .- двунаг а, Описать )ска 1, Все 10.1.7. Описать фун)тцню хпасгс ',1„Х), котопая В- БВЛяст В унаряДОЧЕПИЫЙ ПО НетбыааПИЮ СПИСОК Ч С: О Х так, чтобы рсзульгирующий Список был так)кс упорядочен по нсубываник), 10 1 8 ОПИСБГ), ф. Икцн)0 та ~„т т,) т 21 определяет, являк)тся ли списки 61 и 2 одинаковыми 2 »назовсы списки одинаковыми, сели Они содсржат Одни и тс жс числа В одинаковом порядкс), 10.1.9.
Описать функцию 'з1'.ОГ11.1, 21, которая УДБПЯст из списка 1т1 Всс чис)и, КОГОРьк: сОДсРжатсЯ В списке 62. ЗОК~ 10), Ю.2. Ь.лтетг. Оме)зедг На практике нередко вс) рсчастся необходимость откладывать Обработку искоторых данных на более позднсс Для Организации Т~~~Й отложенной Обработки )юпользу)от, в частности, стеки и очереди. й стек, н Очередь Опрсдсля)От дВс ОснОВныс операции: дООБВлс)йю )лсмснта В структуру данных и извлечение первоГО злсмс)ГГЛ из струк Гуры данных.
Овлск 1анг)). В вас Й) — структура данных, предоставляю)цая доступ к злементам в порядке, обратном ))орядкУ дооавлсния "1'О есть злсме))т добавлсин)ай в стек последним, будет вт)заращен первой же операцией и)влсчсниЯ. Операцию добавления В стОХ Г)ринято называть Ров*~., а опсраци)0 извлечения из стека — РОР. В случае очс)ая)л злсмснты извтзека)отея В том жс порядке, в котором ови бьщи т)обавлсны, Функции, реализующие добавлевис и извлечение нз очереди, рскомсндустся называть епс)цеце и осццс))с СООТВСТС)'ВСНПО. Отса и Очередь ~О~УТ быть;)сализованы, например, с помОщыО ОднонапраВлснных списков или с помо)цью динамичсских массиВОБ; Вьюор зависит От конкретной задачи. Всю работу ПО потдсрятанию стека или Очереди Обьи)но ьч!носЯт В ОтДельный мОД»ль 1ДОстаточно Описать пять функций: создание структуры данных, сс»'ничтОжснис, добавление ИОВОГО злсмс)па, извлечение злемснта, ПРОВерка пустот»), ракОЙ подход позволяе~ Отделить логик~ решения задачи от реализации струкзуры данных, благодаря чсму мо)кно, например, лсГХО замсиить В прОГраммс Одн»' реализацию стека )Га друГу)0 или использоВать Одну и ту жс реалггзацню стека в разных задачах.