Sublist

Neu_ling

Mitglied
Hallo Community.
Ich sitze gerade an einem Programm, dass von der Klasse Verweisliste abgeleitet ist. Nun sollen zwei neue Methoden implementiert werden. Die Methode public void compact soll alle null-Werte aus der Liste entfernen. Die Methode subList, liefert aus der bisherigen Liste eine neue, die alle Elemente von den Int-Variablen from bis to enthält. Ich habe die Methoden auch schon implementiert, doch leider funktionieren diese nicht so, wie ich es mir vorgestellt habe. Es wäre nett, wenn jemand mal einen Blick drüber werfen könnte.

Java:
 public void compact() {
          this.reset();
            while(!this.endpos()){
                if(pos.next== null) {
                   this.advance();
                   this.delete();
                  }
                  this.advance();
                  }
In dieser Methode gehe ich mit reset an den Anfang und prüfe solange ich noch nicht am Ende angekommen bin, ob ein null-Wert existiert.

Java:
  public SuperListe subList(int from, int to) {
        int i;
        this.reset();
        for( i=0; i < from; i++)
            this.advance();
        Eintrag hilf = new Eintrag();
        hilf.inhalt= this.elem();
        hilf.next = pos.next;

        anf.next = hilf;

          for (i=i; i<= to; i++)
              this.advance();

            for(i=i; i < (this.length()-1); i++);
                  this.delete();
                  this.advance();

           return this;
           }

In dieser Methode setze ich die Anfangsmarkierung auf die Stelle "from" in der subListe.
Danach wird alles was sich nach der Stelle "to" in der Liste befindet, gelöscht.
Beim Kompilieren erhalte ich den Fehler, dass nichts mehr gelöscht werden kann, weil die Liste schon am Ende angekommen ist.
Ich hoffe ihr könnt mir helfen.
Ich bedanke mich im Vorraus.
Neu_Ling
 
S

SlaterB

Gast
> Beim Kompilieren erhalte ich den Fehler, dass nichts mehr gelöscht werden kann

wohl kaum, beim Ausführen?

---------

niemand weiß, wie deine Klassen grundsätzlich aufgebaut sind, was Methoden wie advance() und delete() im Detail machen,
aber pauschale Vermutungen:

zu compact():
die next-Variable von pos, unbekannte Variable, unbekannte Klasse, unbekanntes Attribut mit unbekannter Bedeutung,
scheint eher für die Verknüpfung der Liste zuständig zu sein als ein 'Wert' der Liste,
gibt es nicht pos.value oder so? ach ja, elem() wird später noch verwendet?
auf elem() musst du wohl null prüfen, next == null sieht eher nach Ende der Liste aus, Pustekuchen advance()

vor dem delete() nochmal mit advance() vorauszugehen scheint unsinnig,
es sei denn du prüfst wirklich den Wert des nächsten Eintrags, aber das ist unnötig kompliziert

problematisch ist natürlich wenn das eigene Element gelöscht werden sollte,
es ist unklar wo du dich überhaupt befindest wie so unendlich viel unklar ist ohne die komplette Klasse..

zu subList():
üblicherweise verändert so eine Methode die eigene Liste NICHT, sondern erzeugt eine komplette Kopie nötiger Elemente,

was anf ist ist unbekannt, zumal du dich nach this.elem() anscheinend in einem der Kettenglieder befindest,
hat jedes einen Verweis auf den ersten Eintrag?

welche Funktion hat hilf? warum nimmst du nicht den Eintrag, von dem du elem() übernimmst, also this selber?
zu kopieren ist an sich gerade gut, aber nur einen Eintrag und den Rest nicht, das ist unnötig

am Ende gibst du auch noch this zurück, welches, je nachdem ob all das unbekannte irgendwas macht, vielleicht gar nicht mehr in der zerstörten/ zusammengebauten Liste enthalten ist
 

Ähnliche Java Themen

Neue Themen


Oben