Как я могу проверить значение следующего элемента в динамической структуре? - 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]; }
}
}
}