Стек, черга, дерево, граф.ppt
- Количество слайдов: 18
СТЕК, ЧЕРГА, ДЕРЕВО, ГРАФ
Стеком називається упорядкований набір елементів, в якому розміщення нових елементів і видалення існуючих відбувається лише з одного його кінця, який називається вершиною стеку.
Операції із стеком Додавання елементів – елемент розміщується у стеці – push(s, i) В стек s розміщують елемент і. Операція вибірки із стека i = pop(s). Кількість елементів у стеці необмежена. (в визначенні про це немає вказівок) Але може бути пустий стек. Операцію вибору елемента не можна застосувати до пустого стеку. Потрібна операція empty(s) Визначення верхнього елемент а стеку без його видалення stacktop(s) i=stacktop(s) еквівалентна i=pop(s); push(s, i)
Чергою називається упорядкований набір елементів, які можуть видалятися з одного її кінця (початок черги) і добавляються в інший кінець цього набору (кінець черги).
insert(q, x) ОПЕРАЦІЇ З ЧЕРГОЮ розміщення елемента в кінці черги x = remove(q) виділення елемента з початку черги empty(q) перевірка, чи пуста черга
ЛІНІЙНІ ПОВ'ЯЗАНІ СПИСКИ ptrnxt null info поле наступної адреси нульовий покажчик – кінець списку поле інформації
РЕАЛІЗАЦІЯ ПОВ`ЯЗАНИХ СПИСКІВ L 1 = 3, 7, 14, 6, 5, 37, 12 L 1 починається з 17 L 4= L 2= 17, 26 L 2 починається з 5 L 3 = 31, 19, 32 L 3 починається з 12 L 3= L 1= L 4 = 1, 18, 13, 11, 4, 15 L 4 починається з 4 26 11 5 1 17 13 19 14 4 31 6 37 3 32 7 15 12 18 0 10 16 25 1 2 19 13 22 8 3 24 21 0 9 0 0 6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
БІНАРНІ ДЕРЕВА Бінарне дерево – кінцева множина елементів, яке або пусте, або містить один елемент, який називають коренем дерева. Інші елементи множини поділяються на дві непересічні множини, кожна з яких сама є бінарним деревом. Ці підмножини називають лівим і правим під деревом. Кожний елемент бінарного дерева називають вузлом дерева.
Приклади бінарних дерев
Приклади бінарних дерев Корінь бінарного дерева (батько), а корені лівого і правого піддерев (лівий і правий сини). Якщо вузол не має синів, то він є лист. Два вузла брати, якщо вони сини одного батька. Якщо кожний вузол бінарного дерева, який не є листом, має непусті праві і ліві піддерева, то дерево називається строго бінарним деревом.
РІВЕНЬ ВУЗЛА В БІНАРНОМУ ДЕРЕВІ Корінь має рівень 0. Рівень будь-якого іншого вузла має рівень на 1 більше рівня свого батька. Глибина бінарного дерева – це максимальний рівень листа дерева і дорівнюється довжині самого довгого шляху від кореня до листа. Повне бінарне дерево рівня n – це дерево, в якому кожний вузол рівня n є листом і кожний вузол рівня менше n має непусті праві і ліві піддерева.
ПРИКЛАД ЗАСТОСУВАННЯ ДЕРЕВ Знаходження дублікатів у ряду чисел 14 15 4 9 7 18 3 5 16 4 20 17 9 14 5
ГРАФИ Граф складається з множини вузлів (або вершин) і множини дуг. Кожна дуга вказується парою вузлів. Якщо дуги упорядковані (маємо стрілки), то граф – напрямлений. Древо – це граф, але граф не є обов`язково деревом. Ступінь вузла – це кількість дуг, які підходить і виходить з вузла. Полуступінь заходу – вузла n – кількість стрілок, для яких вузол є головкою стрілки. Полуступінь виходу вузла n – кількість стрілок, для яких вузол є хвостом стрілки.
Графи Напрямлений граф Зважений граф
РЕКУРСІЯ У програмуванні рекурсія - виклик функції (процедури) з неї ж самої, безпосередньо (проста рекурсія) або через інші функції (складна або непряма рекурсія), наприклад, функція A викликає функцію B, а функція B - функцію A. Кількість вкладених викликів функції або процедури називається глибиною рекурсії. n! = n·(n-1)! Будь яку рекурсивну функцію можна замінити циклом і стеком.
Приклад рекурсії Візьмемо казку-пісню «У попа була собака…» - це приклад рекурсії. Тут рекурсія обмежена розміром дошки, на якій писав піп, тобто, об`ємом ресурсів, що доступні: У попа была собака, он её любил, Она съела кусок мяса, он её убил, В землю закопал, Надпись написал: "У попа была собака, он её любил, Она съела кусок мяса, он её убил, В землю закопал, Надпись написал:
Порівняння ітераційного і рекурсивного процесів Ітераційний процес: 0! = 1 1! = 1 2! = 1· 2 3! = 1· 2· 3 4! = 1· 2· 3· 4 Рекурсивний процес 4! = 4· 3· 3· 2!= 4· 3· 2· 1!
ПОСЛІДОВНІСТЬ ФІБОНАЧЧІ 0, 1, 2, 3, 5, 8, 13, 21, 34, … fib(6) = fib(4) + fib(5) = fib(2) + fib(3) + fib(5) = = fib(0) + fib(1) + fib(3) + fib(5) = = 0 + 1 + fib(1) + fib(2) + fib(5) = = 1 + fib(0) + fib(1) + fib(5) = = 2 + 0 + 1 + fib(5) = = 3 + fib(3) + fib(4) = = 3 + fib(1) + fib(2) + fib(4) = = 3+ 1 + fib(0) + fib(1) + fib(4) = = 4 + 0 + 1 + fib(4) = = 5 + fib(2) + fib(3) = = 5 = fib(0) + fib(1) + fib(3) = = 5 + 0 + 1 + fib(1) + fib(2) = = 6 + 1 + fib(0) + fib(1) = = 7 + 0 p + 1 = 8


