.Net栈的使用-一般操作与进制转换

        static void Main(string[] args)
        {

            Program main = new Program();
            main.testStack1();
           Console.WriteLine(main.testStack2(20, 2));
        }
        private void testStack1()
        {
            Stack<int> stack1 = new Stack<int>();
            stack1.Push(1);
            stack1.Push(2);
            stack1.Push(3);
            stack1.Push(4);

            while (true)
            {
                if (stack1.Count > 0)
                {
                    Console.WriteLine(stack1.Pop());
                }
                else
                {
                    break;
                }
            }
        }

        /// <summary>
        /// 利用栈进行进制转换
        /// </summary>
        /// <param name="N">10进制的数字</param>
        /// <param name="D">进制</param>
        /// <returns>转换后的字符串</returns>
        public string testStack2(int N, int D)
        {
            if (D < 2 || D > 16)
            {
                throw new ArgumentOutOfRangeException("D", "只支持2、8、10、16进制的转换!");
            }
            Stack<char> stack = new Stack<char>();
            do
            {
                //取余
                int Residue = N % D;
                char c = (Residue < 10) ? (char)(Residue + 48) : (char)(Residue + 55);
                stack.Push(c);
            } while ((N = N / D) != 0);//当商为0时代表运算结束
            string s = string.Empty;

            while (stack.Count > 0)
            {
                //弹出所有的元素
                s += stack.Pop().ToString();
            }
            return s;
        }


效果:

.Net栈的使用-一般操作与进制转换_第1张图片

你可能感兴趣的:(算法,C#,栈)