/// <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); }
/// <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)); } }