Einfache verkettetene Liste..
-
Hallo an das Forum!
ich brauche Hilfe bei diesen Code. Ich möchte die Liste so erweitern, so dass das Listenende beim Anhängen nicht immer wieder neu ermittelt werden muss, sondern neue Elemente direkt am Ende der Liste angehängt werden können.
Vorallem ich soll neben den Anfang jetzt auch das Ende der Liste in einer eigene Instanz speichern können...
Hat jemand eine Idee?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace liste { //die Klasse für die Listenelemente //jetzt auch mit Methoden class Listenelement { string daten; Listenelement naechster; //die Methode zum Setzen der Daten public void SetDaten(string datenNeu) { //die Zeichenkette setzen daten = datenNeu; //das Ende markieren naechster = null; } //die Methode zum Anhängen eines neuen Elements //sie ruft sich rekursiv auf, bis das Ende erreicht ist public void Anhaengen(string datenNeu) { //wenn das Ende erreicht ist, ein neues Element erzeugen if (naechster == null) { naechster = new Listenelement(); naechster.SetDaten(datenNeu); } //sonst ruft sich die Methode selbst wieder auf else naechster.Anhaengen(datenNeu); //zur Veranschaulichung der Rekursion Console.WriteLine("Daten {0} wurden eingefügt.", datenNeu); } //die Methode zur Ausgabe der Liste //sie ruft sich ebenfalls rekursiv auf, bis das //Ende erreicht ist public void Ausgeben() { Console.WriteLine(daten); if (naechster != null) naechster.Ausgeben(); } } class Program { static void Main(string[] args) { //ein neues Listenelement erzeugen Listenelement listenAnfang = new Listenelement(); //die Daten im ersten Listenelement setzen listenAnfang.SetDaten("Element 1"); //weitere Elemente in einer Schleife anfügen for (int element = 2; element < 4; element++) listenAnfang.Anhaengen("Element " + element); //die Liste ausgeben listenAnfang.Ausgeben(); } } }
-
Neben der Klasse
Listenelement
könntest Du auch eine KlasseListe
einführen. Die merkt sich einfach das erste und letzte Element und bietet Methoden wieAnhaengen
an, welche wiederum die gleichnamige Methode der Elemente aufruft.Statt mittels Rekursion wäre es schöner wenn
Anhaengen
mit einer Schleife arbeiten würde.Übrigens: Englisch-Deutsch-Mischmasch ist nicht so toll. Sowas wie SetDaten tut in den Augen weh
Vielleicht gänzlich auf Englisch umsteigen bei Bezeichnern, das ist eigentlich die gängige Praxis.
-
µ schrieb:
Neben der Klasse
Listenelement
könntest Du auch eine KlasseListe
einführen. Die merkt sich einfach das erste und letzte Element und bietet Methoden wieAnhaengen
an, welche wiederum die gleichnamige Methode der Elemente aufruft.Statt mittels Rekursion wäre es schöner wenn
Anhaengen
mit einer Schleife arbeiten würde.Übrigens: Englisch-Deutsch-Mischmasch ist nicht so toll. Sowas wie SetDaten tut in den Augen weh
Vielleicht gänzlich auf Englisch umsteigen bei Bezeichnern, das ist eigentlich die gängige Praxis.
Hallo µ!
Danke für deine Tipp, ich weiß aber nicht wie ich den nach dein Tipp umsetzen soll.
Ich werde mich in Zukunft an den Deutsch Bezeichnung dranhalten!
-
anakhha schrieb:
Ich werde mich in Zukunft an den Deutsch Bezeichnung dranhalten!
-
anakhha schrieb:
Danke für deine Tipp, ich weiß aber nicht wie ich den nach dein Tipp umsetzen soll.
Hast Du obigen Code geschrieben? Dann weißt Du doch wie man eine Klasse programmiert. Nun erstellst Du noch eine zweite Klasse
List
, deren Objekte eine eigentliche Verkettete Liste repräsentieren. Diese Klasse soll das Anfangs- und Endelement als Felder speichern und ein paar Methoden anbieten um Operationen auf der Liste auszuführen.Wirklich keine Idee wie Du rangehen musst?