예제 #1
0
        /// <summary> Initializes the internal traversal object structure. Sets up the
        /// internal queue with the directed graph vertices and creates the control
        /// structure for the in-degrees.
        ///
        /// </summary>
        /// <param name="dg">the directed graph to be iterated.
        /// </param>
        /// <param name="queue">initializer for m_queue
        /// </param>
        /// <param name="inDegreeMap">initializer for m_inDegreeMap
        ///
        /// </param>
        /// <returns> start vertex
        /// </returns>
        //UPGRADE_TODO: Class 'java.util.LinkedList' was converted to 'System.Collections.ArrayList' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilLinkedList'"
        private static System.Object initialize(DirectedGraph dg, System.Collections.ArrayList queue, System.Collections.IDictionary inDegreeMap)
        {
            //UPGRADE_TODO: Method 'java.util.Iterator.hasNext' was converted to 'System.Collections.IEnumerator.MoveNext' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilIteratorhasNext'"
            for (System.Collections.IEnumerator i = dg.vertexSet().GetEnumerator(); i.MoveNext();)
            {
                //UPGRADE_TODO: Method 'java.util.Iterator.next' was converted to 'System.Collections.IEnumerator.Current' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilIteratornext'"
                System.Object vertex = i.Current;

                int inDegree = dg.inDegreeOf(vertex);
                inDegreeMap[vertex] = new ModifiableInteger(inDegree);

                if (inDegree == 0)
                {
                    queue.Add(vertex);
                }
            }

            if ((queue.Count == 0))
            {
                return(null);
            }
            else
            {
                return(queue[0]);
            }
        }
예제 #2
0
        /// <summary> Decrements the in-degree of a vertex.
        ///
        /// </summary>
        /// <param name="vertex">the vertex whose in-degree will be decremented.
        /// </param>
        private void  decrementInDegree(System.Object vertex)
        {
            ModifiableInteger inDegree = (ModifiableInteger)m_inDegreeMap[vertex];

            if (inDegree.value_Renamed > 0)
            {
                inDegree.value_Renamed--;

                if (inDegree.value_Renamed == 0)
                {
                    m_queue.Insert(m_queue.Count, vertex);
                }
            }
        }
		/// <summary> Initializes the internal traversal object structure. Sets up the
		/// internal queue with the directed graph vertices and creates the control
		/// structure for the in-degrees.
		/// 
		/// </summary>
		/// <param name="dg">the directed graph to be iterated.
		/// </param>
		/// <param name="queue">initializer for m_queue
		/// </param>
		/// <param name="inDegreeMap">initializer for m_inDegreeMap
		/// 
		/// </param>
		/// <returns> start vertex
		/// </returns>
		//UPGRADE_TODO: Class 'java.util.LinkedList' was converted to 'System.Collections.ArrayList' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilLinkedList'"
		private static System.Object initialize(DirectedGraph dg, System.Collections.ArrayList queue, System.Collections.IDictionary inDegreeMap)
		{
			//UPGRADE_TODO: Method 'java.util.Iterator.hasNext' was converted to 'System.Collections.IEnumerator.MoveNext' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilIteratorhasNext'"
			for (System.Collections.IEnumerator i = dg.vertexSet().GetEnumerator(); i.MoveNext(); )
			{
				//UPGRADE_TODO: Method 'java.util.Iterator.next' was converted to 'System.Collections.IEnumerator.Current' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073_javautilIteratornext'"
				System.Object vertex = i.Current;
				
				int inDegree = dg.inDegreeOf(vertex);
				inDegreeMap[vertex] = new ModifiableInteger(inDegree);
				
				if (inDegree == 0)
				{
					queue.Add(vertex);
				}
			}
			
			if ((queue.Count == 0))
			{
				return null;
			}
			else
			{
				return queue[0];
			}
		}