[Java] Listen: i-tes element der Liste löschen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Themonkey, 15. April 2011 .

  1. 15. April 2011
    Listen: i-tes element der Liste löschen

    Hi leute ich hab ein großes Problem ich soll eine Liste Programmieren: dafür stehen mir die beiden Attribute:
    Code:
    Link anfang; // 'anfang' verweist auf das erste Element der Liste,
    Link ende; // 'ende' auf das letzte Element.
    
    Zu verfügung sowie die methoden dieser Klasse Link:
    Code:
    // 'naechster' muss auf ein entsprechendes Folgeelement
     // zeigen können.
     public void setNaechster(Link naechster) {
     this.naechster = naechster;
     }
    
     public Link getNaechster() {
     return this.naechster;
     }
    
     // Ausserdem soll eine get-Methode geschrieben werden, mit welcher
     // man Zugang zu 'daten' erhaelt
     public E getDaten() {
     return daten;
     }
    }
    Mein Problem ist es das ich eine Methode schreiben die folgendes machen soll:

    Code:
    // Löscht das i-te Element der Liste und fügt es am Ende wieder ein.
    // Zählung beginnt am Anfang der Schlange bei i == 1.
    
    bis jetzt habe ich es geschafft das ich das i-te Element finde und hinten dran hänge aber ich kann das Element irgendwie nicht löschen da ich dafür den Vorgänger brauch da es nur eine einfach Verketteliste. Meine Lösung sieht bis jetzt so aus:
    Code:
    public void erneutAnstellen(int i) {
     
     Link helfer = anfang;
     Link victim = helfer;
     Link HelferZwei=anfang;
     Link victimZwei = HelferZwei;
     
     for(int k = 1; k<=i; k++)
     {
     victim=helfer;
     helfer=helfer.getNaechster();
     System.out.println("bin bei Link: "+k);
     
     }
     
     
     anstellen((E)victim.getDaten());
     
     
     }
    
    Die Methode anstellen sorgt dafür das sich victim wieder am ende der liste einfügt.
     
  2. 15. April 2011
    AW: Listen: i-tes element der Liste löschen

    naja du brauchst einfach nur ne variable, die den vorgaenger speichert. bzw das element i-1.
    den nachfolger von i-1 setzt du dann auf i+1 und schon ist das element aus der liste verschwunden

    wenn ich mich nicht irre musst du bei deinem code nur folgendes umbasteln:

    Code:
    public void erneutAnstellen(int i) {
     
     Link helfer = anfang;
     Link victim = helfer;
     Link HelferZwei=anfang;
     Link victimZwei = HelferZwei;
     
     for(int k = 1; k<i; k++)
     {
     victim=helfer;
     helfer=helfer.getNaechster();
     System.out.println("bin bei Link: "+k);
     
     }
     
     
     anstellen((E)helfer.getDaten());
    
     victim.setNaechster(helfer.getNaechster());
     
     }
    
    
    so haelt deine schleife beim element i-1 an und in "helfer" is das element, dass du loeschen willst gespeichert
     
  3. 15. April 2011
    AW: Listen: i-tes element der Liste löschen

    Da ich mich mit Java nicht auskenne und ich nicht weiß was Link bei dir ist, fasse ich die Antwort etwas algemeiner.

    Bei einer Liste zeigt ja eine Referenz immer auf das nächte Element.
    Das heißt du musst einfach wenn du bei dem element i-1 bist Element._next in lastElement._next speichern und sagen Element._next = Element._next._next dann steht dein Element an letzer stelle. Anschließend setzt du noch lastElement = lastElement._next und schon bist du fertig

    Achtung lösung ist in C# müsste aber 1:1 auf Java übertragbar sein
     
  4. 15. April 2011
    AW: Listen: i-tes element der Liste löschen

    das war es was mir gefehlt hat. danke an euch beiden hatte vergessen das Vorgänger von i i-1 ist hab es jetzt so gelöst indem ich eine zweite for-schleife laufen lasse die bis i-1 geht thx euch beiden.

    Ich bräuchte aber neue hilfe mit meinem selbst gemachten Iterator :/ der will nicht sowie ich will bekomm andauert eine Exception in thread "main" java.lang.NullPointerException =( kennt sich jemand hier gut mit java aus und kann mal mein ganzen quell code checken und nach fehlern prüfen weil ich keine finde =(
     
  5. 17. April 2011
    AW: Listen: i-tes element der Liste löschen

    du musst einfach überprüfen ob helfer.getNaechster() == null wenn er das ist einfach abbrechen.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.