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

    На этом шаге мы рассмотрим другой способ поиска звена в списке.

    Рассмотрим алгоритм поиска элемента, начиная с конца списка.

    Рабочий указатель устанавливается на последнее звено двунаправленного списка. Анализ содержимого информационных полей происходит таким же образом, как и в функции PoiskForward(), только рабочий указатель q теперь перемещается в "обратном" направлении с помощью оператора q = (*q).pred;.

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

node *PoiskBack (int el,node **nsp,node **ksp)
// Функция возвращает указатель на найденное звено, 
// содержащее элемент el двунаправленного списка,  
// заданного указателями *nsp и *ksp, или NULL, если 
// звено в списке не найдено.
{
  node *q;
  node *Res;

  Res = NULL; q = *ksp;
  while (q!=NULL && Res==NULL)
    { if ((*q).elem==el) Res = q; else q = (*q).pred;}
  return Res;
}

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




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