faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:remove

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:remove [20.10.2021 16:34] – [Einfügen eines neuen Elements] sbelfaecher:informatik:oberstufe:adt:verkettete_liste:liste_java:remove [23.11.2023 16:04] (aktuell) Marco Kuemmel
Zeile 1: Zeile 1:
-====== Länge der Liste bestimmen/Neues Element Einfügen  ======+====== Löschen von Elementen ======
  
-===== Listenlänge =====+Mit der Möglichkeit, einfach eine Referenz auf das n-te Element zu erhalten hast du bereits die wichtigste Voraussetzung geschaffen, um ein Element an Position n löschen zu können.
  
 +---- 
 +{{:aufgabe.png?nolink  |}}
 +=== (A1) ===
  
-Die Länge der Liste kann man bestimmenindem man sich vom ersten Element zum letzten bewegt und dabei mit einem Zähler die verarbeiteten Elemente mit zählt.+Zeichne ein Objektdiagrammanhand dessen du den Ablauf des Löschvorgangs erläutern kannstSchreibe dann einen Merksatz stichwortartig nieder, was beim Löschen eines neuen Knotens an Position n alles passieren muss. 
 + 
 +Gibt es Fälle, die möglicherweise beim Entfernen von Listenknoten besonders berücksichtigt werden müssen?
  
 ----  ---- 
 {{:aufgabe.png?nolink  |}} {{:aufgabe.png?nolink  |}}
-=== (A1) ===+=== (A2) ===
  
-  * Implementiere die Methode ''length'' +Implementiere die Methode ''removeAt'', die das n-te Element aus der Liste entfernt.
-  * Teste deine Methode mit unterschiedlich langen Listenwelchen Fall solltest du unbedingt testen?+
  
 ++++ Lösungsvorschlag | ++++ Lösungsvorschlag |
 <code java> <code java>
     /**     /**
-     Gibt die Anzahl der Elemente der Liste zurück +     Entfernt das Element, das am gegebenen Index steht, aus der Liste. 
-      +     * @param index Die Stelle, von der der Wert entfernt werden soll.
-     * @return   Anzahl der Listenelemente+
      */      */
-    public int length() { +    public void removeAt(int index) { 
-        int numElements = 0;+        if (!this.isEmpty() && index == 0) { 
 +            this.first = first.getNext() 
 +            return;            
 +        }
                  
-        Node<T> n = first+        if (index == this.length()-1) { 
-         +            Node<T> n = this.getNode(index-1)
-        if ( == null) { +            n.setNext(null); 
-            return numElements;+            return;
         }         }
                  
-        numElements++; +        if index < this.length()-1 && index > 0) { 
-         +            Node<T> n1 this.getNode(index-1); 
-        while n.getNext() != null ) { +            Node<T> n2 = this.getNode(index+1); 
-            n.getNext(); +            n1.setNext(n2);
-            numElements++;+
         }         }
                  
-        return numElements; 
     }     }
 </code> </code>
 ++++ ++++
  
-===== Einfügen eines neuen Elements =====+----
  
-Das Einfügen eines neuen Knotens ist im folgenden Objektdiagramm dargestellt. Man muss beim ändern der Objektreferenzen (''nextNode''darauf achten, dass die Reihenfolge stimmt und man die Referenz auf den ursprünglichen Nachfolger des Knotens, hinter dem der neue Knoten eingefügt wird nicht verliert((Hier: Aufpassen, dass man ''node2'' nicht "verliert", sonst ist die Liste an dieser Stelle unterbrochen und alle Nachfolger werden von der Garbage Collection entsorgt...)) +<btn>[[..:liste_java:|<<< Zurück zum Einfügen (am Index)]]</btn> **oder** <btn>[[..:liste_java:hasvalue|Weiter zur Suche >>> ]]</btn>
- +
-{{ :faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:insert.drawio.png?600 |}} +
- +
-{{:aufgabe.png?nolink  |}} +
-=== (A2) === +
-Schreibe als Merksatz stichwortartig nieder, was beim Einfügen eines neuen Knotens alles passieren muss.+
  • faecher/informatik/oberstufe/adt/verkettete_liste/liste_java/remove.1634747677.txt.gz
  • Zuletzt geändert: 20.10.2021 16:34
  • von sbel