Laden...

Verkettete Liste rückwärts ausgeben

Erstellt von nytrec vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.346 Views
N
nytrec Themenstarter:in
37 Beiträge seit 2017
vor 5 Jahren
Verkettete Liste rückwärts ausgeben

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. 😦

T
2.219 Beiträge seit 2008
vor 5 Jahren

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.

N
nytrec Themenstarter:in
37 Beiträge seit 2017
vor 5 Jahren

Ich hoffe du willst keine eigene verkettet Liste bauen.

Nein, es dient zum Lernzweck!

16.792 Beiträge seit 2008
vor 5 Jahren

Wo hängst denn?
Musst halt das Element suchen, das kein Nachfolger hat.
Und dann kannst ja jeweils rückwärts gehen...

T
461 Beiträge seit 2013
vor 5 Jahren

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... 😄