Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Verkettete Liste rückwärts ausgeben
nytrec
myCSharp.de - Member



Dabei seit:
Beiträge: 37

Themenstarter:

Verkettete Liste rückwärts ausgeben

beantworten | zitieren | melden

Hallo zusammen,

ich sitze hier vor einer Aufgabe. Ich möchte aus dem Code eine Methode erzeugen, die eine einfach verketteten Liste rückwärts ausgibt.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    class Listenelement
    {
        string daten;
        Listenelement naechster;

        public void SetDaten(string datenNeu)
        {
            daten = datenNeu;
            naechster = null;
        }

        public void Anhaengen(string datenNeu)
        {
            if (naechster == null)
            {
                naechster = new Listenelement();
                naechster.SetDaten(datenNeu);
            }
            else
            {
                naechster.Anhaengen(datenNeu);
            }
            Console.WriteLine("Sie haben {0} eingefügt!", datenNeu);
        }

        public void Ausgeben()
        {
            Console.WriteLine(daten);
            if (naechster != null)
            {
                naechster.Ausgeben();
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Listenelement listenAnfang = new Listenelement();

                listenAnfang.SetDaten("Element 1");
                for (int element = 2; element < 4; element++)
                    listenAnfang.Anhaengen("element " + element);

                listenAnfang.Ausgeben();
            }
        }
    }
}

Ich habe bislang folgendes gemacht:

 Listenelement naechster, vorheriger;

public void DoppeltVerketteteListe(string datenNeu)
        {
            if (naechster == null)
            {
                naechster = new Listenelement();
                naechster.SetDaten(datenNeu);
            }
            else
            {
                vorheriger.Anhaengen(datenNeu);
                vorheriger = vorheriger.naechster; 
            }
        }

Aber das müsste ja eh falsch sein. Ich habe ehrlich gesagt keinen Schimmer, wie ich das mache. Brauche unbedingt Hilfe. :(
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1838
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Ich hoffe du willst keine eigene verkettet Liste bauen.
C# bietet dafür die LinkedList<T> aus dem Generics Namespace.

Link:https://docs.microsoft.com/de-de/dotnet/api/system.collections.generic.linkedlist-1?view=netframework-4.7.2

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
nytrec
myCSharp.de - Member



Dabei seit:
Beiträge: 37

Themenstarter:

beantworten | zitieren | melden

Zitat
Ich hoffe du willst keine eigene verkettet Liste bauen.

Nein, es dient zum Lernzweck!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15833
Herkunft: BW

beantworten | zitieren | melden

Wo hängst denn?
Musst halt das Element suchen, das kein Nachfolger hat.
Und dann kannst ja jeweils rückwärts gehen...
private Nachricht | Beiträge des Benutzers
ThomasE.
myCSharp.de - Member



Dabei seit:
Beiträge: 453

beantworten | zitieren | melden

Hallo nytrec,

wie sieht denn der aktuelle Code aus? Oder soll das Rückwärts ausgeben mit dem obigen Beispiel Listenelement gemacht werden?

Meine Fragen beziehen sich auf das:

Listenelement naechster, vorheriger;

da vorheriger oben nicht existiert?


Grüße
Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen...
private Nachricht | Beiträge des Benutzers