Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика программирование, учебник.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
22.08 Mб
Скачать

8 Работа со списками

Требуется разработать структурированную программу, содержащую процедуры построения списка, вывода на экран его содержимого и другие – в соответствии с содержанием задания. Речь идет о таких процедурах, как добавление в список элемента в указанное место, удаление указанного элемента из списка, вставка в список другого списка, сортировка элементов списка и т.п. Получить представление о работе со списками можно в [12]. Каждый элемент списка должен содержать поля Name: String[8] (имя элемента); Weight: Real (вес элемента); Pointer1: UK (ссылка на другой элемент) и, только для бинарных деревьев, поле Pointer2: UK (ссылка на второй элемент). Под типом данных UK понимается указатель на запись. Для проверки правильности работы программы следует предусмотреть вывод на монитор исходного списка и результирующего (если в этом есть необходимость).

8.1 Стеки

  1. В стек L, элементы которого упорядочены по возрастанию, вставить новый элемент Е так, чтобы сохранить упорядоченность.

  2. Удалить из стека L все элементы с отрицательным весом.

  3. Перенести в конец стека L его первый элемент.

  4. Найти сумму первого и предпоследнего элементов стека, содержащего не менее двух элементов.

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

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

  7. По стеку L построить два стека L1 - из положительных элементов и L2 - из отрицательных элементов.

  8. По стеку L построить два стека L1 - из четных элементов и L2 - из нечетных элементов.

  9. В стек L, элементы которого упорядочены поубыванию, вставить новый элемент Е так, чтобы сохранить упорядоченность.

  10. Удалить из стека L все элементы с положительным весом.

8.2 Очереди

  1. Вставить элемент Е1 в односвязную очередь Q, за каждым вхождением элемента E2 с весом W.

  2. Из односвязной очереди Q удалить один элемент за каждым вхождением элемента c именем Е, если такой есть, и он отличен от Е.

  3. Проверить, есть ли в односвязной очереди Q хотя бы два одинаковых элемента.

  4. Поменять местами первый и последний элементы односвязной очереди Q.

  5. Заменить в односвязной очереди Q все вхождения E1 на E2.

  6. Вставить в односвязную очередь Q1 за первым вхождением элемента E, все элементы очереди Q2.

  7. Перевернуть односвязную очередь Q.

  8. Сформировать односвязную очередь Q из элементов, которые входят в очередь Q1, но не входят в очередь Q2.

  9. Объединить две односвязные очереди Q1 и Q2 в одну упорядоченную по убыванию весов очередь Q.

  10. Объединить две односвязные очереди Q1 и Q2 в одну упорядоченную по возрастанию весов очередь Q.

8.3 Бинарные деревья

  1. Найти в непустом дереве D число ветвей и листьев.

  2. Вычислить длину всех ветвей и вес всех листьев дерева D.

  3. Подсчитать суммарный вес и число листьев дерева D.

  4. Подсчитать число узлов (вершин) непустого дерева D, расположенных на уровне N.

  5. Найти самый правый узел бинарного дерева.

  6. Найти самый левый узел бинарного дерева.

  7. Найти в непустом дереве D самую длинную ветвь и вычислить ее суммарный вес.

  8. Найти в непустом дереве D ветвь с самым большим суммарным весом элементов.

  9. Найти в непустом дереве D ветвь с самым малым суммарным весом элементов.

  10. Подсчитать число узлов (вершин) непустого дерева D, расположенных на уровне не ниже N.