Разработайте программу для решения задачи согласно варианту задания. При решении задачи использовать линейный односвязный список.
Программа обработки линейного двусвязного списка
Разработайте программу для решения задачи согласно варианту задания. При решении задачи использовать линейный двусвязный список.
Варианты заданий:
1. Построить линейный список из входной последовательности чисел. Удалить из него все отрицательные числа.
2. Построить линейный список из входной последовательности чисел. Удалить из него все положительные числа.
3. Построить линейный список из входной последовательности чисел. Перестроить его так, чтобы сначала стояли все положительные числа, затем все отрицательные.
4. Построить линейный список из входной последовательности чисел. Перестроить его так, чтобы сначала стояли все отрицательные числа, затем все положительные.
5. Построить линейный список из входной последовательности чисел. Удалить из него все четные числа.
6. Построить линейный список из входной последовательности чисел. Удалить из него все нечетные числа.
7. Построить линейный список из входной последовательности чисел. Перестроить его так, чтобы сначала стояли все четные числа, затем все нечетные.
8. Построить линейный список из входной последовательности чисел. Перестроить его так, чтобы сначала стояли все нечетные числа, затем все четные.
9. Построить линейный список из входной последовательности чисел. Удалить из него все простые числа.
10. Построить линейный список из входной последовательности чисел. Удалить из него все числа, кроме простых.
11. Построить линейный список из входной последовательности чисел. Поменять местами первое и последнее число.
12. Построить линейный список из входной последовательности чисел. Поменять местами первое и второе число, третье и четвертое и т. д.
13. Построить линейный список из входной последовательности чисел. Поменять местами первое и максимальное число, последнее и минимальное.
14. Построить линейный список из входной последовательности чисел. Удалить из него все числа, кратные 3.
15. Построить линейный список из входной последовательности чисел. Удалить из него все числа, кратные 5.
16. Построить линейный список из фамилий. Оставить в нем только фамилии, начинающиеся на букву «А», остальные удалить.
17. Построить линейный список из фамилий. Удалить из него фамилии, начинающиеся на букву «А».
18. Построить линейный список из фамилий. Удалить из него самую длинную фамилию.
19. Построить линейный список из фамилий. Удалить из него самую короткую фамилию.
20. Построить линейный список из фамилий. Вставить в него введенную фамилию, сохранив алфавитный порядок.
21. Построить линейный список из фамилий. Удалить из него введенную фамилию.
22. Построить линейный список из символов. Удалить из него цифры.
23. Построить линейный список из символов. Удалить из него запятые.
24. Построить линейный список из символов. Удалить из него повторяющиеся пробелы.
25. Построить линейный список из символов. Поменять местами первый и последний символ.
26. Удалить из списка все одинаковые значения.
27. В списке поменять местами третий отрицательный элемент с минимальным значением. Если в списке несколько минимальных элементов, то удалить все, кроме одного.
28. Если в списке отрицательные элементы идут подряд, удалить все, кроме одного.
29. Не меняя порядок записи чисел в списке выдать элементы списка в порядке возрастания значений.
30. Сдвинуть элементы списка циклически на k позиций.
4. Содержание отчёта
1. Название, цель работы
2. Протокол выполнения работы со всеми распечатками, скриншотами, комментариями и наблюдениями согласно разделу «Выполнение работы».
3. Ответы на контрольные вопросы.
Вопросы к защите
Все вопросы в данном пункте рассматриваются для списка, элементами которого являются следующего типа объекты:
struct zvn { int inf; zvn *nx;}
1. Как определить объект для списка, элементами которого являются числа.
2. Как определить объект для списка, элементами которого являются слова.
3. Как определить объект для списка, элементами которого являются указатели.
4. Определены переменные: zvn *fst = NULL, *en, *r. Указатели fst, en – соответственно для адреса первого и последнего элемента списка; r – для значений адресов переменных типа zvn. Сформирован список с элементами типа zvn. Напишите коды перебора элементов списка.
5. Перечислите информацию, которая необходима, для того чтобы удалить из списка со значением равным некоторому числу k.
11. Определены переменные: zvn *fst = NULL, *en, *r. Объясните код r -> nx.
12. Определены переменные: zvn *fst = NULL, *en, *r. Объясните код r -> inf.
13. Определены переменные: zvn *fst = NULL, *en, *r. Объясните код r = r -> nx.
14. Определены переменные: zvn *fst = NULL, *en, *r. Объясните код r ->nx->nx->nx-> nx-> inf.
15. Перечислите информацию, которая необходима для того, чтобы удалить из списка головной (первый) элемент списка.
16. Перечислите информацию, которая необходима для того, чтобы новый элемент стал головным (первым) элементом списка.
Приложение
Самостоятельная работа по лабораторной работе № 7
«Работа с динамической памятью»
Самостоятельная работа по теме занятия включает в себя:
- изучение теоретического материала лекционных занятий, учебной литературы, Интернет-ресурсов, раздела «Краткие сведения из теории» настоящего описания ЛР;
- выполнение практических заданий и решение задач
Задачи и практические задания
Задание 1.
Все вопросы в данном пункте рассматриваются для списка, элементами которого являются следующего типа объекты:
struct zvn { int inf; zvn *nx;}
1. Написать фрагмент программы, который удаляет требуемый элемент из списка.
2. Перечислите информацию, которая необходима, для того чтобы в список добавить элемент со значением равным некоторому числу k
3. Написать фрагмент программы, который добавляет новый элемент в список. Новый элемент следует за некоторым данным элементом.
4. Определены переменные: zvn *fst = NULL, *en= NULL, *r. Сформирован список. Пусть в указателе en находится адрес последнего элемента списка. Напишите коды присоединения нового элемента типа zvn к списку.
5. В указателе r находится адрес некоторого элемента списка. Напишите код вывода элемента списка, который является пятым относительно данного. Циклы не использовать. Ответ должен состоять из одной директивы.
6. Написать фрагмент программы, который новый элемент списка делает головным.
Задание 2.
Все вопросы в данном пункте рассматриваются для списка, элементами которого являются следующие объекты:
struct zvn { int inf; zvn *lf, *rt;}
1. Определены переменные: zvn *fst = NULL, *en = NULL, *r. Указатели fst, en, r – соответственно для адреса первого, последнего элемента списка и промежуточных значений адресов переменных типа zvn. Сформирован список, с элементами типа zvn. Напишите коды перебора элементов списка.
2. Определены переменные: zvn *fst = NULL, *en=NULL, *r. Сформирован список. Пусть в указателе en находится адрес последнего элемента списка. Напишите коды присоединение нового элемента типа zvn к списку.
3. В указателе r находится адрес некоторого элемента списка. Напишите код вывода элемента списка, который является пятым относительно данного. Циклы не использовать. Ответ должен состоять из одной директивы.
4. В указателе r находится адрес некоторого элемента списка. Напишите код вывода элемента списка, относительно которого данный элемент является пятым. Циклы не использовать. Ответ должен состоять из одной директивы.
5. Определены переменные: zvn *fst = NULL, *en=NULL, *r. Объясните код r -> lf.
6. Определены переменные: zvn *fst = NULL, *en=NULL, *r. Объясните код r -> inf.
7. Определены переменные: zvn *fst = NULL, *en=NULL, *r. Объясните код r = r -> lf.
8. Определены переменные: zvn *fst = NULL, *en=NULL, *r. Объясните код r ->lf->lf->lf-> lf-> inf.
9. Определены переменные: zvn *fst = NULL, *en=NULL, *r. Объясните код r -> rt -> rt -> rt -> rt -> inf.