这两个都是最基础最简单的数据结构。
数据用一个数组来存储,再用一个变量来跟踪栈顶就足够了。
栈的特点是后进先出,主要的方法就两个,Push压入栈,Pop弹出。
class DSStack<T>
{
private T[] _ds;
private int _top;
public DSStack(int length)
{
_top = -1;
_ds = new T[length];
}
public bool Push(T data)
{
if (_top == _ds.Length - 1) return false;
_top++;
_ds[_top] = data;
return true;
}
public bool Pop(out T data)
{
if (_top == 0)
{
data = default(T);
return false;
}
data = _ds[_top];
_top--;
return true;
}
}
队列也是用一个数组来存储,不同的是需要用两个变量分别来跟踪队首和队尾。
队列的特点是先进先出,主要的方法有,EnQueue入队,DeQueue出队。
class DSQueue<T>
{
private T[] _ds;
private int _head;
private int _tail;
public DSQueue(int length)
{
_head = 0;
_tail = 0;
_ds = new T[length];
}
public bool EnQueue(T data)
{
if (_head == _tail + 1) return false;
_ds[_tail] = data;
_tail++;
if (_tail > _ds.Length - 1) _tail -= _ds.Length - 1;
return true;
}
public bool DeQueue(out T data)
{
if (_head == _tail)
{
data = default(T);
return false;
}
data = _ds[_head];
_head++;
if (_head > _ds.Length - 1) _head -= _ds.Length - 1;
return true;
}
}原文地址:http://www.cnblogs.com/zhang740/p/3785668.html