-
der Vorteil einer verketteten Liste ist weniger Speicherverwürfelung, erzeuge ich eine Liste mit 10 Elementen und ist diese dynamisch aber im Speicher als Array konzipiert, ist der Zugriff auf einzelne Elemente schneller als bei eienr verketteten Liste. Eine Änderung der größe bedingt dann allerdings dass man genug Platz übrig haben muss und ggf. die ganze Liste irgendwo neu hinkopieren muss.
Eine verkettete Liste muss nur das Speicher-Objekt erzeugen und die Kettenglieder verlinken, daher habe ich das extra erwähnt, allerdings auf kosten der Suchzeit nach Einzel-Elementen, da man erst die Elemente einzeln über die Kettenglieder ablaufen muss (gerade auf dem meist begrenztem RAM eines µC)
Rand Info: C# und Java brauchen kein "klassisches" Speicher Management bei dem man sich selbst um das löschen der Objekte kümmern muss, die lassen das Objekt einfach liegen und ein Mechanismus genannt Garbage Collector räumt hinterher auf, indem er zur Laufzeit (ich meiner hier die Zeit wenn die Applikation arbeitet und nicht pausiert ist) die Objekte im Speicher prüft ob noch Refereenzen darauf existieren und diese ggf. zum löschen markiert. In einem kurzen Zeitfenster, in dem die Applikation dann angehalten wird, löscht er die Objekte aus dem Speicher. (ACHTUNG: das war sehr vereinfacht und umfasst nichtmal 10% der tatsächlichen Speicheverwaltung oder Nebenwirkungen die damit einhergehen)
-
Noch ein paar pros/cons dazu:
Wegen des begrentzen RAMs bei Arduinos ist die Anzahl der verketteten Listen-Einträge ebenfalls nur recht klein und wird nicht zu einem Geschwindigkeitsproblem führen.
Blättern vor/zurück lässt sich mit einer doppelt verketteten Liste erhöhen.
Zeitkritsch sind eher schon SD-Lade- und Speichervorgänge, aber auch das wird sich bei der zwangsläufigen Listenkürze in Grenzen halten.
Da man solche Listeneinträge sicher nicht jede Sekunde immer wieder neu erzeugt und andere löscht, wird es vermutich auch nicht massive Speicherfragmentierung oder gar Speichergarbage geben, und bei jedem Neustart wird ja auch immer wieder neu aufgeräumt, also ist man wohl mit new/delete auf der hinreichend sicheren Seite, während andererseits auto_ptr etc. wieder deutlich höheren Speicherbedarf hat.