public bool Remove(T itemToFind, T itemToRemove)
        {
            if ((itemToRemove == null) || (this._firstItem == null) || (itemToFind == null))
            {
                return(false);
            }

            DoubleLinkedListItem <T> foundItem = Find(itemToFind);

            if (foundItem.Equals(this._firstItem))
            {
                this._firstItem = this._firstItem.NextItem;
                return(true);
            }

            if (foundItem.Equals(this._lastItem))
            {
                this._lastItem = this._lastItem.ItemBefore;
                return(true);
            }



            if (foundItem == null)
            {
                return(false);
            }
            else
            {
                foundItem.ItemBefore.NextItem = foundItem.NextItem;
                foundItem.NextItem.ItemBefore = foundItem.ItemBefore;
                return(true);
            }
        }
Exemple #2
0
        public bool Remove(T itemToRemove)
        {
            if (itemToRemove == null)
            {
                return(false);
            }

            if (this._firstItem == null)
            {
                return(false);
            }

            DoubleLinkedListItem <T> found = Find(itemToRemove);

            if (found == null)
            {
                return(false);
            }

            if (found.Equals(_firstItem.Item))
            {
                _firstItem = _firstItem.NextItem;
                _firstItem.PreviousItem = null;
                return(true);
            }

            if (found == _lastItem)
            {
                _lastItem          = _lastItem.PreviousItem;
                _lastItem.NextItem = null;
                return(true);
            }

            found.NextItem.PreviousItem = found.PreviousItem;
            found.PreviousItem.NextItem = found.NextItem;
            return(true);
        }