Цель работы: Ознакомиться с созданием шаблонов функций и классов. Освоить написание контейнерных классов и их приме-нение для построения различных связных списков.
1? Порядок выполнения работы.
1. Ознакомьтесь с теоретическими сведениями?
2. Рассмотреть работу программ 1 и 2. Описание шаблонов функций и классов вынести в заголовочные файлы. Для компиляции создать файл-проект.
3. Рассмотреть описание шаблона для связного списка и класса, реализующего связный список. Написать программу, создающую список и вывести его на экран в прямом и обратном направлении.
4. Модернизировать программу для ввода 1 нового эле-мента в уже имеющийся список. Вставка должна производиться в определенное пользователем место.
5. Модернизировать программу для удаления 1 опреде-ленного пользователем элемента из списка.
6. Организовать поиск заданного элемента и вывод его на экран.
7. Выполнить индивидуальное задание.
2. Индивидуальные задания.
1. Существует двусвязный список городов, содержащий сле-дующие поля:
— Название города;
— Страна;
— Население (тыс.чел.).
Должна существовать возможность добавления, удаления и модификации записей.
Для этого списка вычислить суммарное население для городов каждой страны.
2. Для списка городов из задания 1 построить список, упо-рядоченный по убыванию населения.
3. Для списка городов из задания 1 написать программу, удаляющую из списка города, население которых меньше вве-денного пользователем порога и выдающую на экран резуль-тирующий список.
4. Существуют 2 двусвязных списка автомобилей — легковых и грузовых, содержащих следующие поля:
легковыe — грузовыe —
— Марка — Марка
— Страна — производитель — Страна — производитель
— Скорость — Скорость
— Число мест — Грузоподъемность.
Должна существовать возможность добавления, удаления и модификации записей.
Из этих двух списков создать один, упорядоченный по скорости.
5. Для списков из задания 4 вывести список, содержащий единственное упоминание для каждой марки.
6. Существует двусвязный список книг, содержащий следующие поля:
— Фамилия автора;
— Имя;
— Отчество;
— Название книги;
— Год издания.
Должна существовать возможность добавления, удаления и модификации записей.
Для этого списка вычислить количество книг по каждому году издания.
7. Для списка задания 6 вывести список книг заданного авто-ра.
8. По списку задания 6 построить список упорядоченный по убыванию года издания книг.
9. Реализовать стек-список, работающий по принципу LIFO. Должна существовать возможность добавления элементов в стек и удаления из его вершины.
10. Реализовать односвязный линейный список:
— Фамилия ученика;
— Имя;
— Отчество;
— класс;
— буква класса.
Реализовать следующие операции над ним: включить новый узел, исключить новый узел.
11. Для списка задания 10 реализовать следующие операции: получить доступ к k-ому узлу списка, чтобы проанализировать и/или изменить его содержимое.
12. Для списка задания 10 реализовать следующие опера-ции: выполнить сортировку списка по заданному полю.
3? Отчет по работе
• Название работы и ее цель;
• Ответы на поставленные вопросы в порядке проведения работы и листинги модернизированных программ;
• Листинг разработанной и отлаженной программы индивидуального задания?
4? Вопросы по лабораторной работе
1. Для чего создаются щаблоны и как они описываются?
2. Что такое контейнерные классы? Приведите примеры контейнерных классов?
3. Какой список называется односвязным?
4. Какой список называется двусвязным?
5. Что такое стек и как организуется работа со стеком?
6. Что такое очередь и как организуется работа с очередью?
7. Как вставить элемент в односвязный, двусвязный список?
8. Как удалить элемент из олдносвязного, двусвязного списка?
