Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачи по ООП для 234 группы (окончание).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
300.54 Кб
Скачать

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.