7. Лінійні списки як структури даних
Перелік алгоритмів, що розглядаються
- визначення позиції елемента в списку;
- видалення елемента зі списку;
- вставка елемента у список.
Короткі теоретичні відомості
Питання для повторення
- Особливості роботи з покажчиками.
Постановка задачі
Списком (лінійним списком) є послідовність елементів певного типу. Найчастіше абстрактний тип даних список використовує такі оператори:
- Створення порожнього списку.
- Визначення позиції заданого елемента у списку.
- Видалення елемента із заданої позиції;
- Вставка заданого елемента у певну позицію.
При реалізації списків можливість переповнення структури не розглядається.
Опис алгоритмів
Опис структури даних
- набір комірок, кожна з яких містить елемент списку (дані) і покажчик на наступну комірку списку (наступний);
- комірка (заголовок), яка містить покажчик на перший елемент списку.
1. Створення порожнього списку
Псевдокод
відвести пам'ять для елемента
покажчик елемента = NULL
покажчик елемента = NULL
2. Визначення позиції елемента
Ідея
Проглядати список, поки не зустрінеться не буде досягнуто кінець списку (покажчик NULL) або не зустрінеться шуканий елемент.Псевдокод
tmp=заголовок
поки (tmp != NULL)
{
якщо (tmp.дані = = параметр)
то повернути tmp
}
повернути tmp
поки (tmp != NULL)
{
якщо (tmp.дані = = параметр)
то повернути tmp
}
повернути tmp
3. Видалення зі списку елемента, що слідує за елементом, на який вказує покажчик p
Ідея
Переспрямувати p.наступний на елемент, наступний за p.наступнийПсевдокод
p.наступний=p.наступний.наступний
4. Вставка елемента в позицію p
Ідея
Переспрямувати p.наступний на новий елемент, а покажчик нового елемента наПсевдокод
виділити пам’ять для елементу tmp
tmp.дані=параметр
tmp.наступний=p.наступний
p.наступний=tmp
tmp.дані=параметр
tmp.наступний=p.наступний
p.наступний=tmp
Завдання для виконання
Постановка задачі
Скласти програму, що забезпечує виконання операцій з лінійним списком. Програма повинна забезпечувати- реалізацію основних процедур роботи зі списком;
- виконання вказаних викладачем дій зі списком.
Технічні умови
- елементи списка є цілими числами.
Хід роботи
- Скласти програму List.cpp, де реалізувати основні функції роботи зі списком.
- Виконати в покроковому режимі вказані викладачем дії зі списком, записавши у звіт зміни, що відбуваються у списку.
Запитання для самоконтролю
- Які основні оператори використовує абстрактний тип даних список?
- Поясніть особливості реалізації списка за допомогою масива.
- Поясніть особливості реалізації списка за допомогою покажчиків.
- Порівняйте різні реалізації списку.
- Поясніть виконання основних операторів списку при його реалізації за допомогою покажчиків.