Beispiel #1
0
    private IEnumerable <T> CreateEnumerator(LinkedList <T> list,
                                             LinkedListNode <T> start,
                                             TIteratorDirection dir)
    {
        LinkedListNode <T> current = null;

        do
        {
            if (current == null)
            {
                current = start;
            }
            else
            {
                if (dir == TIteratorDirection.Forward)
                {
                    current = current.Next;
                }
                else
                {
                    current = current.Previous;
                }
            }

            if (current != null)
            {
                yield return(current.Value);
            }
        } while(current != null);
    }
Beispiel #2
0
 public BidirectionalIterator(LinkedList <T> list,
                              LinkedListNode <T> start,
                              TIteratorDirection dir)
 {
     enumerator = CreateEnumerator(list,
                                   start,
                                   dir).GetEnumerator();
     enumType = enumerator.GetType();
 }