Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: FIFO-Array, gibt es soetwas?

  Alt 16. Mär 2013, 12:11
Also ich würde mal überlegen, ob nicht eine Double-Ended-Queue alle Wünsche erfüllen kann.
Intern würde man die Dequeue als Ringspeicher mit einem dynamischen Array organisieren.
Es gibt einen "Top" und "Bottom"-Index mit denen man jeweils das obere und untere Ende der Queue markiert.
Sollte der Ringpuffer überlaufen, weil der Top-Index den Bottom-Index überholt, wird der Ringpuffer in der Grösse verdoppelt und die Daten kopiert.

Es gibt folgende Methoden:
PUSH und POP für das Einfügen oder Entnehmen eines Elements am hinteren Ende der Deque.
PUT und GET für das Einfügen oder Entnehmen am vorderen Ende der Deque.
FIRST und LAST für das Lesen des ersten oder letzten Elementes, ohne es zu entfernen.
Auuserdem gibt es noch das Property Count für den aktuellen Füllstand und das Property Capacity für die Grösse des Ringpuffers.

Damit das für Bytes noch etwas effizienter wird, kann man bei den Methoden Pop und Get noch die Anzahl der Bytes mitgeben, die man auslesen möchte.

Das wäre doch mal eine schöne Herausforderung für Delphiprogrammierer mit fortgeschrittenen Kenntnissen.
  Mit Zitat antworten Zitat