栈和队列死常用的两种数据结构,逻辑节后和线性表一样,不同之处在于操作受限,只是线性表的一个子集。 更准确的说它们插入,删除,受限制。在.net 中,值类型在栈上分配,引用类型在托管堆上分配。
栈(stack) 的数据特点“后进先出”,或者先进后出
栈可广泛用于求值,进制转换,括号匹配,递归调用等"先进后出的问题",
十进制转换二进制八进制数的一种算法就是利用栈来实现
算法步骤:
取十进制数
取药转换的基数
循环
把十进制数与基数相互转的余数压入栈
把十进制与基数相处的商赋值给新的十进制数
当十进制不等于0时继续循环
/// a 10进制数,b是进制数
Static void MulBase(int a ,int b)
{
Stack Digits=new Stack();
Do
{
Digits.Push(n%b);
n/=b;
}
While(n!=0)
}
队列 的数据特点“先进先出”.
对一个Queue 实例化的时候 ,队列默认容量32 个数据项 。,当队列满时,容量会双倍增长 变为64. ,128 等等。
初始设置还有其他版本
1 Queue myqueue =new Queue(1000);
2 Queue myqueue=new Queue(32,3);
泛型版本 Queue<int> numbers= new Queue<int> ();默认增长倍数是初始容量三倍。
在.net frmamework 中System.collections.Queue 和System.Collections.Generic.Queue<T> 他们都是环形队列。
引入引入环形队列的目的是为了克服基于数组的队列在执行队列操作时,速度慢,需要花费大量时间移动元素。避免出现假溢出现象。