Читать курсовая по информационному обеспечению, программированию: "Шаблонное хранилище данных на базе структуры односвязного списка списков в памяти" Страница 2

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

набор полей для работы с элементами списка.

Шаблонный класс element имеет указатель на объект шаблонного класса (T* obj), указатель на следующий элемент списка (element* next), и конструктор без параметров, конструктор с параметрами, который получает параметром указатель на объект шаблонного класса (element (T *obj)). Также в шаблонном классе element имеется метод print (), отвечающий за вывод элемента списка на экран.

Шаблонный класс list содержит указатель на начало списка (element* begin), указатель на конец списка (element* end), конструктор без параметров (list ()) и набор методов, позволяющих работать со списком через систему меню.

Шаблонный класс master_list включает в себя конструктор с параметрами (master_list (int value)), а также набор полей, методов и переопределённых операций, необходимых для работы с объектом данного класса.

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

Так как для записи в файл у хранящегося объекта должны быть переопределены операции ввода и вывода, то был создан класс Int ("обёртка") специально для работы с целочисленными значениями стандартного типа int, а именно для записи в файл посредством перегруженной операции ввода в поток или для чтения из файла посредством перегруженной операции вывода из потока.

Вся структура имеет вид, показанный на рис. 1.

Рис. 2

2.2 Описание используемых форматов данных

В классе master_list содержится пять общедоступных полей, два из которых являются динамическими типа list* (поле list* begin и list*end), три других - нединамическими типа int.

В классе list содержится четыре поля: одно поле типа int и два поля типа element (поле *begin - указатель на начальный элемент списка, *end - указатель на конечный элемент списка) и одно поле типа list (*next - указатель на следующий элемент в списке).

В классе element содержится два общедоступных поля: типа T (поле *obj - указатель на объект класса) и типа element (поле *next - указатель на следующий элемент списка).

В пользовательском классе man содержится три общедоступных поля: два типа int и одно поле типа char*.

В "обертке", в классе Int содержится одно общедоступное поле типа int.

2.3 Описание основных алгоритмов и их особенностей 2.3.1 Добавление в список списка верхнего уровня

За добавление нового списка в список верхнего уровня отвечает функция void master_list:: push (T* obj). Данная функция объявляется в шаблонном классе master_list и получает параметром указатель на объект нашего шаблонного класса. Новый список добавляется в конец списка верхнего уровня. Функция имеет следующий алгоритм:

Если список верхнего уровня пуст (рис. 3.1):

. Объявляется указатель на начальный список в списке верхнего уровня.

2. Он является и началом списка верхнего уровня и концом.

. Вызов функции добавления элементов в список из класса list (заполнение списка элементами, число которых не превышает рекомендованного размера списка - заданного заранее значения):

3.1. Создается новый элемент.

3.2. Если список был пуст - он становится первым и последним элементом.

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

Если список верхнего уровня не пуст:

. Объявляется указатель новый список в списке верхнего


Интересная статья: Основы написания курсовой работы