Индексатор и свойства у односвязаного списка - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день) Требуется помощь с добавлением пары функций к уже имеющемуся коду. 1) Добавить индексатор, позволяющий по номеру элемента (индекс) установить и считать его значения. 2)Добавить свойства, позволяющие установить и считать значения первого и последнего элементов списка. Сам код:
class MyListNode
    {
        public string Info;
        public MyListNode tail;
    }
 
    class MyList : IEnumerable<string> 
    {
        private MyListNode list1;
 
        public void AddIndex(string info, int i) //добавление в i позицию
        {
            var bend = new MyListNode { Info = info };
 
            if (i == 0)
            {
                bend.tail = list1;
                list1 = bend;
            }
            else
            {
                var prev = NodeI(i - 1);
                bend.tail = prev.tail;
                prev.tail = bend;
            }
        }

        public void Clear() //очистка списка
        {
            list1 = null;
        }

        public void AddToFront(string info)  //добавить в начало
        {
            var bend = new MyListNode { Info = info };
 
            bend.tail = list1;
            list1 = bend;
        }
 
        public void RemoveI(int i) //удаление по индексу
        {
            if (i == 0)
            {
                list1 = list1.tail;
            }
            else
            {
                var prev = NodeI(i - 1);
                prev.tail = prev.tail.tail;
            }
        }
 
        public void RemoveZ(string info)  //удаление по значению
        {
            MyListNode prev = null;
            var bend = list1;
 
            while (bend != null)
            {
                if (bend.Info == info)
                {
                    prev.tail = bend.tail;
                    break;
                }
                prev = bend;
                bend = bend.tail;
            }
        }
 
        public MyListNode NodeI(int index) //поиск по индексу
        {
            var bend = list1;
            while (index > 0)
            {
                bend = bend.tail;
                index--;
 
            }
            return bend;
        }

        //Нужно для использования наследования
 
        public IEnumerator<string> GetEnumerator() //индексатор
        {
            var bend = list1;
 
            while (bend != null)
            {
                yield return bend.Info;
                bend = bend.tail;
            }
        }
 
        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }

Решение задачи: «Индексатор и свойства у односвязаного списка»

textual
Листинг программы
        public T this[int index]
        {
            get
            {
                if (index < 0) throw new ArgumentOutOfRangeException();
                NodeList<T> current = _head;
                for (int i = 0; i < index; i++)
                {
                    if (current.Next == null)
                        throw new ArgumentOutOfRangeException();
                    current = current.Next;
                }
                return current.Value;
            }
        }

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


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

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

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