Leider kann man nicht verwende direkt das einfache alte .NET Queue
Objekt. Die Warteschlange ist für eine "blinde" First-in-first-out-Logik ausgelegt, so dass Sie nur etwas anderes ausführen können.
Wenn Sie wirklich brauchen eine Warteschlange zu implementieren, in dem Sie Elemente finden können und ihre Position abrufen (eine sehr nützliche Sache) versuchen, in einer Klasse, alles zu wickeln, das die folgenden Methoden aussetzt:
public class CustomQueue<T> {
private LinkedList<T> fifoList = new LinkedList<T>();
public Enqueue(T newItem) {
//add newItem at the head of fifoList
}
public T Dequeue() {
//return and remove the item that is located at the tail of the queue
}
public int indexOf(T searchFor) {
int ret = 0;
for (T item: fifoList) {
if (item.equals(searchFor)) return ret;
ret++;
}
}
}
Für eine bessere Leistung (Warteschlange und dequeue O (1), während indexOf O (n)) mit einer doppelt verkettete Liste
Dies ist eine funktionierende Lösung, aber es ist eher eine Antwort auf die Frage: Wie setze ich eine Warteschlange in eine Liste, damit ich die IndexOf Methode aufrufen kann? –
In der Tat, aber die Warteschlange bieten keine Schnittstelle für die Rückgabe des Index, so ist dies eine Kompromisslösung – ionden
Ich bin in Ordnung, aber das braucht einen zweiten Gedanken, wenn möglich –