- •2. Методические указания к выполнению лабораторных работ
- •Лабораторная работа №1 Следование
- •Варианты индивидуальных заданий Выполнить поразрядные логические операции над машинными кодами
- •Пример программы
- •Лабораторная работа №2 Операторы ветвления
- •Варианты индивидуальных заданий
- •Пример разработки математической модели и схемы алгоритма решения задачи для варианта задания вида:
- •Текст программы
- •Лабораторная работа №3 Операторы цикла
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №4 Статические массивы
- •Варианты индивидуальных заданий
- •Пример программы на обработку одномерного массива
- •Пример программы на обработку двумерного массива (матрицы)
- •Лабораторная работа №5 Динамические массивы
- •Варианты индивидуальных заданий
- •Пример программы на обработку одномерного массива
- •Пример программы на обработку двумерного массива (матрицы)
- •Лабораторная работа №6 Методы сортировки
- •Варианты индивидуальных заданий Методы сортировки
- •Области сортировки элементов матриц
- •Примеры программ
- •Лабораторная работа №7 Передача имён функций в качестве параметров
- •Текст программы
- •Лабораторная работа №8 Строки и текстовые файлы
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №9 Структуры и файлы структур
- •Пример программы
- •Лабораторная работа №10 Линейные списки
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №11 Стек, дек, очередь
- •Варианты индивидуальных заданий
- •Пример программы
- •Лабораторная работа №12 Классы
- •Варианты индивидуальных заданий
- •Примеры программ
- •Литература
Лабораторная работа №10 Линейные списки
Цель лабораторной работы: изучение способов создания и принципов использования односвязных линейных списков; изучение стандартных средств языка C/C++ для работы с динамической памятью; совершенствование навыков модульного программирования на языке C/С++ при решении задач обработки линейных списков; изучение способов разработки многофайловых проектов.
Задание на программирование: используя технологию процедурного программирования разработать программу обработки односвязных линейных списков с числом элементов в списке не менее десяти в соответствии с индивидуальным заданием.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание.
2) Построить схему алгоритма решения задачи с использованием функций создания, просмотра, обработки списка, удаления списка из динамической памяти.
3) Составить спецификации функций.
4) Составить программу на языке C/С++.
5) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов. Обеспечить одновременный показ на экране исходного и результирующего списков.
6) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, спецификации функций, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1.
По списку L построить два новых списка L1 и L2: первый из элементов с положительными значениями, а второй из остальных элементов исходного списка.
2.
Вставить в список L новый элемент со значением E1 за каждым элементом с заданным значением E, если элемент со значением Е входит в L.
3.
Вставить в список L новый элемент со значением Е1 перед каждым вхождением элемента с заданным значением Е, если элемент со значением Е входит в L.
4.
Вставить в непустой список L перед его последним элементом пару новых элементов со значениями Е1 и Е2.
5.
Вставить в непустой список L, элементы которого изначально упорядочены по не убыванию их значений, новый элемент со значением E так, чтобы сохранить упорядоченность элементов списка.
6.
Удвоить каждое вхождение элемента со значением Е в списке L.
7.
Удалить из списка L все вхождения элемента со значением Е.
8.
Удалить из списка L все элементы с отрицательными значениями.
9.
Удалить из списка L за каждым вхождением элемента со значением Е один элемент, если он есть и его значение отличено от Е.
10.
Оставить в списке L только первые вхождения одинаковых элементов.
11.
В списке L из каждой группы подряд идущих элементов с равными значениями оставить только один.
12.
Перевернуть список L, то есть изменить ссылки в этом списке так, чтобы его элементы оказались расположенными в обратном порядке.
13.
Найти элемент непустого списка с максимальным значением.
14.
Проверить, есть ли в списке L хотя бы два элемента с одинаковыми значениями.
15.
Проверить на равенство два списка L1 и L2.
16.
Построить список L1 – копию списка L.
17.
Добавить в конец списка L1 все элементы списка L2.
18.
Вставить в список L за последним вхождением элемента со значением Е все элементы списка L1, если элемент со значением Е входит в L.
19.
Сформировать список L, включив в него по одному разу элементы, которые входят хотя бы в один из списков L1 и L2.
20.
Сформировать список L, включив в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2.
21.
Сформировать список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2.
22.
Сформировать список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой из них.
23.
Объединить два упорядоченных списка L1 и L2 в один упорядоченный список, построив новый список L.
24.
Объединить два упорядоченных списка L1 и L2 в один упорядоченный список L1, меняя соответствующим образом ссылки в L1 и L2.
25.
Найти среднее арифметическое значений элементов непустого списка.
26.
Поменять местами первый и последний элемент списка.
27.
Проверить, упорядочены ли элементы списка по алфавиту.
28.
Найти сумму значений последнего и предпоследнего элементов списка.
29.
Удалить из списка последний отрицательный элемент, если такой есть.
30.
Заменить в списке L все вхождения элемента со значением Е1 на Е2.
31.
Вставить новый элемент после первого элемента непустого списка.
32.
Перенести в конец списка его первый элемент.
33.
Удалить из списка второй элемент, если такой есть.
34.
Подсчитать число вхождений элемента со значением Е в список L.
35.
Удалить из списка L последнее вхождение элемента Е, если такое есть.
36.
Перенести в начало списка его последний элемент.
37.
Подсчитать количество слов списка, которые совпадают с последним словом.
38.
Подсчитать количество слов списка, которые начинаются и оканчиваются одной и той же литерой.
39.
Подсчитать количество слов списка, которые оканчиваются той же литерой, что и следующее слово.
