Ejemplo n.º 1
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);
                }
            }
        }
        /// <summary>
        ///GetLength 的测试
        ///</summary>
        public void GetLengthTestHelper <T>()
        {
            int size = 10;                                          // TODO: 初始化为适当的值
            SequenceQueue <T> target = new SequenceQueue <T>(size); // TODO: 初始化为适当的值
            int expected             = 2;                           // TODO: 初始化为适当的值
            int actual;

            target.In(default(T));
            target.In(default(T));
            actual = target.GetLength();
            Assert.AreEqual(expected, actual);
        }
        /// <summary>
        ///Clear 的测试
        ///</summary>
        public void ClearTestHelper <T>()
        {
            int size = 10;                                          // TODO: 初始化为适当的值
            SequenceQueue <T> target = new SequenceQueue <T>(size); // TODO: 初始化为适当的值

            target.In(default(T));
            target.In(default(T));

            Assert.AreEqual(-1, target.Front);
            Assert.AreEqual(1, target.Rear);
            target.Clear();

            Assert.AreEqual(-1, target.Front);
            Assert.AreEqual(-1, target.Rear);
        }
        /// <summary>
        ///IsFull 的测试
        ///</summary>
        public void IsFullTestHelper <T>()
        {
            int size = 3;                                           // TODO: 初始化为适当的值
            SequenceQueue <T> target = new SequenceQueue <T>(size); // TODO: 初始化为适当的值

            Assert.IsFalse(target.IsFull());

            target.In(default(T));
            Assert.IsFalse(target.IsFull());

            target.In(default(T));
            Assert.IsFalse(target.IsFull());

            target.In(default(T));
            Assert.IsTrue(target.IsFull());
        }
        /// <summary>
        ///In 的测试
        ///</summary>
        public void InTestHelper <T>()
        {
            int size = 5;                                           // TODO: 初始化为适当的值
            SequenceQueue <T> target = new SequenceQueue <T>(size); // TODO: 初始化为适当的值
            T item = default(T);                                    // TODO: 初始化为适当的值

            target.In(item);
        }
        /// <summary>
        ///GetFront 的测试
        ///</summary>
        public void GetFrontTestHelper <T>()
        {
            int size = 10;                                          // TODO: 初始化为适当的值
            SequenceQueue <T> target = new SequenceQueue <T>(size); // TODO: 初始化为适当的值
            T expected = default(T);                                // TODO: 初始化为适当的值
            T actual   = default(T);

            target.In(default(T));
            actual = target.GetFront();
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 7
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;
                }
            }
        }
        /// <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());
        }
        /// <summary>
        ///In 的测试
        ///</summary>
        public void InTestHelperString()
        {
            int size = 5;                                                     // TODO: 初始化为适当的值
            SequenceQueue <string> target = new SequenceQueue <string>(size); // TODO: 初始化为适当的值

            for (int i = 0; i < 5; i++)
            {
                target.In(i.ToString());

                Assert.AreEqual(i, target.Rear);
            }

            Assert.AreEqual(-1, target.Front);
        }
        //
        //编写测试时,还可使用以下属性:
        //
        //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //使用 TestInitialize 在运行每个测试前先运行代码
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //使用 TestCleanup 在运行完每个测试后运行代码
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion


        /// <summary>
        ///Out 的测试
        ///</summary>
        public void OutTestHelperString()
        {
            int size = 10;                                                    // TODO: 初始化为适当的值
            SequenceQueue <string> target = new SequenceQueue <string>(size); // TODO: 初始化为适当的值

            for (int i = 0; i < size; i++)
            {
                target.In(i.ToString());
            }

            for (int i = 0; i < size; i++)
            {
                Assert.AreEqual(i.ToString(), target.Out());
            }

            try
            {
                target.Out();
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(ex, typeof(DataStructureException));
            }
        }