Exemple #1
0
        public void Remove(EnumerableNode <T> node)
        {
            if (!Any)
            {
                return;
            }

            var focus = Root;

            if (focus.Equals(node))
            {
                Root = null;
            }
            else
            {
                var previous = focus;
                focus = previous.Next;

                while (focus != null)
                {
                    if (focus.Equals(node))
                    {
                        previous.LinkTo(node.Next);
                        break;
                    }

                    previous = focus;
                    focus    = previous.Next;
                }
            }

            node.Unlink();
            node.Dispose();
        }
Exemple #2
0
        public void Append(T value)
        {
            var newNode = new EnumerableNode <T>(value);

            if (Any)
            {
                newNode.LinkTo(Head);
            }
            else
            {
                Root = newNode;
            }
        }
Exemple #3
0
 public void Unlink()
 {
     Next = null;
 }
Exemple #4
0
 private static EnumerableNode <T> GetHead(EnumerableNode <T> node)
 {
     return(node.HasNext ? GetHead(node.Next) : node);
 }
Exemple #5
0
 public void LinkTo(EnumerableNode <T> next)
 {
     Next = next;
 }