Esempio n. 1
0
        public SimpleLinkedLisNode <T> AddFirst(T element)
        {
            var newNode = new SimpleLinkedLisNode <T> {
                Value = element
            };

            if (Count == 0)
            {
                First = Last = newNode;
            }
            else
            {
                newNode.Next = First;
                First        = First.Previous = newNode;
            }

            if (++Count == 2)
            {
                Last = newNode.Next;
            }

            OnNodeAdded(newNode);

            return(newNode);
        }
Esempio n. 2
0
 protected virtual void OnNodeAdded(SimpleLinkedLisNode <T> node)
 {
     if (NodeAdded != null)
     {
         NodeAdded(node);
     }
 }
Esempio n. 3
0
        public void RemoveAfter(SimpleLinkedLisNode <T> node)
        {
            if (node == null || node.Next == null)
            {
                throw new ArgumentNullException();
            }

            if (node.Next.Next == null)
            {
                RemoveLast();
            }
            else
            {
                node.Next          = node.Next.Next;
                node.Next.Previous = node;
            }
        }
Esempio n. 4
0
        public void RemoveBefore(SimpleLinkedLisNode <T> node)
        {
            if (node == null || node.Previous == null)
            {
                throw new ArgumentNullException();
            }

            if (node.Previous.Previous == null)
            {
                RemoveFirst();
            }
            else
            {
                node.Previous      = node.Previous.Previous;
                node.Previous.Next = node;
            }
        }
Esempio n. 5
0
        public SimpleLinkedLisNode <T> AddLast(T element)
        {
            var newNode = new SimpleLinkedLisNode <T> {
                Value = element
            };

            if (Count == 0)
            {
                First = Last = newNode;
            }
            else
            {
                newNode.Previous = Last;
                Last             = Last.Next = newNode;
            }

            Count++;

            OnNodeAdded(newNode);

            return(newNode);
        }
Esempio n. 6
0
        public SimpleLinkedLisNode <T> AddBefore(SimpleLinkedLisNode <T> node, T element)
        {
            if (node == null)
            {
                throw new ArgumentNullException();
            }

            if (node.Previous == null)
            {
                return(AddFirst(element));
            }
            else
            {
                var newNode = new SimpleLinkedLisNode <T> {
                    Value = element, Next = node, Previous = node.Previous
                };
                node.Previous = node.Previous.Next = newNode;
                Count++;

                OnNodeAdded(newNode);

                return(newNode);
            }
        }