Как я могу проверить значение следующего элемента в динамической структуре? - C#
Формулировка задачи:
Нужно создать динамическую структуру для хранения строгой последовательности пар строк, чтобы можно было проверить значение элемента, следующего за другим, и при совпадении некоторого условия удалить тот, что находится перед ним.
Выбрал List<T>, но не пойму, как организовать эти действия.
Возможно, есть более подходящая структура?
В качестве примера приложил рисунок. Мне нужна возможность найти определённую последовательность элементов и удалить первый из них.
Решение задачи: «Как я могу проверить значение следующего элемента в динамической структуре?»
textual
Листинг программы
using System; using System.Collections.Generic; namespace ConsoleApplication153 { class Program { static void Main(string[] args) { var list = new List<string>(){"a", "b", "c", "d"}; new Solver().Solve(list, subList => subList.Count > 1 && subList[0] == "c" && subList[1] == "d"); Console.WriteLine(string.Join(" ", list)); Console.ReadLine(); } } class Solver { public void Solve<T>(IList<T> list, Predicate<SubList<T>> predicate) { for (int i = 1; i < list.Count; i++) if (predicate(new SubList<T>(list, i))) { list.RemoveAt(i - 1); return; } } } class SubList<T> { private int startIndex; private IList<T> list; public SubList(IList<T> list, int startIndex) { this.list = list; this.startIndex = startIndex; } public int Count { get { return list.Count - startIndex; } } public T this[int index] { get { return list[startIndex + index]; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д