Тип абстрактних даних: ADT може бути визначений як набір значень даних та пов'язаних з ними операцій, які точно визначені незалежно від будь-якої конкретної реалізації. Таким чином, абстрактний тип даних - це організований збір інформації та набір операцій, що використовуються для управління цією інформацією. Набір операцій визначає інтерфейс ADT. Поки ADT виконує умови інтерфейсу, насправді не має значення, як реалізується ADT. Оскільки в ADT значення даних та операції визначаються з математичною точністю, а не як реалізація на комп'ютерній мові, ми можемо міркувати про ефекти операцій, відношення до інших абстрактних типів даних, чи реалізує програма тип типу даних тощо.
Основна відмінність між абстрактним типом даних (ADT) і конкретним типом даних полягає в тому, що останні дозволяють нам подивитися на конкретні уявлення, тоді як перші приховують представлення від нас. ADT може бути чистим ADT або оновленим ADT. Чистий ADT - це той, де всі операції є чистими функціями. Це означає, що операції не мають побічних ефектів. Зокрема, вони не змінюють та не оновлюють там вхідні аргументи. Вони просто використовують ці аргументи для отримання результатів, які є свіжими значеннями ADT (або інших типів). Більшість типів бетону є чистими. Наприклад, жодна операція над цілими числами фактично не змінює ціле число. Натомість усі операції, такі як "+", дають нові результати.
Оновлений ADT - це той, де деякі операції фактично змінюють значення ADT. Наприклад, припустимо, що у нас була операція під назвою "pop", яка взяла стек як аргумент та змінила її. ("На місці", "руйнівно"), видаливши найвищий пріоритетний пункт. Ця операція вважатиметься нечистою, і вся АДТ тоді була б також нечистою. ADT може бути визначений користувачем ADT.
Ми знаємо, що абстрактний тип даних - це тип даних, який задовольняє наступним двом умовам:
Представлення або визначення типу та операцій містяться в одній синтаксичній одиниці.
Представлення об'єктів типу приховано від програмних одиниць, які використовують тип, тому лише ті прямі операції, які можливі на цих об'єктах, є тими, що передбачені у визначенні типу.
Визначений користувачем абстрактний тип даних повинен містити:
Визначення типу, яке дозволяє програмним підрозділам оголошувати змінні типу, але приховує подання цих змінних.
Сукупність операцій по маніпулюванню об'єктами типу.
Прикладом визначеного користувачем абстрактного типу даних є структура. 'C' забезпечує чотири основні типи: int, char, float та double. Однак 'C' також надає програмісту можливість визначати свої власні типи. Структура - один із таких прикладів. Структура - це сукупність різних частин, де кожна частина має деякий існуючий тип.
struct abc
{int x;
float y;
};
Вищеописане визначення структури не створює змінних, а створює новий тип. Змінні цього типу можуть створюватися аналогічно змінним вбудованого типу.
struct abc a;
Ключове слово typedef дозволяє нам створювати нові імена типів для наших нових типів.
Наприклад:
typedef struct abc AB;
де AB - це нове ім'я типу, яке тепер можна використовувати для створення нових типів.
AB b;
Структури даних: Характерні особливості структур даних:
Він містить елементи даних компонентів, які можуть бути атомними або іншою структурою даних (все ще домен).
Набір операцій над одним або кількома компонентами.
Визначає правила того, як компоненти стосуються один одного та до структури в цілому (твердження).
Структури даних:
Структура даних може бути статичною або динамічною. Статична структура даних має фіксований розмір. Це значення відрізняється від значення статичного модифікатора. Масиви статичні; як тільки ми визначимо кількість елементів, які він може містити, число не змінюється. Динамічна структура даних зростає та скорочується під час виконання відповідно до її вмісту. Динамічна структура даних реалізується за допомогою посилань.
Структури даних можна додатково класифікувати на лінійні структури даних та нелінійні структури даних. У лінійних структурах даних кожен компонент має унікального попередника та наступника, за винятком першого та останнього елементів, тоді як у випадку нелінійних структур даних такого обмеження немає, оскільки елементи можуть бути впорядковані у будь-який бажаний спосіб, обмежений способом, який ми використовуємо представляють такі типи.