Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:insert [20.10.2021 17:21] – [Listenlänge] sbel | faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:insert [23.11.2023 16:01] (aktuell) – Marco Kuemmel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== Einfügen |
- | ===== Listenlänge ===== | + | Das Einfügen eines neuen Knotens ist im folgenden Objektdiagramm dargestellt. Man muss beim Ändern der Objektreferenzen ('' |
+ | {{ : | ||
- | Die Länge der Liste kann man bestimmen, indem man sich vom ersten Element zum letzten bewegt und dabei mit einem Zähler die verarbeiteten Elemente mit zählt. | ||
- | |||
- | ---- | ||
{{: | {{: | ||
=== (A1) === | === (A1) === | ||
+ | Schreibe als Merksatz stichwortartig nieder, was beim Einfügen eines neuen Knotens an Stelle des n-ten vorhandenen Knotens alles passieren muss. Gibt es Fälle, die gesondert behandelt werden müssen? | ||
- | * Implementiere die Methode '' | + | ---- |
- | * Teste deine Methode mit unterschiedlich langen Listen. welchen Fall solltest du unbedingt testen? | + | |
- | + | ||
- | ++++ Lösungsvorschlag | | + | |
- | <code java> | + | |
- | /** | + | |
- | * Gibt die Anzahl der Elemente der Liste zurück | + | |
- | * | + | |
- | * @return | + | |
- | */ | + | |
- | public int length() { | + | |
- | int numElements = 0; | + | |
- | + | ||
- | Node< | + | |
- | + | ||
- | if ( n == null) { | + | |
- | return numElements; | + | |
- | } | + | |
- | + | ||
- | numElements++; | + | |
- | + | ||
- | while ( n.getNext() != null ) { | + | |
- | n = n.getNext(); | + | |
- | numElements++; | + | |
- | } | + | |
- | + | ||
- | return numElements; | + | |
- | } | + | |
- | </ | + | |
- | ++++ | + | |
- | ===== n-ten Wert auslesen ===== | + | |
- | + | ||
- | + | ||
- | ===== Einfügen eines neuen Elements ===== | + | |
- | + | ||
- | Das Einfügen eines neuen Knotens ist im folgenden Objektdiagramm dargestellt. Man muss beim ändern der Objektreferenzen ('' | + | |
- | + | ||
- | {{ : | + | |
{{: | {{: | ||
=== (A2) === | === (A2) === | ||
- | Schreibe als Merksatz stichwortartig nieder, was beim Einfügen eines neuen Knotens nach dem n-ten vorhandenen Knoten alles passieren muss. Gibt es Fälle, die gesondert behandelt werden müssen? | ||
- | ---- | + | Implementiere die Methode '' |
- | {{:aufgabe.png? | + | |
- | === (A3) === | + | |
- | Implementiere die Methode '' | + | Teste deine Methode, indem du Elemente in eine Liste einfügst und mit dem Objektinspektor überprüfst, |
- | Teste deine Methode, indem du Elemente in eine Liste einfügst und mit dem Objektinspektor überprüfst, | + | |
+ | //Tipp: Nutze die bereits implementierte Methode '' | ||
++++ Lösungsvorschlag | | ++++ Lösungsvorschlag | | ||
- | Kann sicher weiter optimiert werden. | + | |
<code java> | <code java> | ||
/** | /** | ||
Zeile 73: | Zeile 32: | ||
Node< | Node< | ||
| | ||
- | // Wenn der Index groesser als die Laenge ist | ||
- | // passiert nix | ||
- | if (this.length() < index) { | ||
- | return; | ||
- | } | ||
- | |||
// Wenn der Index Null ist, muss das Element als erster neuer | // Wenn der Index Null ist, muss das Element als erster neuer | ||
// Knoten eingefuegt werden | // Knoten eingefuegt werden | ||
Zeile 84: | Zeile 37: | ||
new_node.setNext(first); | new_node.setNext(first); | ||
first = new_node; | first = new_node; | ||
- | return; | + | |
- | | + | Node< |
- | // In allen anderen Faellen muss das n-te Element | + | new_node.setNext(n.getNext()); |
- | // aufgesucht werden und der neue Knoten dort eingefügt werden. | + | n.setNext(new_node); |
- | | + | } |
- | for (int i=1; i<index; i++) { | + | |
- | | + | |
- | } | + | |
- | + | ||
- | | + | |
- | n.setNext(new_node); | + | |
| | ||
} | } | ||
+ | | ||
</ | </ | ||
++++ | ++++ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | < |