Verkettete Liste rückwärts ausgeben

slaner

Mitglied
Hallo zusammen,

Ich habe angefangen Java zu lernen und habe die Aufgabe bekommen die Ausgabe der folgenden einfach verkettete Liste rückwärts ausgeben zu lassen.

Java:
class Listelement { 
      String daten; 
      Listelement naechster; 
      Listelement letzter; 					
      
      public Listelement()
      {
         if (letzter == null)
            letzter = this;
      }
      void setDaten(String datenNeu) {       	
         daten = datenNeu; 
         naechster = null; 
      } 
      void anhaengen(String datenNeu) {         
         if (naechster == null) { 
            naechster = new Listelement(); 
            naechster.setDaten(datenNeu); 
            letzter = naechster;  				
         } 
         
         else 
            naechster.anhaengen(datenNeu); 
        
         System.out.println("Daten " + datenNeu + " wurden eingefügt."); 
      } 
      void ausgeben() { 						
         System.out.println(daten); 
         if (naechster != null) 
        	 naechster.ausgeben(); 
      } 
} 
public class ketterück { 
   public 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(); 
   } 
}

Leider weiß ich nicht so genau wie ich das anstellen kann. Könnt Ihr mir vielleicht ein paar Tipps geben?

Vielen Dank schon mal.
 

Landei

Top Contributor
Angenommen, du befindest dich im ersten ListenElement. Dann müsstest du alle folgenden ListenElemente rückwärts ausgeben, und dass [edit: und _/dann/schließlich] das erste ListenElement selbst. Angenommen, du befindest dich im zweiten ListenElement... Erkennst du ein Muster?
 
Zuletzt bearbeitet von einem Moderator:

fastjack

Top Contributor
Vermutlich rekursiv vom letzten beginnend, bis Du den ersten hast, der keinen letzten hat ;)

Mal's Dir einfach auf und schmeiß die Umlaute aus dem Sourcecode.
 

slaner

Mitglied
Danke schon mal für eure Tipps. Werde nachher gleich mal probieren.

@langhaar Bin leider noch nicht so weit. Wie funktioniert das mit dem Stack genau?

Lg
 

fastjack

Top Contributor
Du iterierst von vorn nach hinten durch die Liste und packst jedes Element auf einen Stack. Am Ende räumst Du den Stack wieder ab. Damit hast Du reverse order. Wenn die Aufgabenstellung von der Uni/Schule ist, weis ich aber nicht, ob es so in deren Sinne ist...
 

langhaar!

Bekanntes Mitglied
Wie funktioniert das mit dem Stack genau?

Der Stack ist eine Datenstruktur, die du dir wie eine Ablage vorstellen kannst. Du kannst nur Daten oben auf einen Stapel legen und kannst immer nur das oberste Element entnehmen.

Wenn du deine Liste Element für Element auf einen Stapel legst, dann ist das erste Element ganz unten und das letzte Element ganz oben. Bei der Entnahme kannst du immer nur das oberste Element nehmen. Somit bekommst du die umgekehrte Reihenfolge.

Übrigens wird Rekursion intern auch mit Stacks verwirklicht. Somit entsprechen sich die hier vorgestellen Lösungen. Die Verwendung von Rekursion ist eleganter und akademischer.
 

langhaar!

Bekanntes Mitglied
Umgekehrt könnte man sagen: du brauchst keine Rekursion (obwohl es so auch funktioniert), nur einen Stack.

Da es aber eine Übungsaufgabe ist, wird vermutlich die rekursive Lösung angestrebt sein.
 

slaner

Mitglied
Stimmt. Ich soll die Aufgabe Rekursiv lösen. Werd mich gleich mal dran setzten und es versuchen. Habt mir auf jeden Fall schon mal sehr weiter geholfen. :toll:
 

slaner

Mitglied
So hat leider etwas gedauert bis ich es versuchen konnte. Leider komm ich nicht dahinter wie es mit der Rekursion funktionieren soll. Hab auch schon mal etwas gegoogelt aber da ist alles irgendwie nicht so für anfänger beschrieben oder ich kapier es einfach nicht ;(. Wie muss ich das angehen? Könnt ihr mir vieleicht noch ein paar Tipps geben? :oops:
 
F

Firephoenix

Gast
Rekursion ist immer eine Übungssache und auch eine Frage der Kreativität.
In deinem Fall könnte man sich folgendes überlegen:

Du hast eine rekursive Funktion die eine Liste kriegt und diese Rückwärts ausgeben soll.

Als erstes brauchst du einen Rekursionsanker, dieser besteht fast immer aus den trivialfällen.
Diese sind in dem Fall: Liste ist leer und Liste hat nur in Element.

Liste ist leer ist sogar kein Anker, sondern wirklich nur ein Trivialfall.
Wenn die Liste nur ein Element hat gibt man das Element aus und hat sie Rückwärts ausgeben.

Jetzt kommt der Spannende Teil, was machst du wenn die Liste mehr als 1 Element hat (z.b. 3).

Du merkst dir das erste Element der Liste, entfernst es aus der Liste, gibst die restliche Liste rückwärts aus und anschließend das erste Element.

So wenn man jetzt ganz genau aufgepasst hat kommt man schon darauf wo die rekursion stattfindet "gibst die restliche Liste rückwärts aus"...


Beispiel des Ablaufs:

Aufruf mit Liste A,B,C
Größer 0 und Größer 1
Also A merken
---Aufruf mit Liste B,C
---Größer 0 und Größer 1
---Also B merken
------Aufruf mit Liste C
------Größer 0 und gleich 1
------Also C ausgeben
---Das gemerkte B ausgeben
Das gemerkte A ausgeben

Damit sollte die Methode eigentlich leicht machbar sein, falls was nicht klappt einfach deinen Code mal posten.
Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 18
V Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 3
M Verkettete Liste Java Basics - Anfänger-Themen 1
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
A Verkettete Liste Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
H Verkettete Liste Java Basics - Anfänger-Themen 7
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
G 2 Aufgabe rund um eine verkettete Liste Java Basics - Anfänger-Themen 2
O Verkettete Liste Java Basics - Anfänger-Themen 10
E Methoden auf von Methoden erstellte Objekte zugreifen (verkettete Liste) Java Basics - Anfänger-Themen 10
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
S Doppelt verkettete Liste Java Basics - Anfänger-Themen 3
G Doppelt Verkettete Liste Java Basics - Anfänger-Themen 2
A Doppelt Verkettete Liste Java Basics - Anfänger-Themen 16
E doppelt verkettete liste Java Basics - Anfänger-Themen 10
V Verkettete Liste. Java Basics - Anfänger-Themen 7
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
K Verkettete Liste - Methode entwerfen Java Basics - Anfänger-Themen 14
B Insertionsort verkettete Liste Java Basics - Anfänger-Themen 4
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
R verkettete liste ansEndeSchieben Java Basics - Anfänger-Themen 13
T Verkettete Liste Java Basics - Anfänger-Themen 14
A Klassen Innere Klassen, verkettete Liste Java Basics - Anfänger-Themen 9
B Zweifach-verkettete Liste umkehren Java Basics - Anfänger-Themen 6
X verkettete Liste Java Basics - Anfänger-Themen 13
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
kae verkettete Liste Java Basics - Anfänger-Themen 5
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
B OOP Verkettete Liste Java Basics - Anfänger-Themen 7
R verkettete liste Java Basics - Anfänger-Themen 5
M Verkettete Liste Java Basics - Anfänger-Themen 4
M verkettete liste Java Basics - Anfänger-Themen 7
N doppelt verkettete liste einfügen Java Basics - Anfänger-Themen 7
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
N einfach verkettete liste Java Basics - Anfänger-Themen 3
G verkettete Liste - invertieren Java Basics - Anfänger-Themen 2
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
B verkettete Liste Java Basics - Anfänger-Themen 8
S zyklisch verkettete Liste erstellen Java Basics - Anfänger-Themen 3
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
J verkettete Liste Java Basics - Anfänger-Themen 2
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
DasDogma Verkettete Liste - Element löschen Java Basics - Anfänger-Themen 2
H Verkettete Liste Java Basics - Anfänger-Themen 5
M verkettete Liste auslesen Java Basics - Anfänger-Themen 7
K eigene verkettete Liste Java Basics - Anfänger-Themen 4
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
A Eine verkettete Liste Java Basics - Anfänger-Themen 43
G verkettete lineare Liste Java Basics - Anfänger-Themen 2
L verkettete Liste - Ausgabeproblem Java Basics - Anfänger-Themen 2
G Wie kann ich eine verkettete Liste in ein JTable einfügen? Java Basics - Anfänger-Themen 7
D doppelt verkettete Liste Java Basics - Anfänger-Themen 16
S Doppelt Verkettete Liste Java Basics - Anfänger-Themen 7
R ArrayList Objekt -> verkettete Liste Java Basics - Anfänger-Themen 4
R verkettete Liste Java Basics - Anfänger-Themen 13
R verkettete Liste in und aus Datei Java Basics - Anfänger-Themen 5
M Doppelt verkettete Liste Zeiger Vorgänger beim Einfügen Java Basics - Anfänger-Themen 2
J doppelt verkettete Liste Java Basics - Anfänger-Themen 5
L doppelt verkettete Liste Java Basics - Anfänger-Themen 6
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 12
G Dopplelt verkettete liste Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste Java Basics - Anfänger-Themen 16
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben