На этом шаге мы рассмотрим проход по двунаправленному списку от его конца.
Пусть значением переменной pAux является адрес некоторого элемента списка целых чисел. Тогда после присваивания pAux := pAux^.pPrev, ее значением будет или ссылка на предыдущий элемент этого списка (если такой элемент имеется) или Nil. Пользуясь таким способом перехода от одного элемента к другому, можно просматривать весь двунаправленный список или его часть, двигаясь от конца списка к началу. Приведем процедуру прохода по двунаправленному списку от его конца:
Рrocedure Print_Back (pEnd : PtrRec); {pEnd - указатель на "хвост" двунаправленного списка} var pAux: PtrRec; Begin pAux := pEnd; If pAux^.pPrev = Nil Then Writeln ('Двунаправленный список пуст.') else While pAux^.pPrev <> Nil do Begin Write (pAux^.Element : 5); pAux := pAux^.pPrev; end; Writeln End;
На следующем шаге мы рассмотрим очистку двунаправленного списка.