Лабораторная работа № 14

"Классы и объекты - динамические структуры"
 

Цель: Разработка простейших классов на примере разработки моделей динамических информационных структур (одно и двунаправленных списков).

 

 Постановка задачи

Написать программу, в которой создаются динамические структуры, и  выполнить их обработку в соответствии со своим вариантом.

 

Для каждого вариант разработать следующие методы:

1.  Конструктор пустого списка.

2.  Добавление элемента в список (в соответствии со своим вариантом).

3.  Удаление элемента из списка (в соответствии со своим вариантом).

4.  Печать списка.

5.  Запись списка в файл.

6.  Восстановление списка из файла.

7.  Деструктор списка (уничтожение).

 

 

Порядок выполнения работы

 

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

2.  Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы.

3.  Написать функцию для печати списка. Функция должна предусматривать вывод сообщения, если список пустой.

4.  Написать функции для удаления и добавления элементов списка в соответствии со своим вариантом.

5.  Выполнить изменения в списке и печать списка после каждого изменения.

6.  Написать функцию для записи списка в файл.

7.  Написать функцию для уничтожения списка.

8.  Записать список в файл, уничтожить его и выполнить печать (при печати должно быть выдано сообщение "Список пустой").

9.  Написать функцию для восстановления списка из файла.

10.         Восстановить список и распечатать его.

11.         Уничтожить список.

 

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

 

1.  Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него элемент с заданным номером, добавить элемент с заданным номером;

 

2.  Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него элемент с заданным ключом, добавить элемент перед элементом с заданным ключом;

 

3.  Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него К элементов, начиная с заданного номера, добавить элемент перед элементом с заданным ключом;

 

4.  Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него элемент с заданным номером, добавить К элементов, начиная с заданного номера;

 

5.  Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него К элементов, начиная с заданного номера, добавить К элементов, начиная с заданного номера;

 

6.  Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него элемент с заданным номером, добавить элемент в начало списка.

 

7.  Сформировать двунаправленный список. Удалить из него первый элемент, добавить элемент в конец списка.

 

8.  Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него элемент после элемента с заданным номером, добавить К элементов в начало списка.

 

9.  Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него К элементов перед элементом с заданным номером, добавить К элементов в конец списка.

 

10.         Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Добавить в него элемент с заданным номером, удалить К элементов из конца списка.

 

11.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером.

 

12.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить из него Элементы, с одинаковыми ключевыми полями. Добавить элемент после элемента с заданным ключевым полем.

 

13.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить из него К первых элементов. Добавить элемент после элемента, начинающегося с указанного символа.

 

14.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить из него К элементов с указанными номерами. Добавить К элементов с указанными номерами.

 

15.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить К элементов из конца списка. Добавить элемент после элемента с заданным ключом.

 

16.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным ключом. Добавить К элементов в конец списка.

 

17.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным номером. Добавить К элементов в начало списка.

 

18.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным ключом. Добавить К элементов в начало списка.

 

19.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить  К элементов с заданными номерами. Добавить К элементов в начало списка.

 

20.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным ключом. Добавить  по К элементов в начало и в конец списка.

 

21.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элементы перед и после элемента с заданным ключом. Добавить  по К элементов в начало и в конец списка.

 

22.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным ключом. Добавить К элементов перед элементом с заданным ключом.

 

23.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным ключом. Добавить К элементов после элемента с заданным ключом.

 

24.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным номером. Добавить по К элементов перед и после элемента с заданным ключом.

 

25.         Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным ключом. Добавить К элементов перед элементом с заданным номером.

 

 

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

 

1.  Постановка задачи.

2.  Описание класса, методы для работы со списком.

3.  Функция main().

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

 

 

 Пример учебной реализаций можно посмотреть здесь.