Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОДНОСВ. СПИСКИ МУ.doc
Скачиваний:
12
Добавлен:
13.02.2015
Размер:
236.03 Кб
Скачать

Упражнения

1) Описать рекурсивную процедуру Double_1 дублирования каждого элемента списка с заданным значением.

2) Описать рекурсивную процедуру вставки после первого элемента с заданным значением x элемента с другим заданным значением y.

3) Описать рекурсивную процедуру вставки после каждого элемента с заданным значением x элемента с другим заданным значением y.

Пример 9.8 Рекурсивная процедура удаления всех элементов списка с заданным значением x.

Алгоритм удаления элементов:

если список не пуст, то

если найден элемент с заданным значением x, то

найденный элемент удаляется,

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

а после удаления поиск элемента со значением x и его удаление продолжаются, начиная с этого элемента (следующего элемента после удаленного элемента),

иначе поиск элемента со значением x и его удаление продолжаются в "хвосте" списка, начиная со следующего элемента.

procedure DelRec(var start:link; x:integer);

var p:link; {указатель на удаляемый элемент}

begin

if start<>nil then

if start^.inf=x then

begin

p:=start;

start:=start^.next;

dispose(p);

DelRec(start,x)

end

else

DelRec(start^.next,x)

end;

Упражнение

1) Описать рекурсивную процедуру DelRec_1 удаления первого элемента списка с заданным значением.

10 ЗаДаЧи

10.1 Нерекурсивные подпрограммы

  1. Вставить в начало списка заданное количество элементов.

  2. Вставить в конец списка заданное количество элементов.

  3. Вставить перед последним элементом списка заданное количество элементов.

  4. Вставить после первого элемента списка заданное количество элементов.

  5. Вставить после первого элемента списка с заданным значением заданное количество элементов.

  6. Вставить перед первым элементом списка с заданным значением заданное количество элементов.

  7. Вставить в начало списка заданное количество k элементов, не меняя порядка их следования: первый из заданных элементов, второй, ,k-ый элемент, список.

  8. Вставить в конец списка заданное количество k элементов, не меняя порядка их следования: список, первый из заданных элементов, второй, ,k-ый элемент.

  9. Вставить в конец списка все элементы другого списка.

  10. Вставить в начало списка все элементы другого списка.

  11. Вставить перед последним элементом списка все элементы другого списка.

  12. Вставить перед последним элементом списка все элементы другого списка, не меняя порядка их следования: все элементы первого списка, кроме последнего элемента; все элементы второго списка; последний элемент первого списка.

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

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

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

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

  17. Удалить заданное количество элементов в начале списка.

  18. Удалить заданное количество элементов в конце списка.

  19. Удалить заданное количество элементов перед последним элементом.

  20. Удалить заданное количество элементов после первого элемента.

  21. Удалить заданное количество элементов после первого элемента с заданным значением.

  22. Удалить заданное количество элементов перед первым элементом с заданным значением.

  23. Удалить «хвост» списка, начиная с элемента с заданным значением.

  24. Удалить из списка все элементы, имеющие наименьшее (минимальное) значение.

  25. Удалить из списка все элементы, имеющие наибольшее (максимальное) значение.

  26. Удалить из списка первый из минимальных элементов.

  27. Удалить из списка первый из минимальных элементов, если он не единственный.

  28. Удалить из списка последний из минимальных элементов.

  29. Удалить из списка последний из минимальных элементов, если он не единственный.

  30. Удалить из списка первый из максимальных элементов.

  31. Удалить из списка первый из максимальных элементов, если он не единственный.

  32. Удалить из списка последний из максимальных элементов.

  33. Удалить из списка последний из максимальных элементов, если он не единственный.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]