Лабораторная работа 6


Цель работы: Ознакомиться с созданием шаблонов функций и классов. Освоить написание контейнерных классов и их приме-нение для построения различных связных списков.

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. Как удалить элемент из односвязного, двусвязного списка?

СПИСОК ЛИТЕРАТУРЫ

1. Том Сван. Освоение Borland С++ 5. Пер. с англ. Киев: "Диалектика", 1996 — 576с.

2. Г. Шилдт. Теория и практика С++. Пер. с англ.- СПб.: BHV — Санкт-Петербург, 1996. — 416с.

3. Цимбал А.А. и др. Турбо С++. язык и его применение. — М.:"Джен Ай Лтд.", 1993. — 508с.

Загрузка...