/// <summary> /// Удаление по значению /// </summary> /// <param name="data"></param> /// <returns></returns> public bool Remove(T data) { var current = firstElement; ListElements <T> previous = null; while (current != null) { if (current.Data.Equals(data)) { if (previous != null) { previous.Next = current.Next; if (current.Next == null) { lastElement = previous; } } else { firstElement = firstElement.Next; if (firstElement == null) { lastElement = null; } } count--; return(true); } previous = current; current = current.Next; } return(false); }
/// <summary> /// Вставка по индексу /// </summary> /// <param name="index"></param> /// <param name="data"></param> public void InsertOf(int index, T data) { var newListElement = new ListElements <T>(data); var current = firstElement; ListElements <T> previous = null; while (index > 0 && current != null) { previous = current; current = current.Next; index--; } if (current != null) { newListElement.Data = data; newListElement.Next = current; if (previous == null) { firstElement = newListElement; } else { previous.Next = newListElement; } } count++; }
/// <summary> /// Добавление в конец списка /// </summary> /// <param name="data"></param> public void Add(T data) { var newListElement = new ListElements <T>(data); if (firstElement == null) { firstElement = newListElement; } else { lastElement.Next = newListElement; } lastElement = newListElement; count++; }