コード例 #1
0
        public void Move()
        {
            var x         = 1;
            var y         = 1;
            var linkStack = new LinkStack <Step>();

            maze[1, 1] = 2;
            while (x <= exitX && y <= exitY)
            {
                if (x == exitX && y == exitY)
                {
                    return;
                }

                if (maze[x - 1, y] == 0)
                {
                    x -= 1;
                    linkStack.Push(new Node <Step>(new Step {
                        X = x, Y = y
                    }));
                }
                else if (maze[x + 1, y] == 0)
                {
                    x += 1;
                    linkStack.Push(new Node <Step>(new Step {
                        X = x, Y = y
                    }));
                }
                else if (maze[x, y - 1] == 0)
                {
                    y -= 1;
                    linkStack.Push(new Node <Step>(new Step {
                        X = x, Y = y
                    }));
                }
                else if (maze[x, y + 1] == 0)
                {
                    y += 1;
                    linkStack.Push(new Node <Step>(new Step {
                        X = x, Y = y
                    }));
                }
                else
                {
                    var stepNode = new Node <Step>();
                    linkStack.Pop(out stepNode);

                    if (x == stepNode.Data.X && y == stepNode.Data.Y)
                    {
                        linkStack.Pop(out stepNode);
                    }

                    x = stepNode.Data.X;
                    y = stepNode.Data.Y;
                }

                maze[x, y] = 2;
            }
        }
コード例 #2
0
        public void PushAndPop()
        {
            var students = new Student[]
            {
                new Student {
                    No = 1, Name = "李1", Score = 22.1
                },
                new Student {
                    No = 2, Name = "李2", Score = 32.3
                },
                new Student {
                    No = 3, Name = "李3", Score = 42.5
                }
            };

            var linkStack = new LinkStack <Student>();

            foreach (var student in students)
            {
                linkStack.Push(new Node <Student>(student));
            }

            var popStudent = new Node <Student>();

            while (linkStack.Pop(out popStudent))
            {
            }
        }
コード例 #3
0
        public void PopStringTest()
        {
            LinkStack <string> target = new LinkStack <string>(); // TODO: 初始化为适当的值

            target.Push("A");

            target.Push("B");

            target.Push("C");

            Assert.AreEqual <string>("C", target.Pop());
            Assert.AreEqual <string>("B", target.Pop());
            Assert.AreEqual <string>("A", target.Pop());

            Assert.AreEqual(0, target.Count);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: vin120/c-shap-code
        static void Main(string[] args)
        {
            //1.使用BCL中的Stack<T>
            //Stack<char> stack = new Stack<char>();
            //2.使用自己的顺序栈
            //IStackDS<char> stack = new SeqStack<char>(30);
            //3.使用自己的链栈
            IStackDS<char> stack = new LinkStack<char>();

            stack.Push('a');
            stack.Push('b');
            stack.Push('c');

            Console.WriteLine(stack.Count);
            char temp = stack.Pop(); //取得栈顶数据  并把栈顶的数据删除

            Console.WriteLine(temp);
            Console.WriteLine(stack.Count);

            char temp2 = stack.Peek();  //取得栈顶的数据 不删除
            Console.WriteLine(temp2);
            Console.WriteLine(stack.Count);

            stack.Clear();
            Console.WriteLine(stack.Count);

            Console.ReadKey();
        }
コード例 #5
0
            public void PopLink()
            {
                if (LinkStack.Count == 0)
                {
                    return;
                }

                LinkStack.Pop();
            }
コード例 #6
0
        //
        //编写测试时,还可使用以下属性:
        //
        //使用 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>
        ///Push 的测试
        ///</summary>
        public void PushTestHelper <T>()
        {
            LinkStack <T> target = new LinkStack <T>(); // TODO: 初始化为适当的值
            T             p      = default(T);          // TODO: 初始化为适当的值

            target.Push(p);

            Assert.AreEqual(1, target.Count);
            Assert.AreEqual(p, target.Pop());
        }
コード例 #7
0
 static void Main(string[] args)
 {
     IStack<string> stack = new LinkStack<string>();
     stack.Push("a1");
     stack.Push("a2");
     stack.Push("a3");
     while (stack.IsEmpty() == false)
     {
         Console.WriteLine(stack.StackTop);
         stack.Pop();
     }
 }
コード例 #8
0
        public void TestAsserLinkStack()
        {
            LinkStack <int> A = new LinkStack <int>();

            A.Push(1);
            A.Push(2);
            A.Push(3);
            A.Push(4);
            A.Push(5);

            //Pop
            //Normal
            int testnum1 = A.Pop(); //1
            int testnum2 = A.Pop(); //2

            Assert.AreEqual(5, testnum1);
            Assert.AreEqual(4, testnum2);
            //Edge
            A.Pop(); //3
            A.Pop(); //4
            A.Pop(); //5
        }
コード例 #9
0
    void Start()
    {
        LinkStack <int> seqStack = new LinkStack <int>();

        for (int i = 0; i < 3; i++)
        {
            seqStack.Push(i);
        }
        print("展示栈顶元素:" + seqStack.Peek());
        print("栈数量:" + seqStack.GetLength());
        for (int i = 0; i < 3; i++)
        {
            print(seqStack.Pop());
        }
    }
コード例 #10
0
ファイル: StackAlgorithm.cs プロジェクト: blacop/DSCSR
        public void ConversionOct(int n)   //【例3-1】数制转换问题
        {
            LinkStack <int> s = new LinkStack <int>();

            while (n > 0)
            {
                s.Push(n % 8);
                n = n / 8;
            }
            while (!s.IsEmpty())
            {
                n = s.Pop();
                Console.WriteLine("{0}", n);
            }
        } //【例3-1】数制转换问题 //8进制转换//public void Conversion(int n)
コード例 #11
0
        /// <summary>
        /// 二进制转换
        /// </summary>
        /// <param name="number">被转换的10进制数</param>
        static void ConvertTo(long number)
        {
            LinkStack <long> myLinkStack = new LinkStack <long>();

            Console.WriteLine("input number:{0}:", number);
            while (number > 0)
            {
                myLinkStack.Push(number % 2);
                number = number / 2;
            }

            Console.Write("Result:");
            while (!myLinkStack.IsEmpty())
            {
                Console.Write(myLinkStack.Pop());
            }
        }
コード例 #12
0
        public void Test()
        {
            LinkStack <int> stack = new LinkStack <int>();

            stack.Push(1);
            stack.Push(2);
            stack.Push(3);

            Assert.Equal(3, stack.Pop());
            Assert.Equal(2, stack.Pop());
            Assert.Equal(1, stack.Pop());

            stack.Push(1);
            stack.Push(2);
            Assert.Equal(2, stack.Pop());
            Assert.Equal(1, stack.Pop());

            stack.Push(3);
            Assert.Equal(3, stack.Pop());
        }
コード例 #13
0
ファイル: Test.cs プロジェクト: Laetar/Epam
        public void TestAsserLinkStack()
        {
            LinkStack<int> A = new LinkStack<int>();

            A.Push(1);
            A.Push(2);
            A.Push(3);
            A.Push(4);
            A.Push(5);

            //Pop
            //Normal
            int testnum1 = A.Pop(); //1
            int testnum2 = A.Pop(); //2
            Assert.AreEqual(5, testnum1);
            Assert.AreEqual(4, testnum2);
            //Edge
            A.Pop(); //3
            A.Pop(); //4
            A.Pop(); //5
        }