Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:lengthvalue [20.10.2021 18:56] – angelegt sbel | faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:lengthvalue [23.11.2023 16:02] (aktuell) – [n-ten Wert auslesen] Marco Kuemmel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Länge der Liste bestimmen/ | ||
- | ===== Einfügen eines neuen Elements | + | ===== 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. |
- | + | ||
- | {{: | + | |
- | === (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? | + | |
---- | ---- | ||
{{: | {{: | ||
- | === (A3) === | + | === (A1) === |
- | Implementiere die Methode '' | + | * Implementiere die Methode '' |
- | Teste deine Methode, indem du Elemente in eine Liste einfügst und mit dem Objektinspektor überprüfst, | + | * Teste deine Methode mit unterschiedlich langen Listen. Welchen Fall solltest du unbedingt testen? |
++++ Lösungsvorschlag | | ++++ Lösungsvorschlag | | ||
- | Kann sicher weiter optimiert werden. | ||
<code java> | <code java> | ||
/** | /** | ||
- | | + | |
- | | + | * |
- | * @param val Der einzufügende Wert | + | * @return |
*/ | */ | ||
- | public | + | public int length() { |
+ | int numElements = 0; | ||
| | ||
- | | + | Node< |
- | | + | |
| | ||
- | | + | if ( n == null) { |
- | // passiert nix | + | return |
- | | + | |
- | return; | + | |
} | } | ||
- | + | | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | return; | + | |
} | } | ||
- | // In allen anderen Faellen muss das n-te Element | + | |
- | // aufgesucht | + | return numElements; |
+ | } | ||
+ | </code> | ||
+ | ++++ | ||
+ | ===== n-ten Wert auslesen ===== | ||
+ | |||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | Überlege dir eine Möglichkeit, | ||
+ | |||
+ | |||
+ | * Welche Werte für n sollten akzeptiert | ||
+ | * Mit welchem Sprachkonstrukt kann man das n-te Element ansteuern? | ||
+ | * Was sollte zurückgegeben werden, wenn der n-te Knoten | ||
+ | |||
+ | |||
+ | ++++ Lösungsvorschlag | | ||
+ | <code java> | ||
+ | /** | ||
+ | * Gibt eine Referenz auf den n-ten Knoten der Liste zurück. | ||
+ | * Wenn der n-te Knoten nicht ermittelt werden kann null | ||
+ | * | ||
+ | * @return Node, wenn der n-te Knoten gefunden wird, sonst null | ||
+ | */ | ||
+ | | ||
+ | |||
+ | if (index < 0 || index > this.length()-1) { | ||
+ | return null; | ||
+ | } | ||
+ | | ||
Node< | Node< | ||
- | for (int i=1; i<index; i++) { | + | for (int i=0; i<index; i++) { |
n = n.getNext(); | n = n.getNext(); | ||
} | } | ||
| | ||
- | | + | |
- | n.setNext(new_node); | + | |
- | | + | |
} | } | ||
</ | </ | ||
- | ++++ | + | ++++ |
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | Verwende die oben implementierte private Methode '' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | < |