На этом шаге мы рассмотрим удаление звена однонаправленного кольцевого списка с включенным заглавным звеном..
Рассмотрим два случая:
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;
На следующем шаге мы рассмотрим кольцевые однонаправленные списки с удаленным заглавным звеном.