Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структуры и алгоритмы обработки данных.doc
Скачиваний:
348
Добавлен:
12.03.2015
Размер:
1.81 Mб
Скачать

4.4. Практические задания.

Задание 1. Реализовать линейный динамический двунаправленный список со следующим набором операций:

  • просмотр списка в прямом и обратном направлениях

  • поиск заданного элемента в прямом и обратном направлениях

  • добавление элемента перед или после заданного

  • удаление заданного элемента

Список должен иметь заголовок и быть кольцевым. Пустой список содержит только заголовок, оба ссылочных поля которого указывают на сам заголовок. Адрес заголовка задается глобальной ссылочной переменной. Все операции оформляются как подпрограммы. Добавление нового элемента после заданного должно работать и для пустого списка (см. задание 4 из предыдущей темы).

Задание 2. Реализовать набор подпрограмм для выполнения основных операций с массивом списков. Каждый элемент массива хранит только указатель на начало связанного списка. Сам базовый массив работает на основе сдвиговых операций. Основные операции:

  • полный проход по всей структуре

  • поиск заданного элемента

  • добавление нового элемента в массив с пустым связанным списком

  • добавление нового элемента в связанный список

  • удаление элемента из связанного списка

  • удаление элемента из базового массива

Задание 3. Реализовать набор подпрограмм для выполнения основных операций со списком списков. Требования аналогичны предыдущему заданию.

4.5. Контрольные вопросы по теме

  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. Как выполняется удаление элемента из массива списков?

  27. Как выполняется удаление элемента из списка списков?

  28. Какие особенности имеет операция добавление элемента в массив или список списков?