Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#8

AW: Konzept: Netzwerkprotokoll

  Alt 24. Sep 2012, 07:43
Wenn Du mit 2^16 Übertragungen rechnest, solltest Du deine Lookuptabelle nicht als unsortiertes Array konzipieren. Verwende lieber doppelt-verkettete Liste für die freigegebenen Sende-IDs.

Delphi-Quellcode:
Function GetNewID : Integer;
Begin
  If FreeList.IsEmpty Then begin
    If HighestID = MAXWORD Then Raise Exception....;
    HighestID := HighestID + 1;
    Result := HighestID;
  End
  else Begin
    Result := FreeList.First;
    FreeList.RemoveFirstElement;
  End;
End;

Procedure DiscardUsedID (aIDWhichIsNoLongerInUse : Integer);
Begin
  FreeList.InsertAtFront(aIDWhichIsNoLongerInUse);
End;
So ist der Aufwand immer O(1), anstatt O(n) bei deiner Variante.
  Mit Zitat antworten Zitat