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

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

    Удаление звена, на которое указывает pCKey, осуществляется процедурой:

 Procedure Del_Elem1 (pCKey: PtrRec);
 Var q, pAux: PtrRec;
 Begin
     If pCKey^.pNext=pCKey 
      Then
        Begin
         pBegin^.pNext := Nil;	
         Writeln ('Кольцо пусто!')
        End
       Else
        Begin
         q := pBegin;
         pAux := pBegin^.pNext;
         While pAux <> pCKey do
           Begin
               q := pAux;
               pAux := pAux^.pNext;
           End;
         q^.pNext := q^.pNext^.pNext;
         Dispose (pAux);
     End
 End;

    Удаление звена, следующего за звеном, заданным указателем pCKey, осуществляется процедурой:

 Procedure Del_Elem2 (pCKey: PtrRec);
 Var pAux: PtrRec;
 Begin
     If pCKey^.pNext <> pBegin^.pNext
       Then
         Begin
          pAux := pCKey^.pNext;
          pCKey^.pNext := pCKey^.pNext^.pNext;
          Dispose (q);
         End
       Else 
        If pCKey^.pNext=pCKey
           Then
            Begin
             Writeln ('Кольцо пусто!');
             pBegin^.pNext := Nil;
             Dispose (pCKey);
            End
             Else
              Begin
               pAux := pBegin^.pNext;
               pCKey^.pNext := pCKey^.pNext^.pNext;
               p:= pCKey^.pNext;  {ПРОВЕРИТЬ!!!}
               Dispose (pAux);
             End
 End;

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




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