Протестировать шаблон класса на следующих типах данных: целые, вещественные, символьные, строки.
Решить задачу
Составить программу, которая удаляет из списка L все элементы E, если такие есть.
Составить программу, которая в списке L заменяет первое вхождение списка L1 (если такое есть) на список L2.
Даны упорядоченные списки L1 и L2. Вставить элементы списка L2 в список L1, не нарушая его упорядоченности.
Составить программу, которая удаляет из списка L за каждым вхождением элемента E один элемент, если такой есть и он отличен от E.
Составить программу, которая удаляет из списка L все элементы с указанным значением.
Составить программу, которая проверяет, есть ли в списке L хотя бы два одинаковых элемента.
Составить программу, которая переносит в конец непустого списка L его первый элемент.
Составить программу, которая вставляет в список L за первым вхождением элемента E все элементы списка L, если E входит в L.
Составить программу, которая переворачивает список L, т.е. изменяет ссылки в этом списке так, чтобы его элементы оказались расположенными в обратном порядке.
Составить программу, которая в списке L из каждой группы подряд идущих одинаковых элементов оставляет только один.
Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2.
Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2.
Составить программу, которая формирует список L включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входит в другой из них.
Оставить в списке только первые вхождения одинаковых элементов.
Определить количество различных элементов списка.
Повторить дважды каждое вхождение элемента Е в список L.
Задание II. Разработать шаблон класса для работы с двунаправленным некольцевым списком. Реализовать следующие действия
добавление звена в начало списка;
удаление звена из начала списка;
добавление звена в произвольное место списка, отличное от начала (например, после звена, указатель на которое задан);
удаление звена из произвольного места списка, отличного от начала (например, после звена, указатель на которое задан);
проверка, пуст ли список;
очистка списка;
формирование списка;
печать списка.
Для изучения двунаправленных списков можно использовать следующие материалы:
Протестировать шаблон класса на следующих типах данных: целые, вещественные, символьные, строки.
Решить задачу
печатает в обратном порядке элементы непустого списка L;
сортировка элементов списка по возрастанию;
подсчитывает количество элементов списка L, у которых равные «соседи»;
определяет, есть ли в списке L хотя бы один элемент, который равен следующему за ним (по кругу) элементу (первый элемент счиать следующим для последнего);
в списке L переставляет в обратном порядке все элементы между первым и последним вхождениями элемента E, если E входит в L не менее двух раз;
удаляет из списка L первое вхождение заданного элемента, если такой есть;
из списка L, содержащего не менее двух элементов, удаляет все элементы, у которых одинаковые «соседи» (первый и последний элементы считать соседями);
добавляет в начало и конец списка L новый элемент E
в списке L справа и слева от элемента E вставляет элемент F;
строит двунаправленный список L по однонаправленному списку L1;
в конец непустого списка L добавляет все его элементы, располагая их в обратном порядке (например, по списку из элементов 1, 2, 3 требуется построить список из элементов 1, 2, 3, 3, 2, 1);
проверяет симметричность участка списка с i-го по j-й элемент (i < j);
удалить все элементы между минимальным и максимальным элементами;
если у элемента со значением E "соседи" не равны, поменять их местами;
если у элемента со значением E "соседи" не равны, заменить их на элемент F;
поменять местами фрагменты списка между минимальным и максимальным элементами.
Задание III. Разработать шаблон класса для работы с двоичным деревом поиска. Реализовать следующие действия
добавление элемента в дерево;
удаление элемента из дерева;
обход дерева (для печати элементов и т.д.);
поиск в дереве.
Для изучения двоичных деревьев поиска можно использовать следующие материалы:
Протестировать шаблон класса на следующих типах данных: целые, вещественные, символьные, строки.
Решить задачу
Реализовать операцию пересечения для двух двоичных деревьев поиска, т.е. построить двоичное дерево поиска из элементов, входящих одновременно в первое и второе деревья.
Написать рекурсивную функцию, которая определяет глубину заданного элемента на дереве и возвращает –1, если такого элемента нет.
Контроль.
Тест 1. Для данных -1 -2 9 2 -4 22 -3 0 -9 10 4 -5 14 и заданного элемента 0 получаем 2 (корень находится на уровне с номером 0).
Тест 2. Для данных -1 -2 9 2 -4 22 -3 0 -9 10 4 -5 14 и заданного элемента 1 получаем -1.
Написать функцию, которая находит наибольший элемент дерева.
Контроль. Тест. Для данных 4 1 9 0 3 2 -3 получаем 9.
Написать функцию, которая находит наименьший элемент дерева.
Контроль. Тест. Для данных 4 1 9 0 5 2 3 получаем 0.
Напишите программу, которая удаляет из дерева все заданные элементы.
Контроль. Тест. Для данных 4 1 9 0 5 2 3 получаем 0 2 4.
Написать программу, которая определяет число вхождений заданного элемента в дерево.
Контроль.
Тест 1. Для данных -1 2 2 9 2 2 -4 2 -3 -3 0 9 9 2 9 -1 4 и заданного элемента 2 получаем 5.
Тест 2. Для данных -1 2 2 9 2 2 -4 2 -3 -3 0 9 9 2 9 -1 4 и заданного элемента -2 получаем 0.
Написать программу, которая по заданному n считает число всех вершин глубины n в заданном дереве.
Контроль.
Тест 1. Для данных -1 -2 9 2 -4 22 -3 0 -9 10 4 -5 14 и заданного n=2 получаем 3 (корень находится на уровне с номером 0).
Тест 2. Для данных -1 -2 9 2 -4 22 -3 0 -9 10 4 -5 114 и заданного n=3 получаем 6 (корень находится на уровне с номером 0).
Написать программу, которая печатает элементы из всех листьев дерева.
Написать программу, которая по заданному дереву T строит дерево, состоящее только из листьев дерева T.
Написать программу, которая удаляет повторяющиеся элементы непустого дерева T.
Написать программу, которая удаляет из непустого бинарного дерева T вершины, содержащие максимальный и минимальный элемент.
Написать программу, которая определяет количество вхождений вершины с заданным элементом E в бинарное дерево.
Написать программу, которая находит в заданном непустом бинарном дереве длину (количество ветвей) пути от корня до ближайшей вершины с заданным элементом E.
Написать программу, которая определяет максимальный элемент из всех листьев непустого бинарного дерева.
Составить программу, которая печатает все элементы дерева по уровням: сначала — из корня дерева, затем (слева направо) — из вершин, дочерних по отношению к корню, затем (также слева направо) — из вершин, дочерних по отношению к этим вершинам, и т.д.
Составить программу, которая формирует дерево L, включив в него по одному разу элементы, которые входят в одно из деревьев L1 и L2, но в то же время не входит в другое из них.