예제 #1
0
 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--;
 }
예제 #2
0
        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);
        }
예제 #3
0
        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}");
        }