Die verlinkte Implementierung erlaubt ggf. nicht, dass der Puffer
überläuft bzw. älteste Werte automatisch überschrieben werden. Wenn der
Puffer voll ist, werden keine neuen Werte gespeichert, du willst aber
die ältesten verwerfen.
Grundsätzlich empfehle ich zum Ringpuffer, das mal auf einem Papier
aufzuzeichnen.
Ein Array, mit z.B. 5 Elementen, dazu dann ein Schreib und ein
Lesezeiger (ruhig mit 2 Farben direkt auf die Zelle zeigen, oder
oberhalb der Arrayzeile den Schreibzeiger, unterhalb den Lesezeiger.
Und dann empfehle ich, von Hand alle notwendigen Operationen
durchzuspielen. Auch so Mini-Funktionen wie die Abfrage, ob der Puffer
voll oder leer ist, wie viele Elemente gespeichert sind etc. Die kann
man später inline oder als Makro programmieren. Dabei wirklich auf dem
Papier was ins Array schreiben und neue Zeiger malen, wenn sie geändert
wurden.
Und dann kann man mehrere Varianten ausprobieren: zeigt z.B. der
Schreibzeiger auf das Feld, das zuletzt geschrieben wurde oder auf das,
das als nächstes beschrieben wird? Auch Fälle probieren, wo ein Zeiger
den Wraparound schon gemacht hat, der andere noch nicht.
Wenn man es mal verstanden hat ist ein Ringpuffer einfach. Aber die
Off-By-One-Fehlermöglichkeiten sind trickreich, vom-Hirn-ins-Terminal
ohne den Papier-Zwischenschritt geht oft schief.