Википедия

Связанный список

Свя́зный спи́сок — базовая динамическая структура данных в информатике, состоящая из узлов, содержащих данные и ссылки («связки») на следующий и/или предыдущий узел списка. Принципиальным преимуществом перед массивом является структурная гибкость: порядок элементов связного списка может не совпадать с порядком расположения элементов данных в памяти компьютера, а порядок обхода списка всегда явно задаётся его внутренними связями.

Виды связных списков

Линейный связный список

Односвязный список (однонаправленный связный список)

image
image
Разновидность связного списка — односвязный список, содержащий 3 элемента

Линейный однонаправленный список — это структура данных, состоящая из элементов одного типа, связанных между собой последовательно посредством указателей. Каждый элемент списка имеет указатель на следующий элемент. Последний элемент списка указывает на NULL. Элемент, на который нет указателя, является первым (головным) элементом списка. Здесь ссылка в каждом узле указывает на следующий узел в списке. В односвязном списке можно передвигаться только в сторону конца списка. Узнать адрес предыдущего элемента, опираясь на содержимое текущего узла, невозможно.

В информатике линейный список обычно определяется как абстрактный тип данных (АТД), формализующий понятие упорядоченной коллекции данных. На практике линейные списки обычно реализуются при помощи массивов и связных списков. Иногда термин «список» неформально используется также как синоним понятия «связный список». К примеру, АТД нетипизированного изменяемого списка может быть определён как набор из конструктора и основных операций:

  • Операция, проверяющая список на пустоту.
  • Три операции добавления объекта в список (в начало, конец или внутрь после любого (n-го) элемента списка);
  • Операция, вычисляющая первый (головной) элемент списка;
  • Операция доступа к списку, состоящему из всех элементов исходного списка, кроме первого.

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

  • Длина списка. Количество элементов в списке.
  • Списки могут быть типизированными или нетипизированными. Если список типизирован, то тип его элементов задан, и все его элементы должны иметь типы, совместимые с заданным типом элементов списка. Чаще списки типизированы.
  • Список может быть сортированным или несортированным.
  • В зависимости от реализации может быть возможен произвольный доступ к элементам списка.

Односвязный список в языках программирования

Си

struct list {  int field; // поле данных  struct list *next; // указатель на следующий элемент }; 

применение односвязного списка:

struct list* l1 = (struct list*)malloc(sizeof(struct list)); l1->field = 1; l1->next = (struct list*)malloc(sizeof(struct list)); l1->next->field = 2; l1->next->next = (struct list*)malloc(sizeof(struct list)); /* и т.д. */ 

Двусвязный список (двунаправленный связный список)

image

Здесь ссылки в каждом узле указывают на предыдущий и на последующий узел в списке. Как и односвязный список, двусвязный допускает только последовательный доступ к элементам, но при этом дает возможность перемещения в обе стороны. В этом списке проще производить удаление и перестановку элементов, так как легко доступны адреса тех элементов списка, указатели которых направлены на изменяемый элемент.

XOR-связный список

Используется редко.

Кольцевой связный список

Разновидностью связных списков является кольцевой (циклический, замкнутый) список. Он тоже может быть односвязным или двусвязным. Последний элемент кольцевого списка содержит указатель на первый, а первый (в случае двусвязного списка) — на последний.

image
Односвязный кольцевой список

Как правило, такая структура реализуется на базе линейного списка. С каждым кольцевым списком дополнительно хранится указатель на первый элемент. В этом списке ссылки на NULL не встречается.

Также существуют циклические списки с выделенным головным элементом, облегчающие полный проход через список.

Список с пропусками

Развёрнутый связный список

Преимущества

  • эффективное (за константное время) добавление и удаление элементов
  • размер ограничен только объёмом памяти компьютера и разрядностью указателей
  • динамическое добавление и удаление элементов

Недостатки

Недостатки связных списков вытекают из их главного свойства — последовательного доступа к данным:

  • сложность прямого доступа к элементу, а именно определения физического адреса по его индексу (порядковому номеру) в списке
  • на поля-указатели (указатели на следующий и предыдущий элемент) расходуется дополнительная память (в массивах, например, указатели не нужны)
  • некоторые операции со списками медленнее, чем с массивами, так как к произвольному элементу списка можно обратиться, только пройдя все предшествующие ему элементы
  • соседние элементы списка могут быть распределены в памяти нелокально, что снизит эффективность кэширования данных в процессоре
  • над связными списками, по сравнению с массивами, гораздо труднее (хоть и возможно) производить параллельные векторные операции, такие, как вычисление суммы: накладные расходы на перебор элементов снижают эффективность распараллеливания

См. также

  • Сортировка связного списка

Примечания

  1. Cormen, Leiserson, Rivest, and Stein. Introduction to Algorithms, 2nd edition. The MIT Press, 2001. ISBN 0-262-03293-7
  2. Выравнивание данных

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Связанный список, Что такое Связанный список? Что означает Связанный список?

Svya znyj spi sok bazovaya dinamicheskaya struktura dannyh v informatike sostoyashaya iz uzlov soderzhashih dannye i ssylki svyazki na sleduyushij i ili predydushij uzel spiska Principialnym preimushestvom pered massivom yavlyaetsya strukturnaya gibkost poryadok elementov svyaznogo spiska mozhet ne sovpadat s poryadkom raspolozheniya elementov dannyh v pamyati kompyutera a poryadok obhoda spiska vsegda yavno zadayotsya ego vnutrennimi svyazyami Vidy svyaznyh spiskovLinejnyj svyaznyj spisok Odnosvyaznyj spisok odnonapravlennyj svyaznyj spisok Raznovidnost svyaznogo spiska odnosvyaznyj spisok soderzhashij 3 elementa Linejnyj odnonapravlennyj spisok eto struktura dannyh sostoyashaya iz elementov odnogo tipa svyazannyh mezhdu soboj posledovatelno posredstvom ukazatelej Kazhdyj element spiska imeet ukazatel na sleduyushij element Poslednij element spiska ukazyvaet na NULL Element na kotoryj net ukazatelya yavlyaetsya pervym golovnym elementom spiska Zdes ssylka v kazhdom uzle ukazyvaet na sleduyushij uzel v spiske V odnosvyaznom spiske mozhno peredvigatsya tolko v storonu konca spiska Uznat adres predydushego elementa opirayas na soderzhimoe tekushego uzla nevozmozhno V informatike linejnyj spisok obychno opredelyaetsya kak abstraktnyj tip dannyh ATD formalizuyushij ponyatie uporyadochennoj kollekcii dannyh Na praktike linejnye spiski obychno realizuyutsya pri pomoshi massivov i svyaznyh spiskov Inogda termin spisok neformalno ispolzuetsya takzhe kak sinonim ponyatiya svyaznyj spisok K primeru ATD netipizirovannogo izmenyaemogo spiska mozhet byt opredelyon kak nabor iz konstruktora i osnovnyh operacij Operaciya proveryayushaya spisok na pustotu Tri operacii dobavleniya obekta v spisok v nachalo konec ili vnutr posle lyubogo n go elementa spiska Operaciya vychislyayushaya pervyj golovnoj element spiska Operaciya dostupa k spisku sostoyashemu iz vseh elementov ishodnogo spiska krome pervogo Harakteristiki Dlina spiska Kolichestvo elementov v spiske Spiski mogut byt tipizirovannymi ili netipizirovannymi Esli spisok tipizirovan to tip ego elementov zadan i vse ego elementy dolzhny imet tipy sovmestimye s zadannym tipom elementov spiska Chashe spiski tipizirovany Spisok mozhet byt sortirovannym ili nesortirovannym V zavisimosti ot realizacii mozhet byt vozmozhen proizvolnyj dostup k elementam spiska Odnosvyaznyj spisok v yazykah programmirovaniya Sistruct list int field pole dannyh struct list next ukazatel na sleduyushij element primenenie odnosvyaznogo spiska struct list l1 struct list malloc sizeof struct list l1 gt field 1 l1 gt next struct list malloc sizeof struct list l1 gt next gt field 2 l1 gt next gt next struct list malloc sizeof struct list i t d Dvusvyaznyj spisok dvunapravlennyj svyaznyj spisok Zdes ssylki v kazhdom uzle ukazyvayut na predydushij i na posleduyushij uzel v spiske Kak i odnosvyaznyj spisok dvusvyaznyj dopuskaet tolko posledovatelnyj dostup k elementam no pri etom daet vozmozhnost peremesheniya v obe storony V etom spiske proshe proizvodit udalenie i perestanovku elementov tak kak legko dostupny adresa teh elementov spiska ukazateli kotoryh napravleny na izmenyaemyj element XOR svyaznyj spisok Osnovnaya statya XOR svyaznyj spisok Ispolzuetsya redko Kolcevoj svyaznyj spisok Raznovidnostyu svyaznyh spiskov yavlyaetsya kolcevoj ciklicheskij zamknutyj spisok On tozhe mozhet byt odnosvyaznym ili dvusvyaznym Poslednij element kolcevogo spiska soderzhit ukazatel na pervyj a pervyj v sluchae dvusvyaznogo spiska na poslednij Odnosvyaznyj kolcevoj spisok Kak pravilo takaya struktura realizuetsya na baze linejnogo spiska S kazhdym kolcevym spiskom dopolnitelno hranitsya ukazatel na pervyj element V etom spiske ssylki na NULL ne vstrechaetsya Takzhe sushestvuyut ciklicheskie spiski s vydelennym golovnym elementom oblegchayushie polnyj prohod cherez spisok Spisok s propuskami Osnovnaya statya Spisok s propuskami Razvyornutyj svyaznyj spisok Osnovnaya statya Razvyornutyj svyaznyj spisokPreimushestvaeffektivnoe za konstantnoe vremya dobavlenie i udalenie elementov razmer ogranichen tolko obyomom pamyati kompyutera i razryadnostyu ukazatelej dinamicheskoe dobavlenie i udalenie elementovNedostatkiNedostatki svyaznyh spiskov vytekayut iz ih glavnogo svojstva posledovatelnogo dostupa k dannym slozhnost pryamogo dostupa k elementu a imenno opredeleniya fizicheskogo adresa po ego indeksu poryadkovomu nomeru v spiske na polya ukazateli ukazateli na sleduyushij i predydushij element rashoduetsya dopolnitelnaya pamyat v massivah naprimer ukazateli ne nuzhny nekotorye operacii so spiskami medlennee chem s massivami tak kak k proizvolnomu elementu spiska mozhno obratitsya tolko projdya vse predshestvuyushie emu elementy sosednie elementy spiska mogut byt raspredeleny v pamyati nelokalno chto snizit effektivnost keshirovaniya dannyh v processore nad svyaznymi spiskami po sravneniyu s massivami gorazdo trudnee hot i vozmozhno proizvodit parallelnye vektornye operacii takie kak vychislenie summy nakladnye rashody na perebor elementov snizhayut effektivnost rasparallelivaniyaSm takzheImeetsya vikiuchebnik po teme Svyaznyj spisok Sortirovka svyaznogo spiskaPrimechaniyaCormen Leiserson Rivest and Stein Introduction to Algorithms 2nd edition The MIT Press 2001 ISBN 0 262 03293 7 Vyravnivanie dannyh V state ne hvataet ssylok na istochniki sm rekomendacii po poisku Informaciya dolzhna byt proveryaema inache ona mozhet byt udalena Vy mozhete otredaktirovat statyu dobaviv ssylki na avtoritetnye istochniki v vide snosok 20 oktyabrya 2024

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто