Ejemplo n.º 1
0
        public static IEnumerable <T> BFS <T>(this IGraph <T> graph, T startVertex, HashSet <T> visitedVertices, Action <T> lastVertexAction) where T : IEquatable <T>
        {
            var queue = new QueueOnArray <T>();

            queue.Enqueue(startVertex);
            while (!queue.IsEmpty)
            {
                var current = queue.Dequeue();
                if (!visitedVertices.Contains(current))
                {
                    visitedVertices.Add(current);
                    var noChildren = true;
                    foreach (var edge in graph.EdgesOf(current))
                    {
                        noChildren = false;
                        queue.Enqueue(edge.Target);
                    }
                    if (noChildren)
                    {
                        lastVertexAction(current);
                    }
                    yield return(current);
                }
            }
        }
Ejemplo n.º 2
0
        public void QueueOnArray_Full_IEnumeratorTest()
        {
            var queue = new QueueOnArray <int>();

            CheckFullEnumerator(queue);
        }
Ejemplo n.º 3
0
        public void QueueOnArray_Empty_IEnumeratorTest()
        {
            var queue = new QueueOnArray <int>();

            CheckEmptyEnumerator(queue);
        }
Ejemplo n.º 4
0
        public void QueueOnArray_EnqueDequeueTest()
        {
            var queue = new QueueOnArray <string>();

            CheckEnqueDequeue(queue);
        }
Ejemplo n.º 5
0
        public void QueueOnArray_MultipleDequeueTest()
        {
            var queue = new QueueOnArray <string>();

            CheckMultipleDequeue(queue);
        }
Ejemplo n.º 6
0
        public void QueueOnArray_DequeueFromEmptyQueueTest()
        {
            var queue = new QueueOnArray <string>();

            queue.Dequeue();
        }
Ejemplo n.º 7
0
        public void QueueOnArray_Double_IEnumeratorTest()
        {
            var queue = new QueueOnArray <int>();

            CheckDoubleEnumerator(queue);
        }