2016-09-09 7 views
-1

Gibt es eine Möglichkeit, die Daten eines bestimmten Knotens in einer verknüpften Liste zu bearbeiten? Ich begann ein Verfahren zu schreiben:Erstellen einer Bearbeitungsmethode mit einer einfach verknüpften Liste

public void edit(int index, String data) { 

Node pre = head; 
Node temp = null; 
for(int i=1; i <= index; i++) { 
    temp = pre; 
    pre = pre.next(); 
} 

temp.next(new Node(data)); 
pre.data(data); 
} 

ich vier Knoten in meiner Liste habe, habe ich diese Methode die Knoten mit dem Index 1 in der Liste zu bearbeiten, aber wenn ich jetzt alle Elemente in der Liste auszudrucken es zeigt nur, Knoten bei Index 0 und 1 und 2-3 erscheinen nicht. Irgendwelche Hinweise darauf, was hier schief geht?

+0

Beachten Sie, dass Sie, wenn Sie ein Element nicht am Ende bearbeiten, die verbleibenden Knoten an den neuen Knoten anhängen müssen. Sie sollten auch nicht basierend auf dem Index iterieren, es sei denn, Sie haben bereits überprüft, dass ChiefTwoPencils

+0

Sie brauchen auch weder den Temp noch den neuen Knoten; Sie können Daten einfach auf den neuen Wert setzen. – ChiefTwoPencils

Antwort

1
public void edit(int index, String data) { 

    Node pre = head; 
    Node temp = null; 
    for(int i=1; i <= index; i++) { 
     temp = pre; 
     pre = pre.next(); 
    } 

    Node newNote = new Node(data); 
    temp.next = newNote; 
    newNote.next = pre.next; 
} 

Sie sollten auch die spezifischen Situationen behandeln. Beispiel: Dieser Code funktioniert nicht für Index = 0. Und dieser Code löst Ausnahmen für die Größe der verknüpften Liste aus, wenn er 0 ist. Und dieser Code löst auch Ausnahmen aus, wenn der Index größer als die Größe der verknüpften Liste ist. Und solche Sachen

0
public void edit(int index, String data) { 

if (index==0) { 
    head.data(data); 
    return; 
} 

if (index < 0 || index > size()) { 
    throw new IndexOutOfBoundsException("Index out of bounds."); 
    } 

Node pre = head; 
Node temp = null; 
for(int i=1; i <= index; i++) { 
    temp = pre; 
    pre = pre.next; 
} 

Node newNode = new Node(data); 
temp.next(newNode); 
newNode.next(pre.next); 
} 

@Mustafa Akıllı So ähnlich?

Verwandte Themen