Индексатор и свойства у односвязаного списка - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д