Was wäre ein guter Ansatz/Algorithmus, um mich über eine dynamisch wechselnde Liste zu ermöglichen.Schleife über dynamisch wechselnde Liste
- Diese Liste kann Duplikate
- enthalten Ich brauche nur das nächste Element nach dem aktuellen Element. dh wenn ich auf
a[n]
in der nächsten Iteration zur Zeit bin, mag icha[n]
unabhängig
Zur Zeit habe ich versucht, dies zu tun (Pseudo-Code), die
jedoch ziemlich trivial ist, es nicht mit Dubletten funktioniert
List<String> list = new List<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
int currentItem = "a";
function nextItem(){
int index = findIndex(currentItem);
currentItem = list[index+1];
return currentItem;
}
print(nextItem()) #b
print(nextItem()) #c
list.addAt(3, "z") #add z at the 3rd index
print(nextItem()) #z
print(nextItem()) #d
print(nextItem()) #e
Ich denke über die Verwendung einer verknüpften Liste für dieses Problem. Würden Sie eine andere Lösung empfehlen oder ist eine verknüpfte Liste der einzige Weg?
Edit: Durch die dynamische Änderung, ich meine eine Liste Whoes Inhalt kann in der Mitte einer 'Schleife', d. H. Ein nextItem() Anruf moddifiziert werden. Nehme nur einen einzelnen Thread an.
Sollte nicht die letzte Zeile c zurückgeben und nicht d? Außerdem verstehe ich nicht, wie im ersten Aufruf von 'nextItem()', 'list [6]' (da currentItem = 5) einen Fehler werfen würde, nicht wahr, da es nicht existiert? Es sei denn, Sie wollen zum ersten Element zurückkehren, wenn es das Ende der Liste erreicht. – Ash
@Ashwin_Nair ja dein Recht. Ich habe gerade meinen Fehler korrigiert. Ich hatte die Liste zunächst mit Zahlen gefüllt und dann in Buchstaben geändert, da ich das Gefühl hatte, dass es verwirrend war. Auch currentItem ist das Element in der Liste und nicht der Index – Krimson
Wenn ich Sie wäre, würde ich mein currentItem ändern, um einen Index zu verwenden ... auf diese Weise müssen Sie sich keine Gedanken über Duplikate machen. Ich füge eine C# Implementierung als Antwort hinzu. – Ash