
- •Визначувані типи
- •Опис визначуваного типу
- •Класифікація відомих визначуваних типів
- •Використання визначуваного типу
- •Підтипи
- •Перелічувані типи. 1
- •Перелічувані типи. 2
- •Об'єднаний тип
- •Складений тип
- •Рядковий тип
- •Представлення рядків
- •Представлення рядкового літерала в мові Pascal
- •Операції над рядковими знченнямив мові Pascal
- •Представлення рядкового літерала в мові с
- •Індексовані типи
- •Устрій одновимірних мультизначень
- •Устрій двовимірних мультизначень
- •Опис устрою мультизначення індексованого типу
- •Устрій паспорту індексованого типу
- •Приклади опису устрою індексованого типу. 1
- •Приклади опису устрою індексованого типу. 2
- •Індексатор
- •Основні властивості індексованих типів
- •Опис об'єктів індексованого типу. 1
- •Опис об'єктів індексованого типу. 2
- •Ініціалізація об'єктів індексованого типу
- •Ініціалізація при створенні об'єкту
- •Ініціалізація об'єкту оператором привласнення
- •Особливості індексованого типу в мові с.1
- •Особливості індексованого типу в мові с.2
- •Іменовані (комбіновані) типи
- •Механізм обробки значень іменованого типу
- •Відмінності в застосуванні іменованого та індексованого типів
- •Використання типізованих вказівних змінних іменованого типу
- •Спеціальний випадок використання типізованих вказівних змінних іменованого типу
- •Структури даних. Визначення
- •Структури даних. Визначення
- •Лінійні структури даних
- •Лінійний список
- •Лінійний список
- •Підходи до реалізації списку
- •Моделювання лінійного списку. 1
- •Векторне представлення лінійного списку. 1
- •Векторне представлення лінійного списку. 2
- •Векторне представлення стеку
- •Векторне представлення черги
- •Моделювання лінійного списку. 2
- •Зв’язане представлення черги. 2
- •Нелінійні структури даних
- •Представлення дерев
- •Устрій дерева як структури даних
- •Види дерев як структур даних
- •Моделювання дерева. Приклад 2
Лінійний список
Рис. Складові вузла списку
Рис. Лінійний список
Лінійний список
Список може бути односпрямованим, якщо його вузли мають зв'язки, які спрямовані тільки від голови до останнього вузла хвоста, і двоспрямованим, якщо його вузли мають що зв'язки додатково спрямовані від останнього вузла хвоста до голови.
Оскільки можна вказати лексикографічний порядок вузлів, то список ще називається зв'язаним. При цьому односпрямований список називається однозв’язанным, а двоспрямований – двозв’язаний.
До списку можна застосовувати, наприклад, такі операції: розбити список на два списку, об'єднати два списки, додати вузли до списку.
Підходи до реалізації списку
З погляду реалізації списку в пам'яті даних можна розглядати два такі підходи:
вузли списку розміщуються в суміжних ділянках пам'яті, утворюючи масив (вектор);
вузли списку розміщуються в довільних ділянках пам'яті, зв'язуючись спеціальним чином і утворюючи шляхом зчеплення вузлів, або зв'язаний список.
Другий підхід зазвичай реалізується за допомогою механізму динамічного розподілу пам'яті в купі.
На основі лінійного списку будуються лінійні структури даних, наприклад, стек, черга і дек.
Стек
Стек - це лінійний список, в якому всі включення і виключення вузлів здійснюється в одному кінці списку, який називається вершиною.
а) векторне представлення;
б) зв’язане представлення.
Рис. Представлення стеку
Черга
Черга – це лінійний список, в якому всі включення проводяться в одному кінці, а всі виключення – в іншому.
а) векторне представлення;
б) зв’язане представлення.
Рис. Представлення черги
Дек
Дек (deque-dounle-ended queue ) (черга з двома кінцями) – це лінійний список, в якому всі включення та виключення виконуються на обох кінцях списку.
а) векторне представлення;
б) зв’язане представлення.
Рис. Представлення деку
Моделювання лінійного списку. 1
а) Векторне представлення
Для всіх лінійних структур даних векторний список моделюється значеннями індексованого типу. В цьому випадку частіше всього векторний список подається у вигляді кільця.
При виконанні завдання лабораторної роботи пропонується для зберігання та обробки значень списку (стека, черги) використовувати індексовану змінну, що зберігатиме одновимірне мультизначення з компонентів того типу, який мають данні лінійного списку, а для вказівки на один або два кінця списку – змінні цілого типу, що зберігатимуть індекси компонентів–крайніх вузлів списку.
Векторне представлення лінійного списку. 1
Pascal:
const
SIZE_STACK = литерал;
type
Stack = array (1..SIZE_STACK) of тип компонента;
Handl = 0..SIZE_STACK;
var
my_stack : Stack;
top_my_stack : Handl;
C:
сonst int SIZE_STACK = литерал;
тип компонента my_stack [SIZE_STACK];
int top_my_stack;
Векторне представлення лінійного списку. 2
Pascal:
const
SIZE_STACK = литерал;
type
Stack = record
stack_body : array (1..SIZE_STACK) of тип компонента;
top_stack : 0..SIZE_STACK;
var
my_stack : Stack;