閱讀815 返回首頁    go 阿裏雲 go 技術社區[雲棲]


C#棧的實現(數製轉換)

using System ; public class Stacks { private object [] _array; //存放元素的數組; private const int _defaultCapacity=10; //默認空間; private int _size; //指示元素個數; public Stacks () { this._array=new object[_defaultCapacity] ; this._size=0; } public Stacks(int initalCapacity) { if(initalCapacity <0) { throw new ArgumentOutOfRangeException("棧空間不能小於0!"); } if(initalCapacity <_defaultCapacity ) { initalCapacity =_defaultCapacity ; } this._array=new object[initalCapacity] ; //分配棧空間; this._size=0; } //出棧; public object Pop() { if(this._size==0) { throw new InvalidOperationException("棧下溢,棧內已無數據!"); } object obj2=this._array[--this._size]; //取出棧頂元素; this._array[this._size]=null; //刪除棧頂元素; return obj2; } //進棧; public void Push(object obj) { if(this._size==this._array.Length) { //如果棧空間已滿,則將原來空間擴展為原來的2倍; object[]destinationArray=new object[2*this._array.Length]; Array.Copy(this._array,0,destinationArray ,0,this._size); this._array=destinationArray; } } public int Count { get {return this._size;} } } class App { static string DecConvert(int N,int D) { if(D<2||D>16) { throw new ArgumentOutOfRangeException("D","隻支持將十進製數據轉換為二進製至16進製!"); } Stacks stack=new Stacks (); do { int residue=N%D;//取餘; char c=(residue <10)?(char)(residue+48):(char)(residue+55); stack.Push(c); //進棧; } while ((N=N/D)!=0); string s=string.Empty; while (stack.Count>0) { s+=stack.Pop().ToString(); } return s; } static void Main() { Console.WriteLine(DecConvert(27635,16)); Console.WriteLine(DecConvert(27635,8)); Console.WriteLine(DecConvert(27635,2)); } }

最後更新:2017-04-02 04:00:25

  上一篇:go 中國密碼算法標準什麼時候才能有?
  下一篇:go 查看sql server 當前數據庫使用的字符集