Шаг 26.
Проход по линейному двунаправленному списку, начиная с его конца

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

    Алгоритм перемещения может быть следующим.

    Установим указатель rsp на последнее звено двунаправленного списка. Далее, в цикле указатель перемещается по списку "с помощью" оператора rsp = (*rsp).pred;. Ясно, что "движение" указателя продолжается, пока (*rsp).pred<>NULL.


Рис.1. "Начальная позиция"

    Алгоритм оформим в виде функции:

void VyvodBack (node **nsp, node **ksp)
// Вывод содержимого двунаправленного списка от его конца.
// *nsp - указатель на начало списка,
// *ksp - указатель на конец списка.
{
  node *rsp;

  rsp = *ksp;
  cout<<"Двунаправленный список в обратном порядке: ";
  while ((*rsp).pred!=NULL)
    { cout<< (*rsp).elem; rsp = (*rsp).pred;}
cout<<endl;
}

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




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