08
2014
01

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

//code

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;  

}  


效果:



版权声明:
作者:真爱无限 出处:http://www.pukuimin.top 本文为博主原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接.
« 上一篇下一篇 »

相关文章:

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。