Объявите заданную динамическую структуру данных и разработайте функции обработки значений данных этой структуры. «Главная» программа (main) осуществляет тестирование разработанных программных средств.
1) Для хранения целых чисел используется следующая структура данных:

Функции:
· добавить значение (в зависимости от первой цифры число попадает в конец одного из списков)
· вывести текущее состояние структуры данных (вывести все значения в виде двумерного массива)
· найти значение в структуре данных (функция возвращает 1, если значение найдено, и 0 – в противном случае)
2) Множество целых чисел представляется как однонаправленный линейный список.
Функции:
· найти значение в множестве (функция возвращает 1, если значение найдено, и 0 – в противном случае)
· добавить значение в множество (если значение уже есть в множестве, то оно в множество не добавляется. Для проверки используйте функцию «найти значение в множестве»)
· вывести текущее состояние множества (вывести все значения)
· определить мощность множества (подсчитать количество чисел в множестве)
3) Многочлен
представляется как однонаправленный линейный список, элемент которого имеет следующую структуру:

Например, многочлену
будет соответствоватьсписок:

Функции:
· добавить элемент многочлена в список
· сформировать многочлен (используется функция «добавить элемент многочлена в список»)
· вывести многочлен (вывести общий вид многочлена; для возведения в степень использовать символ «^», например, х^3)
· вычислить многочлен (функция возвращает значение многочлена при заданном х)
4) «Длинное» целое число представляется как однонаправленный линейный список, где каждая цифра – элемент списка.
Функции:
· сформировать «длинное» целое число (функция формирует список из цифр числа)
· вывести список (функция выводит «длинное» целое число)
· сложить два «длинных» целых числа (функция получает на вход два списка и возвращает третий список, каждый элемент которого содержит цифру, равную сумме, соответствующих цифр исходных списков. Фактически, результат функции – сумма двух чисел)
5) Циклический однонаправленный список целых чисел имеет следующуюструктуру:

Функции:
· добавить в список (функция добавляет элемент в конец списка)
· вывести список (функция выводит все значения, которые хранятся в списке)
· выбрать элемент из списка по номеру (функция удаляет элемент, отсчитывая его в соответствии с заданным номером от начала списка. Номер может быть больше количества элементов списка)
6) Динамический массив из N комплексных чисел.
Функции:
· сформировать массив
· вывести массив (функция выводит все комплексные числа)
· определить комплексное число как сумму всех комплексных чисел массива
· найти комплексное число с максимальным модулем (модуль:
, где re – действительная часть, im – мнимая часть комплексного числа)
7) Стек как динамический массив из N целых чисел.
Функции:
· поместить значение в стек;
· извлечь значение из стека (функция возвращает значение из вершины стека и удаляет его из стека)
· стек заполнен (функция возвращает значение «истина», если стек заполнен)
· стек пуст (функция возвращает значение «истина», если в стеке нет значений)
· вывести стек (не изменяя содержимое стека функция, выводит все значения, которые хранятся в стеке)
8) Стек как однонаправленный линейный список целых чисел.
Функции:
· поместить значение в стек (функция добавляет значение в начало списка);
· извлечь значение из стека (функция возвращает значение из начала списка и удаляет его из списка)
· стек пуст (функция возвращает значение «истина», если в списке нет значений)
· вывести стек (не изменяя содержимого списка, функция выводит все значения, которые хранятся в списке)
9) Очередь как однонаправленный линейный список целых чисел. Задана максимальная длина очереди – N.
Функции:
· поместить значение в очередь (функция добавляет значение в конец списка);
· выбрать значение из очереди (функция возвращает значение из начала списка и удаляет его из списка)
· длина очереди (функция возвращает количество элементов в списке)
· очередь заполнена (функция возвращает значение «истина», если количество элементов списка равно N)
· вывести очередь (не изменяя содержимого списка, функция выводит все значения, которые хранятся в списке)
10) Двунаправленный линейный список целых чисел. Каждый элемент списка имеет указатель на следующий элемент списка и указатель на предыдущий элемент.
Функции:
· поместить значение в список (функция добавляет значение в конец списка);
· удалить значение из списка (функция удаляет значение из конца списка)
· вставить значение в список после элемента с порядковым номером M (функция добавляет новый элемент в список после элемента с указанным номером. Если в списке меньше элементов, чем M, функция выводит предупредительное сообщение и не изменяет структуру списка)
· вывести список в прямом порядке (не изменяя содержимого списка, функция выводит все значения, которые хранятся в списке, от начала до конца списка)
· вывести список в обратном порядке (не изменяя содержимого списка, функция выводит все значения, которые хранятся в списке, от конца списка к началу)
КЛАССЫ И ОБЪЕКТЫ
Подход к разработке программных средств, в основе которого лежит объектная декомпозиция программной системы, получил название объектно-ориентированного.
Объектная декомпозиция заключается в представлении программной системы в виде совокупности классов и объектов, которые наиболее естественным образом отражают предметную область работы системы. При этом иерархический характер системы отражается в иерархии классов, а ее функционирование рассматривается как взаимодействие объектов этих классов.
Объект обладает индивидуальностью и поведением. Индивидуальность объекта, его свойства – это значения атрибутов (данных), которые определяют его состояние. Поведение – это совокупность методов (функций), определяющих взаимодействие объекта с "внешней" средой и изменяющих его состояние. Таким образом, объект объединяет данные (свойства) и код (поведение) в единое целое. Каждый объект является представителем некоторого класса.
Класс – это совокупность однотипных объектов. Класс определяет общие свойства для всех его объектов. Графическое изображение класса в нотации языка UML (Unified Modeling Language) следующее (рисунок 4.1):

Рисунок 4.1 – Графическое представление класса
Таким образом определение класса включает:
class имя_класса// Определение класса
{
// Член класса может быть:
// private (закрытый) – доступный только внутри методов и
// друзей этого класса;
// protected (защищенный) – доступный только внутри методов, друзей этого
// класса и производных от него классов;
// public (открытый) – доступный из произвольной программной среды
// Данные
private:
объявление данных;
// Методы
public:






