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 18:57] – [n-ten Wert auslesen] sbel | faecher:informatik:oberstufe:adt:verkettete_liste:liste_java:insert [23.11.2023 16:01] (aktuell) – Marco Kuemmel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Länge der Liste bestimmen/ | ||
- | |||
- | ===== Listenlänge ===== | ||
- | |||
- | |||
- | 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) === | ||
- | |||
- | * 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 ====== | ====== Einfügen eines neuen Elements ====== | ||
- | Das Einfügen eines neuen Knotens ist im folgenden Objektdiagramm dargestellt. Man muss beim ändern | + | Das Einfügen eines neuen Knotens ist im folgenden Objektdiagramm dargestellt. Man muss beim Ändern |
{{ : | {{ : | ||
Zeile 51: | Zeile 7: | ||
{{: | {{: | ||
=== (A1) === | === (A1) === | ||
- | Schreibe als Merksatz stichwortartig nieder, was beim Einfügen eines neuen Knotens | + | Schreibe als Merksatz stichwortartig nieder, was beim Einfügen eines neuen Knotens |
---- | ---- | ||
Zeile 57: | Zeile 13: | ||
=== (A2) === | === (A2) === | ||
- | 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, 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); | + | |
| | ||
} | } | ||
+ | | ||
</ | </ | ||
++++ | ++++ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | < |