0% нашли этот документ полезным (0 голосов)
61 просмотров4 страницы

DZ ST C++ 05

Документ содержит описание домашних заданий по курсу объектно-ориентированного программирования на C++. Задания касаются реализации различных динамических структур данных: односвязного списка, двусвязного списка, бинарного дерева.

Загружено:

Михаил Круглов
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
61 просмотров4 страницы

DZ ST C++ 05

Документ содержит описание домашних заданий по курсу объектно-ориентированного программирования на C++. Задания касаются реализации различных динамических структур данных: односвязного списка, двусвязного списка, бинарного дерева.

Загружено:

Михаил Круглов
Авторское право
© © All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
Вы находитесь на странице: 1/ 4

Домашнее задание №15

Курс
«Объектно-ориентированное
программирование на C++»
Встреча №15
Тема: динамические структуры данных — односвязный
список
Задание 1.
Реализуйте стек в виде односвязного списка. Требуется
реализовать типичные операции по работе со стеком.
При переполнении стека нужно увеличивать его размер.
Задание 2.
В существующий класс односвязного списка добавить:
операцию клонирования списка (функция должна возвра-
щать адрес головы клонированного списка), перегрузить
оператор + (оператор должен возвращать адрес головы
нового списка, содержащего элементы обоих списков для
которых вызывался оператор), перегрузить оператор *
(оператор должен возвращать адрес головы нового списка,
содержащего только общие элементы обоих списков для
которых вызывался оператор).
Домашнее задание №16

Встреча №16
Тема: динамические структуры данных — двусвязный
список
Задание 1.
Реализовать шаблонный класс "Очередь" на основе двусвяз-
ного списка.
Задание 2.
В существующий класс двусвязного списка добавить:
операцию клонирования списка (функция должна возвра-
щать адрес головы клонированного списка), перегрузить
оператор + (оператор должен возвращать адрес головы
нового списка, содержащего элементы обоих списков для
которых вызывался оператор), перегрузить оператор *
(оператор должен возвращать адрес головы нового списка,
содержащего только общие элементы обоих списков для
которых вызывался оператор).
Задание 3.
Создать шаблонный класс-контейнер Array, который пред-
ставляет собой массив, позволяющий хранить объекты
заданного типа. Класс должен быть реализован с помо-
щью двусвязного списка. Класс должен реализовывать
следующие функции:
a. GetSize — получение размера массива (количество
элементов, под которые выделена память).
b. SetSize(int size, int grow = 1) — установка размера мас-
сива (если параметр size больше предыдущего размера
массива, то выделяется дополнительный блок памяти,
если нет, то "лишние" элементы теряются и память
Домашнее задание №16

освобождается); параметр grow определяет для какого


количества элементов необходимо выделить память,
если количество элементов превосходит текущий раз-
мер массива. Например, SetSize(5, 5); означает, что при
добавлении 6-го элемента размер массива становится
равным 10, при добавлении 11-го — 15 и т. д.
c. GetUpperBound — получение последнего допустимого
индекса в массиве. Например, если при размере мас-
сива 10, вы добавляете в него 4 элемента, то функция
вернет 3.
d. IsEmpty — массив пуст?
e. FreeExtra — удалить "лишнюю" память (выше послед-
него допустимого индекса);
f. RemoveAll — удалить все;
g. GetAt — получение определенного элемента (по ин-
дексу);
h. SetAt — установка нового значения для определенного
элемента (индекс элемента должен быть меньше те-
кущего размера массива);
i. operator [] — для реализации двух предыдущих функ-
ций­;
j. Add — добавление элемента в массив (при необходимо-
сти массив увеличивается на значение grow функции
SetSize);
k. Append — "сложение" двух массивов;
l. operator =;
m. GetData — получения адреса массива с данными;
n. InsertAt — вставка элемента(-ов) в заданную позицию;
o. RemoveAt — удаление элемента(-ов) с заданной позиции.
Домашнее задание №17

Встреча №17
Тема: Бинарное дерево
Задание.
Реализовать базу данных ГАИ по штрафным квитанциям
с помощью бинарного дерева. Ключом будет служить
номер автомашины, значением узла — список право-
нарушений. Если квитанция добавляется в первый раз,
то в дереве появляется новый узел, а в списке данные по
правонарушению; если нет, то данные заносятся в су-
ществующий список. Необходимо также реализовать
следующие операции:
• Полная распечатка базы данных (по номерам машин
и списку правонарушений, числящихся за ними);
• Распечатка данных по заданному номеру;
• Распечатка данных по диапазону номеров.

Вам также может понравиться