Hallo, bin gerade dabei die
für eine LinkedList selber zu machen. Irgendwo muss ein Fehler sein, da nicht die korrekten Elemente gelöscht werden .. Laut Rahmenprogramm sollen die Elemente mit dem Index 1 bis 5 gelöscht werden. Komischerweise wird immer ein Index übersprungen wie in der Ausgabe gut zu sehen ist ..
Hier ist noch das Rahmenprogramm, in dem die Funktion getestet wurde:
und die Ausgabe:
Verkettete Liste
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-
Element geloescht: 1
Element geloescht: 3
Element geloescht: 5
Element geloescht: 7
Element geloescht: 9
0 2 4 6 8 10 11 12 13 14 15 16 17 18 19
Java:
public Object remove(int index)
Java:
/**
* Bestimmung des Elements zu einem vorgegbenen Index
*/
private Entry entry(int index)
{
Entry e = this.head;
for (int i=0; i<=index; i++)
e = e.next;
return e;
}
/**
* Entfernen des Elements an der Position index
* und Rückgabe des an dieser Position gespeicherten Objekts
*/
public Object remove(int index)
{
Object result = null;
if (index > this.size()-1)
return result;
Entry e = entry(index);
// ! damit "leere Objekte" nicht gelöscht werden
if (e != null)
{
result = e.data;
Entry prev = entry(index-1);
prev.next = e.next;
this.size--;
// Listenende korrigieren
if (e == this.tail)
this.tail = prev;
}
return result;
}
Hier ist noch das Rahmenprogramm, in dem die Funktion getestet wurde:
Java:
public static void main(String[] args)
{
//Erzeugen der LinkedList
System.out.println("Verkettete Liste");
MyLinkedList list1 = new MyLinkedList();
fillList(list1); // Liste wird mit den Werten 0 - einschließlich 19 gefüllt
printList(list1); // Liste wird ausgedruckt
for (int i = 1; i <= 5; i++)
{
System.out.println("Element geloescht: "+list1.remove(i));
}
printList(list1);
und die Ausgabe:
Verkettete Liste
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-
Element geloescht: 1
Element geloescht: 3
Element geloescht: 5
Element geloescht: 7
Element geloescht: 9
0 2 4 6 8 10 11 12 13 14 15 16 17 18 19
Zuletzt bearbeitet: