Лінійний список

Лінійний список в інформатиці та програмуванні визначається як екземпляр абстрактного типу даних, що формалізує концепцію впорядкованої множини елементів. Наприклад, абстрактний тип даних для безтипових, змінних списків можна визначити із допомогою конструктора та чотирьох операцій:

  • конструктор для створення порожнього списку;
  • операція визначення порожності списку;
  • операція для додавання елемента в початок списку (cons в Лісп);
  • операція отримання першого елемента списку (або «голови») списку (car в Лісп);
  • операція для визначення списку, що складається із всіх елементів списку окрім першого (або його «хвоста») (cdr в Лісп).

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

За визначенням, список — це послідовність з n0 елементів X[1],X[2], … X[n], для якої виконується наступна умова: якщо n>0 та X[1] — перший елемент у списку, а X[n] — останній, то k-й елемент розташований між X[k-1] та X[k+1] елементами для усіх 1<k<n.

З такими структурами даних виконуються наступні операції:

  • отримання k-го елемента списку для читання чи запису в нього нового значення;
  • додавання нового елемента в будь-яку позицію в списку;
  • видалення елемента списку;
  • об'єднання в одному списку двох або більше лінійних списків;
  • розбиття списку на два або більше фрагментів;
  • створення копії списку;
  • визначення кількості елементів в списку;
  • сортування елементів списку;
  • пошук елемента, що задовольняє певним критеріям.

Важливими окремими випадками лінійних списків, в яких операції додавання та вилучення певних значень можуть бути виконані лише для першого чи останнього елементу, є:

стек
лінійний список, в якому операції додавання та вилучення виконуються лише на одному кінці списку (верхівці стеку). Принцип побудови стеку називають LIFO (англ. last in, first out).
черга (однобічна черга)
лінійний список, в якому усі операції додавання виконується на одному кінці (в хвості черги), а операції вилучення — на іншому кінці списку (в голові черги). Принцип побудови черги називають FIFO (англ. first in, first out).
дек або двобічна черга (англ. double-ended queue, deq)
лінійний список, в якому всі операції вставки та видалення виконуються на обох кінцях списку.

Не менш важливим окремим випадком лінійного списку є зв'язаний список, в якому кожний елемент окрім поля даних зберігає також вказівник на наступний. Така структура дозволяє зняти обмеження на зберігання лінійного списку в безперервній області пам'яті.

Важливим узагальненням лінійного списку є багатовимірний масив.

Посилання

    Див. також

    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.