Шаг 38.
Проход по двунаправленному списку от его конца

    На этом шаге мы рассмотрим проход по двунаправленному списку от его конца.

    Пусть значением переменной 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; 

    На следующем шаге мы рассмотрим очистку двунаправленного списка.




Предыдущий шаг Содержание Следующий шаг