Шаг 29.
Удаление звена кольцевого списка с включенным заглавным звеном

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

    Рассмотрим два случая:

    1). Удаление звена, на который указывает указатель pCKey.

 Procedure Del_Elem1 (pCKey: PtrRec);
 Var pPredRec, pAux : PtrRec;
 Begin
     pPredRec := pBegin;	{ссылка на предыдущий}
     pAux := pBegin^.pNext;	{исключили заглавное звено}
     While pAux <> pCKey do	{двигаемся до ссылки pCKey}
         Begin
         pPredRec := pAux;	{запомним ссылку на предыдущий}
         pAux := pAux^.pNext	{перешли на следующий}
         End;
     pPredRec^.pNext := pPredRec^.pNext^.pNext;
     Dispose (pAux);
 End;

    2). Удаление звена, следующего за звеном с заданным указателем pCKey.


    Замечание.
    Удалять заглавное звено нельзя.

 Procedure Del_Elem2 (pCKey: PtrRec);
 Var pAux : PtrRec;
 Begin
   If pCKey^.pNext <> pBegin 
     Then 
       Begin	     {ссылка на следующий - не заглавное звено}
         pAux := pCKey^.pNext;
         pCKey^.pNext := pCKey^.pNext^.pNext;
       End
     Else 
       Begin	       {ссылка на следующий - заглавное звено}
          pAux := pBegin^.pNext; 	{запомним ссылку}
          pBegin^.pNext := pBegin^.pNext^.pNext;
       End
   Dispose (pAux)
 End;

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




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