/// <summary>
        ///IsEmpty 的测试
        ///</summary>
        public void IsEmptyTestHelper <T>()
        {
            int size = 2;                                           // TODO: 初始化为适当的值
            SequenceQueue <T> target = new SequenceQueue <T>(size); // TODO: 初始化为适当的值
            bool expected            = true;                        // TODO: 初始化为适当的值
            bool actual;

            actual = target.IsEmpty();
            Assert.AreEqual(expected, actual);

            target.In(default(T));

            Assert.AreEqual(false, target.IsEmpty());
        }
示例#2
0
        /// <summary>
        /// 层序遍历节点
        /// </summary>
        /// <param name="node"></param>
        public void LevelOrder(Node <T> node)
        {
            if (node == null)
            {
                return;
            }

            DataStructureLib.SequenceQueue <Node <T> > queue = new SequenceQueue <Node <T> >(100);

            queue.In(node);

            while (!queue.IsEmpty())
            {
                Node <T> currentNode = queue.Out();

                Console.WriteLine("Node Data :{0}", currentNode.Data);
                if (currentNode.LeftChild != null)
                {
                    queue.In(currentNode.LeftChild);
                }

                if (currentNode.RightChild != null)
                {
                    queue.In(currentNode.RightChild);
                }
            }
        }
示例#3
0
        /// <summary>
        /// 广度优先遍历当前点的邻接点
        /// </summary>
        /// <param name="currentIndex"></param>
        /// <param name="currenNodeData"></param>
        public void BreadthFirstSearch(int currentIndex, ref string currenNodeData)
        {
            visited[currentIndex] = 1;

            #region path
            currenNodeData += vertexNodeList[currentIndex].Data.Data.ToString();

            currenNodeData += pathSplitchar;
            #endregion
            //队列
            SequenceQueue <int> queue = new SequenceQueue <int>(visited.Length);

            queue.In(currentIndex);

            while (!queue.IsEmpty())
            {
                int currentVertexNodeIndex = queue.Out();

                //取出当前邻接节点的第一个邻接点
                AdjacentListNode p = vertexNodeList[currentVertexNodeIndex].FirstAdjacentListNode;

                //邻接表的
                while (p != null)
                {
                    if (visited[p.AdjacentVertexNodeIndex] == 0)
                    {
                        visited[p.AdjacentVertexNodeIndex] = 1;

                        #region path
                        currenNodeData += vertexNodeList[p.AdjacentVertexNodeIndex].Data.Data.ToString();

                        currenNodeData += pathSplitchar;
                        #endregion
                        queue.In(p.AdjacentVertexNodeIndex);
                    }
                    p = p.Next;
                }
            }
        }