Suche Hello-World Beispiel für Anwendung von Listen
-
Hallo,
ich erstelle eine Präsentation über verkettete Listen und suche nun ein passendes Beispiel, das sich wenn möglich haupsächlich auf die Listen konzentrieren und nicht unnötigen Schnickschnack dabei ist. Also sowas wie Fakultät als typisches Beispiel für rekursive Funktionen.
Bevor ich hier missverstanden werde: Es geht mir _nicht_ um eine implementierung von der Liste, sondern über eine exemplarische main-Funktion die in wenigen Zeilen ein Beispiel aufzeigt das a) praxisorientiert ist, und b) die Vorüge von einer Liste nutzt.
Mir fällt einfach nichts passendes ein. Hoffe es ist klar was ich suche.
Gruß
-
Wie wärs mit ner Wegbeschreibung.
"Erst rechts, dann links, 2 km, ............."
-
Ne Speicherverwaltung die immer Blöcke rausgibt. Die freien speicherst du in ner verketteten Liste und hängst sie aus, wenn sie freigegeben werden. Das ganze machst für eine Klasse (deiner Wahl), so dass alle Blöcke ne feste Größe haben.
Sowas findest du auch in (Mehr) Effektiv C++ oder Exceptional C++, weiß nicht mehr genau wo, aber kannst ja mal nachschauen, wenn du die Bücher hast.
-
User--- schrieb:
Ne Speicherverwaltung die immer Blöcke rausgibt. Die freien speicherst du in ner verketteten Liste und hängst sie aus, wenn sie freigegeben werden. Das ganze machst für eine Klasse (deiner Wahl), so dass alle Blöcke ne feste Größe haben.
Sowas findest du auch in (Mehr) Effektiv C++ oder Exceptional C++, weiß nicht mehr genau wo, aber kannst ja mal nachschauen, wenn du die Bücher hast.Plob um einen Eindruck zu ermitteln wie der Wissenstand (der anderen^^) ist:
- Noch nichts mit der STL gearbeitet, da will ich am Ende noch einen Ausblick geben
- Keine Templates (will ich nicht auch nicht noch mit einbinden, wäre zu viel. Ich werde also mit einem festen Datentyp arbeiten)
- IMO Einstieg in OOP: VererbungIch glaube also schon dass dieses Beispiel zu viel Schnickschnack ist. Da würde es schon nen Thema sein das Anwendungsgebiet zu erklären. Der Schwerpunkt soll natürlich auf den Listen liegen.
Es sollte also was ganz ganz einfach sein. Und nur ein billiges Menü mit insert/list/delete ist mir nicht praxisbezogen genug.
Gruß
-
Du könntest mit der Liste ne Priority-Queue implementieren und dann nen kleines Tool das Aufgaben verwaltet, sie nach Prioritäten sortiert, eintragen, bearbeiten und löschen. Ne Priority-Queue ist ja schnell erklärt (wobei es bei ner Liste eigentlich auch net viel zu sagen gibt).
-
mal für die uni geschrieben (ist leider nicht der funktionierende quellcode, aber vom prinzip her *g*):
// knotenstruktur struct listElement{ *listElement next; int value; }; *listElement searchNode(*listElement root, int value) { while(root->next != null) { if(root->next == value) { return root->next; } root = root->next; // zum nächsten } // nicht gefunden } *listElement getElement(*listElement root, int element_pos) { int mypos = 0; while(root->next != null && mypos <= element_pos) { root = root->next; mypos++; } return root; } // fehlt noch ne funktion um ein element einzufügen .. läuft änlich .. vom anfang starten und dann bis ans ende laufen und ein neues element einfügen .. falls das ganze sortiert eingefügt werdn soll entsprechende funktion // außerdem gehört hier noch die funktion hin um ein element zu löschen .. zeiger dazu einfach rumbiegen und speicher freigeben int main(String[] argv) { //dann brauchst du in der main deinen root knoten den du dir merkst *listElement root = new *listElement; root->value = 0; // hier würd man elemente einfügen // exemplarische suche *listElement found_node = searchNode(root, 5); // exemplarisches element-per-index holen *listElement got_node = getElement(root, 2); // man kann auch im ersten knoten (root) elemente speichern, muss man aber nicht .. ist eine reine implementierungssache und der schönheitshalber vielleicht angebracht :D }keine gewähr über funktionalität .. hab ich grad getextet

ACHTUNG! hab gleich mal nen bug gefunden
habs zwar nicht compiliert aber da dürftest bissl probleme bekommen wo der immer auf zeiger arbeitet und somit root in den funktionen überschrieben wird .. mit dem ersten funktionsaufruf verlierst du deine wurzel .. um das zu vermeiden einfach ein neues element = root setzen und über das neue element die schleife laufen lassen ..
-
Bevor ich hier missverstanden werde: Es geht mir _nicht_ um eine implementierung von der Liste, sondern über eine exemplarische main-Funktion die in wenigen Zeilen ein Beispiel aufzeigt das a) praxisorientiert ist, und b) die Vorüge von einer Liste nutzt.
gruß
-
versteh irgendwie nicht ganz.
also brauchst du ein testprogramm dazu?

wenn du ein testprogramm brauchst, dann mach dir halt ein vergleich von liste zu array implementierung.
einmal machst du einen testlauf und fügst 1000 elemente in die liste ein und 1000 elemente in den array (ohne vorher die zu allokierende speichergröße des arrays zu kennen und somit den array ständig größer machen zu müssen)
dann machst du einen sort darauf über InsertionSort oder bubblesort (da dort der aufwand stets konstant "anzahl_der_elemente*anzahl_der_elemente" ist und somit das ergebnis der testbench nicht durch willkürliche zahlenfolgen verfälscht und der sortieralgorithmus deine messung bestimmt) oder falls du auf ein höheres sortierverfahren zurückgreifen willst auch mergesort oder sonstwas (dürfte allerdings für listen aufwendig werden sowas zu implementieren
)anschließend liest du ein paar mal aus array und liste (wirst sehen liste wird um einiges länger dauern als array da array konstante zugriffszeit und liste im schnitt "anzahl_der_elemente/2")
und anschließend noch pop ..
das ganze zeitlich abmessen und eventuell ein paar global variablen einfügen um vergleiche und zuweisungen mitprotokollieren zu können und die sache wär schon gegessen ..
was andres kannst meiner meinung nach irgendwie nicht machen mit liste ..
greetz
PS: keine ahnung ob du den array vergleich brauchst, war nur mal ne idee von mir

-
FireFlow schrieb:
ich erstelle eine Präsentation über verkettete Listen und suche nun ein passendes Beispiel, das sich wenn möglich haupsächlich auf die Listen konzentrieren und nicht unnötigen Schnickschnack dabei ist. Also sowas wie Fakultät als typisches Beispiel für rekursive Funktionen.
Eine Liste aus Filtern. Da werden dann Daten durchgereicht und je nach Anordnung kommt was anderes raus. Und dann zeigst du wie toll man die Filter irgendwo in der Mitte reintun kann oder auch erst am Ende.
Z.B. werden ints durchgereicht. Beim ersten Filter wird -1 gerechnet, bei zweiten mit 2 multipliziert. Wenn man das vertauscht, kommt wieder etwas anderes raus.
-
*push*
Jemand villeicht noch ne andere Iddee?
Gruß
-
Hm ne Ringliste für gleitende Mittelwert-Bildung.
Über ein Messgerät X kommen periodisch neue Werte rein (nehmen wir an, der Tacho beim Auto) - über die letzten 10 Werte möchte man den Mittelwert haben.
Jetzt hat man ne Ringliste von 10 Elementen. Arbeitsschritte:
1. eins weiter in der Liste, neuen Wert eintragen
2. 10 mal vorwärts und jeweils die Werte aufsummieren - Mittelwert berechnen
3. weiter bei 1