Содержание
- 2. 14.09.2015 Рекурсивная обработка линейных списков Напоминание материала 1-го курса о линейных списках Л1-список (линейный однонаправленный) как
- 3. 14.09.2015 Рекурсивная обработка линейных списков Об абстракции при разработке программ Каждому этапу разработки программы соответствует свой
- 4. 14.09.2015 Рекурсивная обработка линейных списков Абстракция данных Спецификация абстрактных данных – это: Заголовок - имя абстрактного
- 5. 14.09.2015 Рекурсивная обработка линейных списков Использование спецификаций в процессе конструирования программ позволяет: Формулировать задачу Описывать её
- 6. 14.09.2015 Рекурсивная обработка линейных списков Схематичное (модельное) представление линейного списка Модель Л1-списка (выделен текущий элемент)
- 7. 14.09.2015 Рекурсивная обработка линейных списков Л1-список как абстрактный тип данных
- 8. 14.09.2015 Рекурсивная обработка линейных списков Л1-список как абстрактный тип данных
- 9. 14.09.2015 Рекурсивная обработка линейных списков Представление и реализация линейных списков (например, Л1-списка): Непрерывная реализация Ссылочное представление
- 10. 14.09.2015 Рекурсивная обработка линейных списков Непрерывная реализация на базе вектора Линейный список представлен одномерным массивом так,
- 11. 14.09.2015 Рекурсивная обработка линейных списков Непрерывная реализация на базе вектора Очевидный недостаток – необходимость сдвига элементов
- 12. 14.09.2015 Рекурсивная обработка линейных списков Ссылочное представление в связанной (динамической) памяти Пример операции «удалить элемент списка»:
- 13. 14.09.2015 Рекурсивная обработка линейных списков Ссылочное представление на базе вектора Пример операции «удалить элемент списка»:
- 14. 14.09.2015 Рекурсивная обработка линейных списков Литература Алексеев А. Ю., Ивановский С. А., Куликов Д. В. Динамические
- 15. 14.09.2015 Рекурсивная обработка линейных списков Конец вводной части Далее Рекурсивная обработка линейных списков
- 16. 14.09.2015 Рекурсивная обработка линейных списков Литература Основная Алексеев А. Ю., Ивановский С. А., Куликов Д. В.
- 17. 14.09.2015 Рекурсивная обработка линейных списков Учебный курс МТИ Абельсон Х., Сассман Д.Д., Сассман Д. Структура и
- 18. 14.09.2015 Рекурсивная обработка линейных списков Модельное представление линейного списка Скобочная запись: x = (a b c
- 19. 14.09.2015 Рекурсивная обработка линейных списков Функция-конструктор Cons (x, y) x = a - элемент базового типа,
- 20. 14.09.2015 Рекурсивная обработка линейных списков Иллюстрация Cons (Head (z), Tail (z)) = z Head(z) z Tail(z)
- 21. 14.09.2015 Рекурсивная обработка линейных списков Функция-конструктор Cons(x, y) Пустой список: ( ) или Nil Cons (a,
- 22. 14.09.2015 Рекурсивная обработка линейных списков Примеры Пример 1.1. Функция Size, вычисляющая число элементов (длину) списка. Случай
- 23. 14.09.2015 Рекурсивная обработка линейных списков Примеры Пример 1.2. Функция Sum, вычисляющая сумму элементов числового списка. Случай
- 24. 14.09.2015 Рекурсивная обработка линейных списков Пример 1.3. Число вхождений Numb(x, y) элемента x в список y
- 25. 14.09.2015 Рекурсивная обработка линейных списков Пример 1.4. Функция Concat, соединяющая два списка в один. Например, Concat
- 26. 14.09.2015 Рекурсивная обработка линейных списков Пример Concat((a b), (c d)) = Cons(a, Concat((b), (c d))). Concat((b),
- 27. 14.09.2015 Рекурсивная обработка линейных списков Разборка и сборка при выполнении функции Concat(y, z) y z
- 28. 14.09.2015 Рекурсивная обработка линейных списков Пример 1.5. Функция Append, добавляющая элемент x в конец списка y.
- 29. 14.09.2015 Рекурсивная обработка линейных списков Примечание: На рисунке не отражены вызовы селекторов Head и Tail. Вместо
- 30. 14.09.2015 Рекурсивная обработка линейных списков Сложность функции Reverse (начало) Concat(y, z) = if Null (y) then
- 31. 14.09.2015 Рекурсивная обработка линейных списков Сложность функции Reverse (продолжение) Reverse(y) = if Null (y) then Nil
- 32. 14.09.2015 Рекурсивная обработка линейных списков Пример 1.7. Функция Reverse2, обращающая список. Введем вспомогательную функцию Rev, второй
- 33. 14.09.2015 Рекурсивная обработка линейных списков Пример. Reverse2 (y) при y = (a b)
- 34. 14.09.2015 Рекурсивная обработка линейных списков Количество вызовов конструктора Cons при обращении функцией Reverse2 списка длины n.
- 35. 14.09.2015 Рекурсивная обработка линейных списков Определение скобочной записи линейного списка ::= | ::= Nil ::= ::=
- 36. Обозначения Здесь L_list (El) – линейный список из элементов типа El, Null_list – пустой список, Non_null_list
- 37. 14.09.2015 Рекурсивная обработка линейных списков Примеры (a . (b . (c . (d . Nil)))) →
- 38. Базовые функции: индикатор Null (предикат: список пуст), селекторы Head («голова» списка) и Tail («хвост» списка), конструктор
- 39. 14.09.2015 Рекурсивная обработка линейных списков Система правил (аксиом) А1−А5 A1) Null (Nil) = true; A2) Null
- 40. 14.09.2015 Рекурсивная обработка линейных списков Использование функции Cons для конструирования списков (a) = (a . Nil)
- 41. К правилу A5 Пусть z = Cons (x, y). Тогда A5 есть Cons (Head (z), Tail
- 43. Скачать презентацию