На этом шаге мы рассмотрим проход по списку, начиная с его конца.
Алгоритм перемещения может быть следующим.
Установим указатель 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; }
Со следующего шага мы начнем рассматривать основные операции над списками.