Methoden Einfach verkettete Liste: Universelle toString-Methode

lesni

Mitglied
Liebe Leute,

ich habe eine einfach verkettete Liste programmiert, deren Elemente ich nach diversen Methodenaufrufen auf dem Schirm ausgeben möchte. Dafür habe ich eine toString-Methode in der Listenklasse geschrieben, die zwar funktioniert, aber m.E. ein zu kurz gegriffener Workaround ist (bspw. habe ich einen extra Hilfsarray 'String[] ausgabe' schreiben müssen). Die Methode funktioniert naturgemäß leider nicht für beliebig lange Listen.

Meine Frage an euch: Wie kann ich die toString-Methode allgemeiner gestalten? Irgendwie habe ich ein Brett vor dem Kopf - wäre nett, wenn mir jemand einen Denkanstoß geben könnte!

Die Klassenattribute:
Java:
private Node head;	// Kopfknoten
private Node prev;	// Vorheriger Knoten
private Node curr;	// Aktueller Knoten
String[] ausgabe;	// String-Array fuer toString-Methode
Meine toString-Methode:
Java:
public String toString()
{
	curr = head;
	ausgabe = new String[4];
	int i = 0;
	while(curr != null)
	{
		ausgabe[i] = ""+curr.getValue();
		curr = curr.next;
		i++;
	}
	return "Listenzustand: "+ausgabe[0]+", "+ausgabe[1]+", "+ausgabe[2]+", "+ausgabe[3];
}
Dank im Voraus!
lesni
 

tfa

Top Contributor
Bastel dir den String mit einem StringBuilder in einer Schleife zusammen. (Die Member-Variablen curr und ausgabe kannst du übrigens weglassen).
 

ARadauer

Top Contributor
In dem dass toString vom head ausgibst..
und der Node gibt seinen wert und den nächsten Node aus
der nächste Node gibt seinen wert und den nächsten aus
der nächste Node gibt seinen wert und den nächsten aus
der nächste Node gibt seinen wert und den nächsten aus
... der letze node gibt seinen wert aus...


so ungefähr, ungetestet:
toString der liste
Java:
    public String toString()
    {
        if(head == null){
            return "Listenzustand: head ist null";
        }else{
            return "Listenzustand: "+head.toString();
        }
}
toString vom Node..


Java:
 public String toString()
    {
        if(next == null){
            return getValue();
        }else{
            return getValue()+", "+next.toString();
        }
    }
 

lesni

Mitglied
@tfa: Verstehe deine Antwort leider noch nicht - trotzdem Danke!

@ARadauer: Danke, jetzt funktioniert es! Ich werde das nächste mal versuchen, mein Wissen um die Rekursion auch anzuwenden.

Einzig dem "return" der Knoten-toString-Methode muss im Fall einer leeren Liste noch ein String vorangestellt werden, sonst beklagt sich der Compiler darüber, dass er keinen String gefüttert bekommt.

Java:
public String toString()			// toString von 'Node'
	{
		if(next == null)
			return ""+getValue();
		else
			return getValue()+", "+next.toString();
	}
Gruß
lesni
 

Neue Themen


Oben