public void RemoveAt(int index) { if (index < 0 || index >= _count) { throw new IndexOutOfRangeException(); } if (index > 0) { var prev = GetNodeByIndex(index - 1); var node = prev.Next; prev.Next = node.Next; if (index == _count - 1) { _last = prev; } } else { _head = _head.Next; } _count--; }
public bool Remove(T item) { if (_count == 0) { return(false); } var prev = _head; var node = _head; while (node != null && !node.Data.Equals(item)) //прогонка по стеку { prev = node; node = node.Next; } if (node != null) //нашел ли узел { if (node == _head) { _head = node.Next; } else { prev.Next = node.Next; if (node.Next == null) ////// if (node.Data.Equals(_last.Data)) { //сравнение удаляемого звена с хвостовым звеном с последующим изменением хвоста _last = prev; } } if (Withdraw != null) { Withdraw($"Удалена строка: {item}"); } _count--; return(true); } return(false); }
public void Add(T item) { var node = new ListNode <T> { Data = item }; if (Added != null) { Added($"Добавлена строка: {item}"); } ListNode <T> .Updade_LastID(); //обновление последнего созданного ID if (_count == 0) { _head = node; _last = _head; } else { _last = _last.Next = node; } _count++; //if (Added != null) Added($"Добавлена строка: {item}"); }