Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание к ИДЗ блоковые списки.doc
Скачиваний:
31
Добавлен:
20.06.2014
Размер:
342.53 Кб
Скачать

2. Цель работы

Получение навыков создания и использования блоковых, индексированных, индексированных блоковых связных линейных списков; анализ эффективности работы с перечисленными видами нестандартных структур данных.

3. Задание

Осуществить программную реализацию одного из трех типов списков (п. 1), согласно указанному преподавателем варианту задания из таблицы приложения, которая должна включать:

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

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

  3. Оценку производительности, включающую расчет временных характеристик. В этом случае списки формируются многократно по элементам, генерируемым в соответствии с заданным законом распределения. Для блоковых списков оценка производительности включает выбор оптимального значения M и оценку процента фрагментации при резком увеличении частоты операций произвольного доступа. В обоих случаях необходимо графически показать функции – зависимости среднего времени выполнения операций произвольного доступа от количества элементов M в блоке и зависимости процента фрагментированности от упомянутой частоты. Для индексированных списков следует провести сравнительный анализ среднего времени выполнения операций произвольного доступа с соответствующим временем в неиндексированном списке и оценить зависимость (показать график) среднего времени произвольного доступа от размера индексной таблицы. Для индексированных блоковых списков следует выбирать оптимальное значение M и оценивать зависимость среднего времени произвольного доступа от размера индексной таблицы.

Программа должна предоставлять удобный интерфейс пользователя для осуществления перечисленных выше операций.

  1. Содержание отчета

  1. Титульный лист.

  2. Задание кафедры, номер варианта.

  3. Цель работы.

  4. Краткая теория.

  5. Алгоритм.

  6. Листинг программы с необходимыми комментариями.

  7. Результаты выполнения.

  8. Выводы по работе.

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

1. Линейные связные структуры данных.

2. Представление и интерфейс блокового списка.

3. Вставка в блоковый список, удаление из блокового списка.

4. Индексированные списки.

5. Равномерная и неравномерная индексация.

6. Индексированные блоковые списки.

Библиографический список

  1. Ахо, А. В. Структуры данных и алгоритмы / А. В. Ахо, Дж. Хопкрофт, Дж. Д. Ульман. – М.: "Вильямс", 2000. – 384 с.

  2. Гаев, Л. В. Моделирование случайных величин: методические указания к лабораторным работам студентов / Л.В. Гаев. ­­– Липецк: ЛипПИ, 1993. – 16 с.

Приложение

Таблица

Варианты заданий

№ варианта

Наличие кэша

Вид списка

Индексирование

Вставка

Тип элемента

Закон распределения

блоковый

индексированный

индексированный блоковый

Равномерное

Неравномерное

Стратегия 1

Стратегия 2

int

float

char

int[]

float[]

char[]

Равномерный

Нормальный

Показательный

1

+

+

+

+

+

2

+

+

+

+

3

+

+

+

+

4

+

+

+

+

+

5

+

+

+

+

6

+

+

+

+

+

+

7

+

+

+

+

8

+

+

+

+

+

9

+

+

+

+

10

+

+

+

+

+

+

11

+

+

+

+

+

12

+

+

+

+

+

13

+

+

+

+

+

+

14

+

+

+

+

+

+

15

+

+

+

+

+

+

+

+

16

+

+

+

+

+

17

+

+

+

+

+

18

+

+

+

+

+

+

+

19

+

+

+

+

+

+

20

+

+

+

+

+

+

Окончание таблицы

№ варианта

Наличие кэша

Вид списка

Индексирование

Вставка

Тип элемента

Закон распределения

блоковый

индексированный

индексированный блоковый

равномерное

неравномерное

стратегия 1

стратегия 2

int

float

char

int[]

float[]

char[]

равномерный

нормальный

показательный

21

+

+

+

+

+

22

+

+

+

+

+

+

23

+

+

+

+

+

+

+

+

+

24

+

+

+

+

+

25

+

+

+

+

+

+

26

+

+

+

+

+

27

+

+

+

+

+

28

+

+

+

+

+

29

+

+

+

+

+

+

30

+

31

+

+

+

+

+

+

+

32

+

+

+

+

+

+

33

+

+

+

+

+

+

34

+

+

+

+

+

+

+

+

+

+

35

+

+

+

+

+

+

+

+

36

+

+

+

+

+

+

37

+

+

+

+

+

+

+

38

+

+

+

+

+

+