Hallo,
das vorgeschlagene Verfahren habe ich leider nicht ganz
verstanden, kannst du villeicht ein Beispiel machen.
Nehmen wir an, du willst nur 5 Werte speichern. Du hast ein array
double a[5];
und einen Zeiger auf die Position, als der du als nächstes etwas hereinschreiben willst:
int p = 0
Jedes mal, wenn du einen Wert einfügst, erhöhst du p um eins:
void push(double a[5], int p, double new\_val){
a[p] = new\_val;
p++;
p %= 5; /\* Wenn du bei 5 angekommen bist, setze p auf 0 zurueck \*/
}
Das zuletzt eingefügte Element ist bei p-1, wenn p == 0 ist bei 4:
double last\_inserted(double a[5], int p){
return a[(p + 5 - 1) % 5];
}
Das vorletzte dann entsprechend bei a[(p+5-2) % 5] etc.
Das +5 brauchst du, weil x % 5 für negative x auch negative Werte liefert, Zahlen kleiner 0 sind aber als Index nicht zulässig.
Beispiel: du fügst die Zahlen 1 bis 7 ein, am Anfang hat das Array die Werte 0 0 0 0 0
1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 3 4 5
6 2 3 4 5
6 7 3 4 5
Hast du das System verstanden?
Du musst in deiner Anwendung natürlich immer die 5 durch die Anzahl der zu speichernden Elemente ersetzen…
Grüße,
Moritz