Ejemplo n.º 1
0
        private static CircleElement CreateCircleAndReturnFirst(uint n)
        {
            var first    = new CircleElement(1);
            var previous = first;

            for (uint i = 2; i <= n; i++)
            {
                var next = new CircleElement(i);
                previous.Next = next;
                previous      = next;
            }
            previous.Next = first;
            return(first);
        }
Ejemplo n.º 2
0
        private static CircleElement FindTheLastOneLeft(CircleElement start, uint m)
        {
            var current  = start;
            var previous = start.Next;

            while (previous.Next != current)
            {
                previous = previous.Next;
            }
            while (previous != current)
            {
                for (var j = 0; j < m - 1; j++)
                {
                    previous = current;
                    current  = current.Next;
                }

                previous.Next = current.Next;
                current       = current.Next;
            }

            return(current);
        }