Holen Sie das Vorherige/nächste Element eines bestimmten Elements in einer Liste<>
Sagt, ich habe diese Liste : 1, 3, 5, 7, 9, 13
Beispielsweise VORGEGEBENE Wert ist : 9, das Vorherige Element ist 7, und der nächste Punkt ist 13
Wie kann ich erreichen, das mit C#?
- Um den index des angegebenen Elements. Hinzufügen 1 bewegen weiter, subtrahieren, eine verschieben prev. Vergewissern Sie sich, dass Grenzen gesetzt.
- index +/- 1.... was haben Sie versucht?
- Welche Art von Liste? Es ist sehr einfach mit einer (doppelt) verketteten Liste, wie die
LinkedList<T>
Klasse. - warum ist der downvote ? Ich fragte, weil ich nicht weiß, wie Sie diese erreichen.
- Was genau wollen Sie erreichen? Sind Sie versuchen zu finden, 7 und 13, weil Sie neben 9 in der Liste (position-wise), oder weil Sie am nächsten an 9 (math.-Weise)?
- Wenn Sie den Mauszeiger über den downvote-Symbol besagt, dass "Diese Frage zeigt keine Forschung" (habe ich nicht downvote)
- Danke Jungs, es ist so einfach, das ist mir peinlich zu Fragen, wie eine einfache Frage. Verzeihen Sie mir, ich bin ein C# Anfänger.
- wie es durch die Link-Liste?
InformationsquelleAutor NeedAnswers | 2014-07-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie indexer zu bekommen-element am gewünschten index. Hinzufügen eines index erhalten Sie nächsten und subtrahieren von eins von index geben Sie vorherigen element.
Werden Sie haben zu prüfen, ob nächsten oder vorherigen index vorhanden ist, andere weisen, die Sie erhalten IndexOutOfRangeException Ausnahme. Als Liste ist null-basierten index so erste element den index
0
und zweiten haben1
und so weiter.Habe ich realisiert dies durch die Erben .Net-Liste
Mithilfe dieser wird ganz einfach
MoveNext
undMovePrevious
). Besser machen Sie Funktionen. Auch_currentIndex
können zeigen, um einen ungültigen index scheint merkwürdig zu sein. Besser die setter zu korrigieren index (anstatt der get-tun die gleiche Arbeit). Aber ich mag den Ansatz!0
? Dann konnten wir nicht feststellen, ob es keine nächste / Vorherige element auf der Liste oder nur element auf der Liste.Kann Folgendes hilfreich sein
Zu machen, eine Art Zirkuläre Liste, versuchen Sie dies:
Verwendung von LINQ in einer Zeile und mit kreisförmigen Suche:
Nächsten
Vorherigen von
Dies ist ein Beispiel (link zum fiddle)
Diese kann getan werden, mit
LinkedList<T>
Ansatz mit
ElementOrDefault()
https://dotnetfiddle.net/fxVo6T