Autor Beitrag
cslaie
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 07.12.13 16:10 
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? Soll ich dazu eine neue Klasse erstellen?

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
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();
        }
    }
}


Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt
Moderiert von user profile iconTh69: Titel geändert.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 07.12.13 16:33 
Laß dir doch von der Anhaengen Methode das erstellte (deiner programmierten Logik entsprechend das letzte) Listenelement zurüchgeben.
cslaie Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 07.12.13 17:16 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Laß dir doch von der Anhaengen Methode das erstellte (deiner programmierten Logik entsprechend das letzte) Listenelement zurüchgeben.


Hallo,

also sowas in richtung:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public void EndeAusgeben(string datenEnde)
        {
            
            datenEnde = //in diesen Fall dachte ich an datenNeu
            Console.WriteLine("Daten {0} wurden eingefügt.", datenEnde);
        }
,

Aber es ist eher warscheinlich falsch... :(

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 07.12.13 17:26 
Zitat:
also sowas in richtung:


Wo ist da die Anhängen Methode in deinem Beispiel? Nirgendwo, also nein ich dachte an was anderes ;)

In der main würde das so aussehen wenn du die Anhaengen Methode so erweiterst das sie nicht void sondern das Element zurückliefert.

ausblenden C#-Quelltext
1:
2:
3:
4:
Listenelement listenEnde;
//weitere Elemente in einer Schleife anfügen
for (int element = 2; element < 4; element++)
   listenEnde = listenAnfang.Anhaengen("Element " + element);


Dazu wären nur 3 Codeänderungen in Anhaengen nötig.