DoublyLinkedList

Aralgut

Mitglied
Code:
public DoublyLinkedList<T> tail( int n )
    {    
        if ( size() > n )    
        {        
            DoublyLinkedList newList = new DoublyLinkedList<>();        
            Element<T> current = first;        
            int t = size() - n;        
            for ( int i = 0; i < t; i++ )        
            {
                current = current.getSucc();
            }
            newList.first = current;
            for(int i = 1; i<size; i++)
            {
                current = current.getSucc();
            }
            newList.last = current;
            newList.size = n;
            size = size- n;
            return newList;
        }
        else
        {
            throw new RuntimeException();
        }

Wo liegt der Fehler?
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Der erste Fehler ist, dass Du uns keine Details über die DoublyLinkedList gegeben hast. Daher müssen wir teilweise raten.

Dann musst Du dir das einfach einmal aufmalen: Du hast eine doppelt verkettete Liste, die Du in zwei Listen teilen willst:
Was musst Du da alles umsetzen?
=> Du scheinst ja die Zeiger first und last zu haben. Auf was müssen die denn stehen?
=> Das letzte / erste Element der jeweiligen Liste: Muss da was angepasst werden?
 

Aralgut

Mitglied
Der erste Fehler ist, dass Du uns keine Details über die DoublyLinkedList gegeben hast. Daher müssen wir teilweise raten.

Dann musst Du dir das einfach einmal aufmalen: Du hast eine doppelt verkettete Liste, die Du in zwei Listen teilen willst:
Was musst Du da alles umsetzen?
=> Du scheinst ja die Zeiger first und last zu haben. Auf was müssen die denn stehen?
=> Das letzte / erste Element der jeweiligen Liste: Muss da was angepasst werden?

first der neuen Liste muss auf t = size -n stehen. Last auf size+n.
Muss ich da noch was voneinander abtrennen?
 
K

kneitzel

Gast
Die Elemente der neuen Liste, die Du zurück gibst, sollen aber doch aus der alten Liste entfernt werden.

Desweiteren sollte doch das letzte Element der alten Liste nicht mehr auf das erste Element der neuen Liste zeigen und umgekehrt.

So ist zumindest mein Verständnis der Aufgabe.
 

Aralgut

Mitglied
Die Elemente der neuen Liste, die Du zurück gibst, sollen aber doch aus der alten Liste entfernt werden.

Desweiteren sollte doch das letzte Element der alten Liste nicht mehr auf das erste Element der neuen Liste zeigen und umgekehrt.

So ist zumindest mein Verständnis der Aufgabe.
Wie genau entferne ich denn Elemente aus der Liste? Mache ich das nicht automatisch indem ich sage, dass size() = size() -n ist?
 
K

kneitzel

Gast
Wenn Du Probleme hast, dir alles Vorzustellen, dann mal es Dir wirklich auf! Dann siehst Du es direkt.

Also mal dir eine Liste mit 4 Elementen auf. Du hast also:
- die Liste mit den Referenzen first und last und der size.
- 4 Elemete mit jedes mal content (der hier jetzt egal ist), previous und next

Mal Referenzen als ein Pfeil. Also A4 hochkant nehmen. Oben in die Mitte der Zeile kommt eine kleine Kiste an die Du von mir aus "Liste" schreibst und in der Kiste sind dann size, first und last (also von mir aus in 3 Kästen unterteilt).

Dann mit etwas Abstand kommen dann 4 Kästchen nebeneinander. Jedes Kästchen ist in der Länge in 3 Kästchen unterteilt: previous, content und next.

Da kannst Du dann jetzt zum einen Pfeile machen und die size füllen.
Wenn Du das hast, dann kannst Du Dir überlegen, was sich ändern muss, wenn nun die letzten zwei Elemente in einer neuen Liste sein sollen und nicht mehr in der alten Liste. Das kannst Du dann mit einer anderen Farbe einzeichnen. Mit dem Bild wirst Du hoffentlich sehen, dass es deutlich mehr ist, als nur die size anzupassen.
 
K

kneitzel

Gast
Ich habe da mal eine Skizze gemacht, was ich meine. Was muss alles angepasst werden? (Content der einzelnen Elemente habe ich weggelassen und die beiden Pfeile zwischen next und prev sind nicht wirklich schön, aber es sollte alles zu erkennen sein.)
12227
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A DoublyLinkedList Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben