Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
паскаль.doc
Скачиваний:
10
Добавлен:
30.04.2019
Размер:
599.04 Кб
Скачать

Динамические указатели

  1. Сортировка двух массивов. Оба массива являются динамическими и располагаются с памяти только тогда, когда над ними производят действия (заполнение случайными числами, сортировка и вывод на экран). После того, как массив отсортирован, он удаляется из памяти.

  2. Разработать программу для определения суммы элементов массива большой размерности (n≤10000, m≤10000, n×m≤50000), заполняя его:

    1. Числами Фибоначчи (1, 1, 2, 3, 5, 8, 13, 21, …);

    2. Простыми числами (2, 3, 5, 7, 11, 13, 17, …);

    3. Степенями числа 2 (2, 4, 8, 16, 32, …);

    4. Определяются как , где n=1, 2, 3, 4, …, 20.

Динамические структуры списки

Приступая к решению задач этого раздела, следует вспомнить, что:

  • для задания списка нужно определить тип элементов этого списка по следующему правилу:

TYPE ССЫЛКА = ^ЭЛЕМЕНТ

ЭЛЕМЕНТ = RECORD

ДАННЫЕ: ТИП;

АДРЕС: ССЫЛКА;

END;

  • в зависимости от количества полей в адресной части и порядка связывания элементов различают однонаправленные и двунаправленные списки;

  • Для размещения первого элемента направленного списка в памяти нужно выполнить следующие действия:

    1. Разместить ссылку на первый элемент списка в памяти;

    2. Присвоить значение полю данных;

    3. Присвоить ссылке на следующий элемент списка значение NIL (пустой ссылки);

    4. Присвоить ссылке на хвост списка ссылку на первый элемент списка. Это нужно, чтобы сохранить начало списка и при необходимости вернуться к нему.

  • Для добавления нового элемента в конец направленного списка нужно выполнить следующие действия:

  1. Разместить в памяти следующий элемент списка

  2. Ссылке на хвост присвоить ссылку на следующий элемент

  3. Присвоить значение полю данных

  4. Присвоить ссылке на следующий элемент списка значение NIL (для контроля конца списка)

  • Для добавления нового элемента в произвольное место направленного списка нужно выполнить следующие действия:

    1. Разместить в памяти новый элемент списка;

    2. В поле для данных этого элемента занести нужную информацию;

    3. В поле ссылки на следующий элемент вставляемого элемента занести ссылку, взятую из одноименного поля элемента списка, за которым вставляется новый элемент;

    4. В поле ссылки на следующий элемент списка, за которым вставляется новый элемент занести ссылку на вставляемый элемент.

ЗАДАЧИ

  1. Составить программу, которая удаляет из списка L все отрицательные элементы.

  2. Дан список, содержащий натуральные числа. Удалить те его элементы, которые кратны заданному числу k.

  3. Дан список символов. Подсчитать количество вхождений в этот список букв ‘t’.

  4. Составить программу, которая вставляет в список L новый элемент F за каждым вхождением элемента E.

  5. Составить программу, которая удаляет из списка L все элементы E, если таковые имеются.

  6. Составить программу, которая удаляет из списка L за каждым вхождением элемента E один элемент, если таковой имеется и он отличен от E.

  7. Составить программу, которая проверяет, есть ли в списке L хотя бы два одинаковых элемента.

  8. Составить программу, которая переносит в конец непустого списка L его первый элемент.

  9. Составить программу, которая в списке L из каждой группы подряд идущих одинаковых элементов оставляет только один.

  10. Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2.

  11. Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой.

  12. Составить программу для упорядочения в порядке возрастания элементов однонаправленного списка.

  13. Составить программу, заполняющую список последовательностью случайных различных целых чисел и суммирующую те его элементы, которые расположены между минимальным и максимальным элементом (если минимальный элемент предшествует максимальному).

  14. Даны упорядоченные списки L1 и L2. Вставить элементы списка L2 список L1, не нарушая его упорядоченности.

  15. Дан список вещественных чисел. Написать следующие функции:

а) проверки наличия в нем двух одинаковых элементов;

б) переноса в начало его последнего элемента;

в) переноса в конец его первого элемента;

г) вставки списка самого в себя вслед за первым вхождением числа x.

  1. Даны два списка L1 и L2 вещественных чисел. Написать подпрограммы, возвращающие новый список L, включающий по одному разу числа, которые:

а) входят одновременно в оба списка;

б) входят хотя бы в один из списков;

в) входят в один из списков L1 и L2, но в то же время не входят в другой из них;

г) входят в список L1 , но не входят в список L2.

  1. Дан список слов, среди которых есть пустые. Написать подпрограмму, выполняющую следующее действие:

а) перестановку первого и последнего непустых слов;

б) печать текста из первых букв непустых слов;

в) удаление из непустых слов первых букв;

г) определение количества слов в непустом списке, отличных от последнего.

КОНТРОЛЬНЫЕ ЗАДАНИЯ

  1. Дан список, содержащий целые числа. Определить количество различных элементов этого списка.

  2. Дан список, содержащий целые числа. Сформировать другой список из элементов данного, абсолютные величины которых являются простыми числами.

  3. Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента E, если E входит в L.

  4. Составить программу, которая вставляет в список L за первым вхождением элемента E все элементы списка L, если E входит в L.

  5. Составить программу, которая переворачивает список L, т.е. изменяет ссылки в этом списке так, чтобы его элементы оказались расположенными в обратном порядке.

  6. Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2.

  7. Программа должна находить среднее арифметическое элементов непустого однонаправленного списка вещественных чисел, заменять все вхождения числа x на число y, менять местами первый и последний элементы, проверять, упорядочены ли числа в списке по возрастанию.