Реализация

Примеры перестройки линейных списков

На рис. 10.5 приведены четыре примера перестройки односвязных списков. Пунктирами изображены указатели, получающие новые значения в процессе работы программ.

  1. Удаление всех нулей из списка.
  2. Вставка в список, хранящий все нечетные числа от 1 до 11, трех новых элементов - 0, 8 и 12 - с сохранением его упорядоченности.
  3. Обмен второго и третьего элементов списка.
  4. Обращение порядка всех четных элементов списка.

Приведем фрагменты программ, решающих первую и третью задачи:

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. Лекция: Графы и деревья:
Элементы теории графов: основные понятия и определения. Способы представления графов и деревьев. Примеры применения деревьев в программировании.