Содержание
- 2. Динамічні структури даних Довільна програма створюється для обробки даних, від способу організації яких суттєво залежать алгоритми
- 3. Динамічні структури даних Виділення пам`яті під час виконання програми надає гнучкість у представлення даних. Пам`ять виділяється,
- 4. Динамічні структури даних Динамічні структури дозволяють гнучко й ефективно працювати з даними розмір яких заздалегідь невідомий,
- 5. Інструментарій С++ Елемент динамічної структури представляється структурою, що містить принаймні два поля: для збереження даних (довільні
- 6. Інструментарій С++ Для роботи з адресами пам`яті С++ пропонує досить чисельний набір інструментів. Розглядали раніше операції
- 7. Лінійні зв`язані списки Найпростіші динамічні структури даних – лінійні зв`язані списки. Як мінімум зберігається зв`язок поточного
- 8. Приклад Потрібно: побудувати зв`язний список з трьох елементів ; вивести інформацію, що розташована в елементах списку;
- 9. Представлення даних typedef struct Node {int dat; Node *next;} Listn, *Listp; !!! Не єдиний можливий спосіб
- 10. Побудова списку //побудова списку з 3 елементів Listp lform(int d1, int d2, int d3){ Listp p,
- 11. Відображення списку //відображення 3-елементного списку void lprint(Listp p){ cout dat next; cout dat next; cout dat
- 12. Вилучення списку //знищення 3-елементного списку void ldel(Listp p){ Listp t; t = p->next; delete p; p
- 13. Альтернативи Для представлення списку використовувати масив. 1 2 3 Порівнянні наведених способів. ??? Не є проблемою
- 14. Альтернативи Для представлення списку використовувати масив. 1 2 3 Порівнянні наведених способів: фіксований розмір масиву →
- 15. Альтернативи m n k 2 1 3 k m Ø n beg Порівнянні наведених способів. ???
- 16. Приклад Використовують також списки з двома зв`язками. Ø Ø pbeg pend Потрібно: побудувати подібний список з
- 17. Представлення даних struct Node {int dat; Node *next; Node *prev;}; !!! Не єдиний можливий спосіб визначити
- 18. Побудова списку //формування першого елемента списку Node *first(int d){ Node *pv = new Node; pv->dat =
- 19. Пошук у списку //пошук елемента за ключем Node *find(Node *const pbeg, int key){ Node *pv =
- 20. Вставка елемента у список Node *insert(Node *const pbeg, Node **pend, int key, int d) {if (Node
- 21. Вставка елемента у список
- 22. Вилучення елемента зі списку //вилучення елемента bool remove(Node **pbeg, Node **pend, int key){ if (Node *pkey
- 23. Вилучення елемента зі списку pkey pkey->prev pkey->next
- 24. Відображення списку //виведення списку void lprint(Node *pbeg){ Node *pv = pbeg; while (pv){ cout dat pv
- 25. Вилучення списку //знищення списку void ldel(Node *pbeg){ Node *pv; while (pbeg){ pv = pbeg; pbeg =
- 26. Зауваження Стандартна бібліотека С++ надає також інші можливості керування розподілом пам`яті. Не відбувається автоматичне повернення виділеної
- 27. Підсумки Розглянули лише найпростіші можливості, що до створення та обробки зв`язаних лінійних списків. Розглянуті можливості, приклади
- 28. Поради Одразу звільняти пам`ять (операція - delete), що була виділена (операцією new) та стала непотрібною. Писати
- 29. Задачі Лінійний зв`язний список містить послідовність цілих чисел. Написати функцію для: знаходження максимального з чисел; знаходження
- 30. Задачі Рядки тексту являють собою прізвища, які можуть повторюватися. Потрібно прочитати текст і надрукувати кожне прізвище
- 32. Скачать презентацию