Doppelt verkettete Liste Zeiger Vorgänger beim Einfügen

Status
Nicht offen für weitere Antworten.
Hallo Leute!

Ich hab ein riesiges Problem. Ich soll von einer normalen LinkedList abgeleitet eine DoublyLinkedList erstellen und alle Funktionen neu machen die ich brauche. So vor und zurück hüpfen funktioniert, genauso wie das suchen, aber wenn ich einen neuen Knoten einfügen will (bis jetzt nur mit InsertAfter probiert) macht er das zwar, setzt mir aber keine Zeiger in dem Knoten auf den Vorgänger wie auch Nachfolger. Ich bin hier echt am verzweifeln, weil jetzt neuerdings meine deleteAfter Funktion auch noch beim compilieren rummeckert. :cry: Bitte helft mir ! *ganzLiebschau*

Code:
package Lists;

public class DoublyLinkedList extends List {
  
  //Andere Anweisungen die die Strucktur der Liste verändern und deshalb überschrieben werden müssen
  
  public void insertAfter(Object val) {
    
    if (hasActListnode() && cursor != Last) {
       //neuer Listenknoten mit den Inhalt val, einen Zeiger auf den nächsten und vorherigen
      cursor.next = new DLListnode(val, cursor.next, ((DLListnode) cursor).pred); //
      System.out.println("InsertAfter:" +val); //Abfrage
    }
      
    else if (isEmpty())
    	cursor = first = Last = new DLListnode (val, null, null);
    
    else if (cursor == Last) {
      cursor.next = Last = new DLListnode(val, null, ((DLListnode) cursor).pred); //
      System.out.println("InsertAfter:" +val); //Abfrage
    }
    
    else System.out.println ("Es kann kein Eintrag eingefügt werden...");
    

  }
  
  public void insertBefore (Object val) {
    if (hasActListnode()) {
      //neuer Listenknoten mit den Inhalt val, einen Zeiger auf den nächsten und vorherigen
      //((DLListnode) cursor).pred) = new DLListnode(cursor.val, cursor.next, ((DLListnode) cursor).pred);
      cursor.next =  new DLListnode(cursor.val, cursor.next, ((DLListnode) cursor).pred);
      cursor.val = val;
      System.out.println ("InsertBefore:" +val); //Abfrage
    }
    else if (isEmpty())
    	cursor = first = Last = new DLListnode (val, null, null);
    else System.out.println ("Es kann kein Eintrag eingefügt werden...");
  }
  
  public void deleteAfter() {
    if (existActListnodeSuccessor()) {
      Listnode del = cursor.next;
      cursor.next = cursor.next.next;
      if (cursor == first)
        ((DLListnode) cursor).pred = null;
      del.next = null;
    }
    else System.out.println("Es kann kein Eintrag gelöscht werden...");
  }
  
  public void deleteFirst() {
    if (!isEmpty()) {
      if (cursor == first)
        cursor = null;
      Listnode del = first;
      first = first.next;
      ((DLListnode) first).pred = null;
      //gelöschten Listenknoten isolieren
      del.next = null;
    }
    else System.out.println("Die Liste ist leer.");
  }

  
 public void delete() {
    if (existActListnodeSuccessor()) {
      cursor.val = cursor.next.val;
      Listnode del = cursor.next;
      cursor.next = cursor.next.next;
      ((DLListnode) cursor).pred = ((DLListnode) cursor).pred.pred;
      del.next = null;
    }
    else System.out.println("Der aktuelle Listenknoten kann nicht gelöscht werden.");
  }
  
  public DoublyLinkedList () {
    //Konstruiert eine leere doppelt verkettete Liste
  }
  
  // Festlegung des aktullen Listenknotens
  
  // letzter Listenknoten
  public void last() {
          cursor = Last;  
   
  }
  
  // vorheriger Listenknoten
  public void pred() {
    if (hasActListnode())
      cursor = ((DLListnode) cursor).pred;
    else if (cursor == first)
    	System.out.println("Es konnte kein Vörgänger gefunden werden bzw. der Cursor steht auf dem ersten Eintrag ...");
    else 
      System.out.println ("Kein Listenknoten...");
  }
  
  protected class DLListnode extends Listnode { //
    
    public DLListnode (Object val, Listnode next, DLListnode pred) {
      super(val, next);
      this.pred = pred;
    }
    
    DLListnode pred = null;
    
    
  } //DLListnode Ende
  
  //Zugriff auf die Info - Komponenten
  
  //Zugriff auf den Vorgänger des aktuellen Knotens
  public Object getValPred() {
    return existActListnodePredecessor() 
              ? ((DLListnode) cursor).pred.val : null;
  }
  
  //Ersetzung des Vorgängers des aktuellen Knotens
  public void setValPred(Object val) {
    if (existActListnodePredecessor())
      ((DLListnode) cursor).pred.val = val;
    else
      System.out.println ("Es existiert kein Vorgänger des aktuellen Knotens...");
  }
  
  // Verarbeitung der Info - Komponenten aller Listenknoten
  
  public void processListnodesReverse() { //verarbeite die Einträge von hinten nach vorne
    for (DLListnode current=Last; current != null; current=((DLListnode) current).pred)
      current.process();
  }
  
  public void findReverse(Object val) { //finde einen Eintrag vom letzten zum ersten gehend
    for (; cursor != null && !cursor.val.equals(val);cursor=((DLListnode) cursor).pred);
  }
  
  //Eigenschaften der Liste
  
  public boolean existActListnodePredecessor() { //existiert ein Vörgänger?
    return hasActListnode() && ((DLListnode) cursor).pred != null;
  }
  
  // Löschen des letzten Listenknotens
  
  public void deleteLast() {
    if (!isEmpty()) {
      if (cursor == Last)
        cursor = null;
      DLListnode del = Last;
      Last = Last.pred;
      Last.next = null;
      //gelöschten Listenknoten isolieren
      del.pred = null;
    }
    else
      System.out.println ("Die Liste ist leer...");
  }

  protected DLListnode Last = null; //letzer Knoten
  
}
 

KSG9|sebastian

Top Contributor
was beim einfügen passieren muss:

- vorgänger anpassen
- nachfolger anpassen

vorgänger.next = this
nachfolger.before = this

dann musst du vom eingefügten objekt noch den next und before anpasse.
diese dinge fehlen wie ich gesehen hab alle

und objekte sollte man mit equals vergleichen, nicht mit == (in der deleteAfter funktion)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
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
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
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
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
N doppelt verkettete liste einfügen Java Basics - Anfänger-Themen 7
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
D doppelt verkettete Liste Java Basics - Anfänger-Themen 16
S Doppelt Verkettete Liste Java Basics - Anfänger-Themen 7
J doppelt verkettete Liste Java Basics - Anfänger-Themen 5
L doppelt verkettete Liste Java Basics - Anfänger-Themen 6
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 12
B Doppelt verkettete Liste Java Basics - Anfänger-Themen 16
R Datentyp Ring - zyklisch doppelt verkettete Liste - HILFE! Java Basics - Anfänger-Themen 12
R doppelt verkettete Liste Java Basics - Anfänger-Themen 8
F doppelt verkettete liste! Java Basics - Anfänger-Themen 8
R doppelt verkettete azyklische Liste Java Basics - Anfänger-Themen 2
T Klasse in Java für doppelt verkettete Listen Java Basics - Anfänger-Themen 4
H Doppelt verkettete Listen Java Basics - Anfänger-Themen 2
S doppelt verkettete Listen Java Basics - Anfänger-Themen 4
X Vererbung: Doppelt verkettete Listen Java Basics - Anfänger-Themen 16
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
I Input/Output Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 3
N package wird doppelt im exporer angezeigt Java Basics - Anfänger-Themen 2
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
T Löschen in doppelt verketteter Liste Java Basics - Anfänger-Themen 1
L Input/Output Println wird doppelt ausgeführt Java Basics - Anfänger-Themen 11
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
B BufferedReader gibt Datei-Inhalt doppelt aus Java Basics - Anfänger-Themen 3
M Liste Implementation, doppelt next() Java Basics - Anfänger-Themen 13
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
Salo Datentypen "Doppelt" List(e) ("gesucht") Java Basics - Anfänger-Themen 6
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
T Java Methode wird unerwünscht doppelt aufgerufen?! Java Basics - Anfänger-Themen 4
OnDemand Doppelt Werte CSV Java Basics - Anfänger-Themen 2
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
E Erste Schritte Sortieren von Objekten in doppelt-verlinkter Liste Java Basics - Anfänger-Themen 9
S Methoden Methode wird doppelt aufgerufen ... Java Basics - Anfänger-Themen 5
J Mehrere Zufallszahlen erzeugen, aber keine darf doppelt erzeugt werden - Wie? Java Basics - Anfänger-Themen 5
B Doppelt gekettete Listen Java Basics - Anfänger-Themen 4
G PropertyChangeListener empfängt Events doppelt Java Basics - Anfänger-Themen 5
L doppelt verkette Liste Java Basics - Anfänger-Themen 5
H Fenster doppelt gezeichnet. Java Basics - Anfänger-Themen 2
G Einfügen aus Zwischenablage - alles doppelt? Java Basics - Anfänger-Themen 2
G JFileChooser kommt doppelt Java Basics - Anfänger-Themen 3
N Nullpointerexception bei Doppelt verketteter Liste Java Basics - Anfänger-Themen 7
M Listen richtig doppelt verkettet? Java Basics - Anfänger-Themen 13
D Exceptions in doppelt verketteter Liste Java Basics - Anfänger-Themen 5
C verify() wird doppelt aufgerufen (JTable + InputVerifier) Java Basics - Anfänger-Themen 8
H doppelt verkette liste Java Basics - Anfänger-Themen 2
L rückwärtsausgeben einer doppelt verketteten liste Java Basics - Anfänger-Themen 2
G JList und ListCellRenderer - Vector erscheint doppelt Java Basics - Anfänger-Themen 6
G JComboBox gibt SelectedItem immer doppelt aus Java Basics - Anfänger-Themen 4
B Array doppelt Felder löschen Java Basics - Anfänger-Themen 27
M Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 2
R Zeilen aus datei lesen + doppelt gespeichert? Java Basics - Anfänger-Themen 3
G Trotz Abfrage immer noch Zahlen doppelt Java Basics - Anfänger-Themen 3
R Benutzerregistrierung: Doppelt registriert. Java Basics - Anfänger-Themen 8
M Verkettete Liste Java Basics - Anfänger-Themen 1
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
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
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A Verkettete Liste Java Basics - Anfänger-Themen 2
L verkettete Liste Java Basics - Anfänger-Themen 15
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
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 18
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
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
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben