本帖最后由 caozhy 于 2012-11-08 15:40:13 编辑

解决方案 »

  1.   


    Stack<string> stack = new Stack<string>();
                stack.Push("a");
                stack.Push("b");
                stack.Push("c");
                stack.Push("d");
                stack.Push("e");
                Console.WriteLine("count:" + stack.Count);
                while( 0!= stack.Count)
                { 
                    Console.WriteLine(stack.Pop());
                }
                Console.Read();这个题目不适合c#,c#做的话只有这么简单,没有必要加上多余的判断,也没有必要手动的去释放
      

  2.   

    加判断,手动释放Stack<char> st = new Stack<char>();
                int i = st.Count;
                if (0 == st.Count)
                {
                    Console.WriteLine("堆栈为空!");
                }
                else
                {
                    Console.WriteLine("堆栈不为空!");
                }
                st.Push('a');
                st.Push('b');
                st.Push('c');
                st.Push('d');
                st.Push('e');
                i = st.Count;
                if (0 == st.Count)
                {
                    Console.WriteLine("堆栈为空!");
                    Console.WriteLine("堆栈的长度{0}!", i);
                }
                else
                {
                    Console.WriteLine("堆栈不为空!");
                    Console.WriteLine("堆栈的长度{0}!", i);
                    for (int j = 0; j < i; j++)
                    {
                        Console.WriteLine( st.Pop() + " ");
                    }
                    
                }
                if (0 == st.Count)
                {
                    Console.WriteLine("堆栈为空!");
                }
                else
                {
                    Console.WriteLine("堆栈不为空!");
                }
                st.Clear();
                Console.WriteLine("堆栈内存已释放!");
                Console.ReadLine();