
- •1.Фундаментальные типы данных. Структуры
- •Демонстрационный пример
- •1.2. Задачи для самостоятельного решения
- •Фундаментальные типы данных. Объединения
- •2.1. Демонстрационный пример
- •А.Пуанкаре Приведем пример использования объединения: составить программу, выполняющую требуемые операции для заданной фигуры.
- •2.2. Задачи для самостоятельного решения
- •3.Ссылочные типы
- •3.1. Указатели и адреса
- •3.2. Адресная арифметика
- •3.3. Операции new и delete
- •3.4. Демонстрационные примеры Чтение и переработка являются ключевыми в программировании. Б.Керниган, ф.Плоджер
- •3.5. Задачи для самостоятельного решения
- •3.4. Дано описание переменных: int *p,*q; char *r;. Какие из следующих операторов неправильны и почему?
- •4. Линейные однонаправленные списки
- •4.1. Задачи для самостоятельного решения
- •Г.Остер. Задачник
- •Построение
- •Модификация
- •Предикаты
- •Подсчет
- •5. Ортогональные списочные структуры ("гирлянды" и "висюльки")
- •5.1. Фрагмент теории
- •5.2. Задачи для самостоятельного решения
- •6. Кольцевые списки на базе однонаправленных списков
- •6.1. Фрагмент теории
- •6.2.Задачи для самостоятельного решения
6. Кольцевые списки на базе однонаправленных списков
6.1. Фрагмент теории
Как только задача четко сформулирована, решить ее обычно достаточно просто.
Роберт Розен
Кольцевым списком (кольцом) на базе линейного однонаправленного списка называется линейный список, в котором указатель из некоторого звена направлен на такое звено в списке, из которого данное звено может быть достигнуто вновь.
Опишем два способа представления однонаправленного кольцевого списка с заглавным звеном:
Такой кольцевой список будем называть кольцевым списком с удаленным заглавным звеном.
Пустой кольцевой список с удаленным заглавным звеном представим так:
А этот кольцевой список назовем кольцевым списком с включенным заглавным звеном.
П
устой
кольцевой список с включенным заглавным
звеном
представим так:
6.2.Задачи для самостоятельного решения
Однажды Монпертюи, развалившись в кресле и позевывая, сказал: "С каким удовольствием я занялся бы сейчас решением красивой и не очень трудной задачи!". В этих словах - весь человек.
Себастьен Шамфор. Характеры и анекдоты
6.1. Пусть L обозначает кольцевой однонаправленный список с удаленным заглавным звеном. Определить, является ли кольцо пустым.
6.2. Разработать функцию для подсчета количества звеньев в заданном кольцевом списке с удаленным заглавным звеном.
6.3. Пусть L обозначает кольцевой однонаправленный список с удаленным заглавным звеном. Написать функцию, которая подсчитывает количество элементов списка L, у которых равные "соседи".
6.4. Пусть L обозначает кольцевой однонаправленный список с удаленным заглавным звеном. Написать функцию, выводящую на экран дисплея элементы списка L в обратном порядке.
6.5. Пусть L обозначает кольцевой однонаправленный список с удаленным заглавным звеном. Написать функцию удаления из списка L первого звена, содержащего отрицательный элемент (если такое звено найдется).
6.6. Пусть L обозначает кольцевой однонаправленный список с удаленным заглавным звеном. Написать функцию, которая в "конец" кольца добавляла бы все его звенья, располагая их в обратном порядке (например, по кольцу, содержащему целые числа 1,2,3, требуется построить кольцо, содержащее числа 1,2,3,3,2,1).
6.7. Пусть L обозначает кольцевой однонаправленный список с удаленным заглавным звеном. Определить, есть ли в списке L хотя бы одно звено, содержащее элемент, равный элементу следующего за ним звена.
6.8. Предположим, что уже построен кольцевой однонаправленный список с удаленным заглавным звеном, элементами которого являются стpоки. Написать программу, подсчитывающую количество строк в кольце, которые начинаются и оканчиваются одним и тем же символом.
6.9. Предположим, что уже построен и задан указателем P кольцевой однонаправленный список с удаленным заглавным звеном, элементами которого являются целые числа. Написать программу, которая находит минимальное значение элементов кольца и номер первого звена, содержащего элемент с этим значением.
6.10. "Считалка". N ребят располагаются по кругу. Начав отсчет от первого, удаляют каждого k-го, смыкая круг после каждого удаления. Определить порядок удаления ребят из круга. Решение этой задачи описать в виде программы, которая должна вывести на экран номера ребят в том порядке, в каком они удаляются из круга.
6.11. Предположим, что уже построены два однонаправленных кольца с удаленным заглавным звеном, элементами которых являются целые числа. Написать функцию, которая определяет, является ли содержимое данного кольца "перевертышем" содержимого другого кольца.
6.12. Пусть L обозначает кольцевой однонаправленный список с включенным заглавным звеном. Определить, является ли кольцо пустым.
6.13. Разработать функцию для подсчета количества звеньев в заданном кольцевом списке с включенным заглавным звеном.
6.14. Пусть L обозначает кольцевой однонаправленный список с включенным заглавным звеном. Написать функцию, которая подсчитывает количество элементов списка L, у которых равные "соседи".
6.15. Пусть L обозначает кольцевой однонаправленный список с включенным заглавным звеном. Написать функцию, выводящую на экран дисплея элементы списка L в обратном порядке.
6.16. Пусть L обозначает кольцевой однонаправленный список с включенным заглавным звеном. Написать функцию удаления из списка L первого звена, содержащего отрицательный элемент (если такое звено найдется).
6.17. Пусть L обозначает кольцевой однонаправленный список с включенным заглавным звеном. Написать функцию, которая в "конец" кольца добавляла бы все его звенья, располагая их в обратном порядке (например, по кольцу, содержащему целые числа 1,2,3, требуется построить кольцо, содержащее числа 1,2,3,3,2,1).
6.18. Пусть L обозначает кольцевой однонаправленный список с включенным заглавным звеном. Определить, есть ли в списке L хотя бы одно звено, содержащее элемент, равный элементу следующего за ним звена.
6.19. Предположим, что уже построен кольцевой однонаправленный список с включенным заглавным звеном, элементами которого являются стpоки. Написать программу, подсчитывающую количество строк в кольце, которые начинаются и оканчиваются одним и тем же символом.
6.20. Предположим, что уже построен и задан указателем P кольцевой однонаправленный список с включенным заглавным звеном, элементами которого являются целые числа. Написать программу, которая находит минимальное значение элементов кольца и номер первого звена, содержащего элемент с этим значением.
6.21. Предположим, что уже построены два однонаправленных кольца с включенным заглавным звеном, элементами которых являются целые числа. Написать функцию, которая определяет, является ли содержимое данного кольца "перевертышем" содержимого другого кольца.
Распределение задач по вариантам
№ ва- рианта |
Перечень задач |
1 |
1.1; 1.16; 1.31; 2.1; 4.1; 4.28; 5.1; 5.16; 6.3; 9.1; 9.16; 10.1; 10.16; 11.21; 12.8; 12.21; 13.1; 13.16; 15.1; 15.16; 15.31; 15.46; 16.15; 17.1. |
2 |
1.2; 1.17; 1.32; 2.2; 4.2; 4.29; 5.2; 5.17; 6.4; 9.2; 9.17; 10.2; 10.17; 11.20; 12.9; 12.22; 13.2; 13.17; 15.2; 15.17; 15.32; 15.47; 16.14; 17.2. |
3 |
1.3; 1.18; 1.34; 2.3; 4.3; 4.30; 5.3; 5.18; 6.5; 9.3; 9.18; 10.3; 10.18; 11.19; 12.6; 12.23; 13.3; 13.18; 15.3; 15.18; 15.33; 15.48; 16.13; 17.3. |
4 |
1.4; 1.19; 1.33; 2.4; 4.4; 4.31; 5.4; 5.19; 6.6; 9.4; 9.19; 10.4; 10.19; 11.18; 12.10; 12.24; 13.4; 13.19; 15.4; 15.19; 15.34; 15.49; 16.12; 17.4. |
5 |
1.5; 1.20; 1.38; 2.5; 4.5; 4.32; 5.5; 5.20; 6.7; 9.5; 9.20; 10.5; 10.20; 11.17; 12.5; 12.25; 13.5; 13.20; 15.5; 15.20; 15.35; 15.50; 16.11; 17.5. |
6 |
1.6; 1.23; 1.35; 2.6; 4.6; 4.33; 5.6; 5.21; 6.8; 9.6; 9.21; 10.6; 10.21; 11.16; 12.11; 12.26; 13.6; 13.21; 15.6; 15.21; 15.36; 15.51; 16.10; 17.6. |
7 |
1.7; 1.22; 1.36; 2.7; 4.7; 4.34; 5.7; 5.22; 6.9; 9.7; 9.22; 10.7; 10.22; 11.15; 12.4; 12.27; 13.7; 13.22; 15.7; 15.22; 15.37; 15.52; 16.9; 17.7. |
8 |
1.8; 1.21; 1.39; 2.8; 4.8; 4.35; 5.8; 5.23; 6.10; 9.8; 9.23; 10.8; 10.23; 11.14; 12.12; 12.28; 13.8; 13.23; 15.8; 15.23; 15.38; 15.53; 16.8; 17.8. |
9 |
1.10; 1.24; 1.40; 2.9; 4.9; 4.36; 5.9 5.24; 6.11; 9.9; 9.24; 10.9; 10.24; 11.13; 12.3; 12.29; 13.9; 13.24; 15.9; 15.24; 15.39; 15.54; 16.7; 17.9. |
10 |
1.9; 1.29; 1.41; 2.10; 4.10; 4.37; 5.10; 5.25; 6.13; 9.10; 9.25; 10.10; 10.25; 11.12; 12.13; 12.30; 13.10; 13.25; 15.10; 15.25; 15.40; 15.55; 16.6; 17.10. |
11 |
1.15; 1.25; 1.42; 2.11; 4.16; 4.38; 5.11; 5.26; 6.14; 9.11; 9.26; 10.11; 10.26; 11.11; 12.2; 12.31; 13.11; 13.26; 15.11; 15.26; 15.41; 15.56; 16.5; 17.11. |
12 |
1.13; 1.27; 1.43; 2.12; 4.17; 4.39; 5.12; 5.27; 6.15; 9.12; 9.27; 10.12; 10.27; 11.10; 12.14; 12.32; 13.12; 13.27; 15.12; 15.27; 15.42; 15.57; 16.4; 17.12. |
13 |
1.12; 1.26; 1.44; 2.13; 4.18; 4.40; 5.13; 5.28; 6.16; 9.13; 9.28; 10.13; 10.28; 11.9; 12.1; 12.33; 13.14; 13.28; 15.14; 15.28; 15.43; 15.58; 16.3; 17.13. |
14 |
1.14; 1.28; 1.46; 2.14; 4.14; 4.41; 5.14; 5.29; 6.17; 9.14; 9.29; 10.14; 10.29; 11.8; 12.15; 12.34; 13.14; 13.29; 15.14; 15.29; 15.44; 15.59; 16.2; 17.14. |
15 |
1.11; 1.30; 1.37; 2.15; 4.11; 4.42; 5.15; 5.30; 6.21; 9.15; 9.30; 10.15; 10.30; 11.7; 12.7; 12.35; 13.15; 13.30; 15.15; 15.30; 15.45; 15.60; 16.1; 17.15. |