Ejemplo n.º 1
0
        public void Add(T value)
        {
            if (value == null)
            {
                throw new NullReferenceException();
            }
            var next = new SortedCell <T>(value);

            if (_first == null)
            {
                _first = next;
                _last  = next;
            }

            if ((_last.Value.CompareTo(next.Value)) < 0)
            {
                _last.Next = next;
                _last      = next;
            }
            else
            {
                var            current = _first;
                SortedCell <T> prev    = null;
                while (current != null)
                {
                    if ((current.Value.CompareTo(next.Value)) > 0)
                    {
                        if (prev == null)
                        {
                            next.Next = _first;
                            _first    = next;
                        }
                        else
                        {
                            next.Next = current;
                            prev.Next = next;
                        }
                        break;
                    }
                    prev    = current;
                    current = current.Next;
                }
            }

            Count++;
        }
Ejemplo n.º 2
0
        public void Delete(T value)
        {
            if (value == null)
            {
                throw new NullReferenceException();
            }

            var            current  = _first;
            SortedCell <T> prevCell = null;

            while (current != null)
            {
                if (current.Value.Equals(value))
                {
                    if (prevCell == null)
                    {
                        _first = _first.Next;
                        if (_first == null)
                        {
                            _last = null;
                        }
                    }
                    else
                    {
                        prevCell.Next = current.Next;
                        if (current.Next == null)
                        {
                            _last = prevCell;
                        }
                    }

                    Count--;
                    break;
                }

                prevCell = current;
                current  = current.Next;
            }
        }