예제 #1
0
        /// <summary>
        /// 定长 Stack 的一个应用: 倒序输出某个序列
        /// </summary>
        static void FixedCapacityStackClient()
        {
            var arr   = new String[] { "h1", "h2", "h3", "h4", "h5" };
            var stack = new FixedCapacityStack <String>(arr.Length);

            foreach (var item in arr)
            {
                stack.Push(item);
            }
            // 实现了迭代器之后, 就可以直接在 stack 上遍历了(这里实现的是一个逆序迭代器)
            foreach (var item in stack)
            {
                System.Console.WriteLine($"栈中元素: {item}");
            }
            while (!stack.IsEmpty())
            {
                System.Console.WriteLine(stack.Pop());
            }
        }
예제 #2
0
    /// <summary>
    /// 返回对 n 个随机整数的栈进行 n 次 push 和 n 次 pop 所需的时间。
    /// </summary>
    /// <param name="n">随机数组的长度。</param>
    /// <returns></returns>
    public static double TimeTrialGeneric(int n)
    {
        var a      = new int[n];
        var stack  = new FixedCapacityStack <int>(n);
        var random = new Random(DateTime.Now.Millisecond);

        for (var i = 0; i < n; i++)
        {
            a[i] = random.Next(-MaximumInteger, MaximumInteger);
        }
        var timer = new Stopwatch();

        for (var i = 0; i < n; i++)
        {
            stack.Push(a[i]);
        }
        for (var i = 0; i < n; i++)
        {
            stack.Pop();
        }
        return(timer.ElapsedTimeMillionSeconds());
    }