faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:append

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:append [20.10.2021 17:22] – [Liste leer] sbelfaecher:informatik:oberstufe:adt:verkettete_liste:liste_java:append [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== Anhängen eines neuen Listenknotens ====== 
- 
- 
-Beim Anhängen eines weiteren Knotens an die Liste sind zwei Fälle zu unterscheiden: 
-  - Die Liste ist leer 
-  - Die Liste ist nicht leer 
- 
-==== Liste leer ==== 
-  
- 
-Wenn die Liste Leer ist, ist der Vorgang schnell beschrieben, eine Veranschaulichung findet sich im Diagramm unten. 
- 
-  * Erzeuge eine neuen Knoten mit dem Nachfolger "null" 
-  * Setze das Attribut first der Liste auf den neuen Knoten 
- 
-{{ :faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:append_empty.drawio.png?500  |}} 
- 
-{{:aufgabe.png?nolink  |}} 
-=== (A1) "append" für die leere Liste === 
- 
-  * Implementiere in der Methode ''append'' den Teil des Codes, der an eine leere Liste einen neuen Knoten anhängt. Die Methode ''isEmpty()'' ist hilfreich.  
-  * Teste deine Methode von Hand, indem du eine Liste für Integer Zahlen erzeugst und einen Knoten in die leere Liste einfügst.  
-  * Überprüfe auch, dass deine zuvor implementierte Methode ''isEmpty()'' auch bei einer nicht leeren Liste einen korrekten Rückgabewert liefert. 
- 
-==== Liste nicht leer ==== 
- 
-Das folgende Objektdiagramm veranschaulicht die Schritte, die beim Anhängen eines neuen Knotens an eine nicht leere Liste auszuführen sind. 
- 
-{{ :faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:append.drawio.png?700 |}} 
- 
- 
-{{:aufgabe.png?nolink  |}} 
-=== (A2) === 
-Schreibe als Merksatz stichwortartig nieder, was beim Anhängen eines neuen Knotens alles passieren muss. 
- 
-==== Bewegen in der Liste ==== 
- 
- 
-Ein konkretes Problem stellt sich noch in Schritt 2 des Ablaufs zum Einfügen eines neuen Knotens: Wie können wir uns durch die Liste bewegen, wenn das Listenobjekt selbst nur die Referenz auf den ersten Knoten kennt? 
- 
-Hier gehen wir ähnlich vor wie bei der Erhöhung einer Zählvariablen: 
-^Zähler ^ Liste ^ 
-|<code java> 
-// Neuer Zähler 
-int i=0; 
-// Zählen bis 99 
-while (i < 100) { 
-   i++; 
-} 
-// Ende der Zahlenreihe erreicht, i = 99 
-</code>|<code java> 
-// Knotenzeiger erzeugen, auf first setzen 
-Node<T> n = first; 
-// weitergehen bis zum Ende 
-while(n.getNext()!= null) { 
-    n = n.getNext(); 
-} 
-// Jetzt zeigt n auf den letzten Knoten.</code>| 
- 
- 
-{{:aufgabe.png?nolink  |}} 
-=== (A3) "append" für die nicht leere Liste === 
- 
-Implementiere den zweiten Fall der Methode ''append'' entsprechend deiner Vorüberlegungen. Teste deine Methode von Hand, indem du eine Liste für Integer Zahlen erzeugst und 3 Knoten mit aufsteigenden Werten einfügst. Wenn du das Listenobjekt inspizierst, solltest du deine Werte in der korrekten Reihenfolge vorfinden. 
- 
-++++ Lösungsvorschlag zur Methode "append" | 
- 
- 
-<code java> 
-    /** 
-     * Hängt einen neuen Wert hinten an die Liste an. 
-     * @param val Der anzuhängende Wert 
-     */ 
-    public void append(T val) { 
-         
-        // Auf jeden Fall: Neuen Knoten erzeugen 
-        Node<T> new_node = new Node(val, null); 
-         
-        // Fall 1: Liste ist leer 
-        if (this.isEmpty()) { 
-            first = new_node; 
-        } else { 
-            //Fall 2: Liste ist nicht leer 
-            // Durch die Liste zum letzten Element wandern 
-            Node<T> n = first; 
-            while(n.getNext() != null) { 
-                n = n.getNext(); 
-            } 
-            n.setNext(new_node); 
-        } 
-         
-    } 
-</code> 
- 
- 
-++++ 
  
  • faecher/informatik/oberstufe/adt/verkettete_liste/liste_java/append.1634743326.txt.gz
  • Zuletzt geändert: 20.10.2021 17:22
  • von sbel