C#栈的实现(数制转换)
2009-09-30 17:22
134 查看
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)); } }
相关文章推荐
- C#栈的实现(数制转换)
- DS之栈实现数制转换(补充)
- 数制转换-栈的应用(C++实现)
- 数制转换-栈的应用(C++实现)
- 数据结构实验五——栈实现数制转换
- 编程:用递归函数实现数制转换
- 实现数制转换的算法
- 用栈实现数制转换(java)
- 《数据结构》算法3.8栈实现数制转换
- 递归实现数制转换
- 数据结构-栈的实现之数制转换
- C# 递归算法 实现 数制转换
- 用栈实现数制转换
- 用栈的思想实现数制转换(十进制->八进制)
- 用栈来实现数制转换
- (1.2.2.1)栈和队列的应用:数制转换、括号匹配、后缀表达式求解,中缀表达式求解、双栈实现队列,min函数栈
- 数制转换 递归实现
- 数制转换:如何将十进制数N转换为x进制数?(用栈实现)
- 数制转换-栈的应用(C++实现)
- 递归算法实现数制转换