这两个都是最基础最简单的数据结构。
数据用一个数组来存储,再用一个变量来跟踪栈顶就足够了。
栈的特点是后进先出,主要的方法就两个,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