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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы