Содержание
- 2. Основные понятия Переменные для хранения адресов областей памяти называются указателями. В указателе можно хранить адрес данных
- 3. Виды указателей стандартные: var p : pointer; определяемые программистом: type pword = ^word; var pw :
- 4. Операции с указателями присваивание; p1 := p2; проверка на равенство и неравенство: if p1 = p2
- 5. Операция разадресации применяется для обращения к значению переменной, адрес которой хранится в указателе: var p1: ^word;
- 6. Операция @ и функция addr позволяют получить адрес переменной: var w : word; pw : ^word;
- 7. Стандартные функции для работы с указателями: seg(x) : word — возвращает адрес сегмента для х; ofs(x)
- 8. Динамические переменные создаются в хипе во время выполнения программы с помощью подпрограмм new или getmem: Процедура
- 9. Пример работы с динамическими переменными type rec = record d : word; s : string; end;
- 10. p1^ := 3; p2^ := 2; p3^.d := p1^; p3^.s := 'Вася'; Динамические переменные можно использовать
- 11. Мусор При присваивании указателю другого значения старое значение теряется. Это приводит к появлению так называемого мусора
- 12. Освобождение памяти Процедура Dispose(var p : pointer) освобождает участок памяти, выделенный New. Процедура Freemem(var p :
- 13. Освобождение памяти из-под группы переменных Если требуется освободить память из-под нескольких переменных одновременно, можно применять процедуры
- 14. Вспомогательные функции Функция Maxavail : longint возвращает длину в байтах самого длинного свободного участка динамической памяти.
- 15. Лекция Динамические структуры данных
- 16. Виды динамических структур В программах чаще всего используются: линейные списки стеки Элемент динамической структуры состоит из
- 17. Стек Реализует принцип обслуживания LIFO (Last In – First Out). Для работы со стеком используются две
- 18. Добавление элемента в стек 1. Выделение памяти new(p); 2. Занесение данных p^.d := 10; p^.s :=
- 19. Выборка из стека Выборка данных with top^ do writeln (d, s); 4. Освободить память dispose(p); 2.
- 20. Пример работы со стеком Программа формирует стек из пяти целых чисел и их текстового представления и
- 21. { -------------------------------- занесение в стек ----- } function push(top : pnode; d : word; const s
- 22. { ------------------------------- главная программа ----- } begin top := nil; { занесение в стек: } for
- 23. Очередь Реализует принцип обслуживания FIFO Начальное формирование очереди: new(beg); beg^.d := 100; beg^.s := 'Вася'; beg^.p
- 24. Выборка элемента из начала with beg^ do writeln (d, s); p := beg; beg := beg^.p;
- 25. Линейные списки односвязные двусвязные кольцевые Каждый элемент списка содержит ключ, идентифицирующий этот элемент. Операции со списком:
- 26. Пример работы со списком Программа, формирующая односвязный список из пяти элементов, содержащих число и его текстовое
- 27. var beg : pnode; { указатель на начало списка } i, key : word; s :
- 28. { добавление элемента в конец списка } procedure add(var beg : pnode; d : word; const
- 29. { -------------------- поиск элемента по ключу ----- } function find(beg : pnode; key : word; var
- 30. { ----------------------------- вставка элемента ----- } procedure insert(beg : pnode; key, d : word; const s
- 31. { --------------------------- удаление элемента ----- } procedure del(var beg : pnode; key : word); var p
- 32. { ------------------------------------ вывод списка ----- } procedure print(beg : pnode); var p : pnode; { указатель
- 33. { ------------------------- главная программа ----- } begin for i := 1 to 5 do add(beg, i,
- 34. 2: begin { удаление } writeln('Ключ для удаления?'); readln(key); del(beg, key); end; 3: begin { вывод
- 35. Бинарное дерево Бинарное дерево — динамическая структура данных, состоящая из узлов, каждый из которых содержит кроме
- 36. Операции Для бинарных деревьев определены операции: включения узла в дерево; поиска по дереву; обхода дерева; удаления
- 37. Поиск по дереву function find(root : pnode; key : word; var p, parent : pnode) :
- 38. Включение в дерево procedure insert(var root : pnode; key : word); var p, parent : pnode;
- 39. Обход дерева procedure print_tree( дерево ); begin print_tree( левое_поддерево ) посещение корня print_tree( правое_поддерево ) end;
- 40. Удаление из дерева Найти узел, который будет поставлен на место удаляемого. Реорганизовать дерево так, чтобы не
- 41. Удаление узла, не имеющего потомков Удаление узла с одним потомком
- 42. Удаление узла с двумя потомками
- 44. Скачать презентацию