Example #1
0
            public void AddLast(int n)
            {
                CircleNode lastNode = Nodes.Last();

                if (lastNode.Count >= 1000)
                {
                    Nodes.AddLast(new CircleNode());
                    lastNode = Nodes.Last();
                }
                lastNode.AddLast(n);
            }
Example #2
0
            public void AddAfter(CircleCursor cursor, IEnumerable <int> toAdd)
            {
                CircleNode           node    = cursor.Outer.Value;
                LinkedListNode <int> current = cursor.Inner;

                foreach (int n in toAdd)
                {
                    node.AddAfter(current, n);
                    current = current.Next;
                }
                if (node.Count > 2000)
                {
                    CircleNode newNode = new CircleNode();
                    Nodes.AddBefore(cursor.Outer, newNode);
                    for (int i = 0; i < 1000; ++i)
                    {
                        int val = node.Ordered.First.Value;
                        node.RemoveFirst();
                        newNode.AddLast(val);
                    }
                }
            }