Реализация
Примеры перестройки линейных списков
На рис. 10.5 приведены четыре примера перестройки односвязных списков. Пунктирами изображены указатели, получающие новые значения в процессе работы программ.
- Удаление всех нулей из списка.
- Вставка в список, хранящий все нечетные числа от 1 до 11, трех новых элементов - 0, 8 и 12 - с сохранением его упорядоченности.
- Обмен второго и третьего элементов списка.
- Обращение порядка всех четных элементов списка.
Приведем фрагменты программ, решающих первую и третью задачи:
1. {- голову списка обрабатываем отдельно -}2. while (head<>nil)and(head^.znach =0)do3. begin p:= head;4. head:= head^.next;5. dispose(p);6. end;7. {- середина и конец списка обрабатываются вместе -}8. p:= head;9. while p^.next <> nil do10. if p^.next^.znach = 0 11. then begin q:= p^.next; 12. p^.next:= p^.next^.next;13. dispose(q);14. end15. else 16. p:= p^.next;3. p:= head^.next;4. head^.next:= p^.next;5. p^.next:= p^.next^.next;6. head^.next^.next:= p;
Рис. 10.5. Примеры перестройки односвязных списков
![]() |
![]() |
![]() |
1) Высочайшая вершина азиатской части России (4506 м), находится на Алтае.
2) Предположим, что в нашем примере каждый пациент приходит со своим креслом - это будет аналогом динамического выделения памяти под переменные.
11. Лекция: Графы и деревья:
Элементы теории графов: основные понятия и определения. Способы представления графов и деревьев. Примеры применения деревьев в программировании.