早前写得栈的实现,基本功能都有。
代码:
/// <summary>/// 栈/// </summary>public class Stack{private object[] data; //用data数组来储存数据private int size; //栈的大小private int top; //top指针public object this[int loc]{get { return loc >= 0 && loc <= top ? data[loc] : null; }}/// <summary>/// 当前栈中元素个数/// </summary>public int Length{get { return this.top + 1; }}/// <summary>/// 构造函数/// </summary>/// <param name="size"></param>public Stack(int size){if (size>=0){this.data = new object[size];this.size = size;this.top = -1; //初始top指针赋-1 }else{this.data = null;this.size = 0;this.top = -1;}}/// <summary>/// 是否空/// </summary>/// <returns></returns>public bool isEmpty(){return this.top == -1;}/// <summary>/// 是否满/// </summary>/// <returns></returns>public bool isFull(){return this.top == this.size - 1;}/// <summary>/// 压栈/// </summary>/// <param name="elem"></param>public void Push(object elem){if (this.isFull()){throw new Exception("Stack is full!");}this.top++;this.data[this.top] = elem;}/// <summary>/// 出栈/// </summary>/// <returns></returns>public object Pop(){if (this.isEmpty()){throw new Exception("Stack is empty!");}object elem = this.data[this.top];this.top--;return elem;}/// <summary>/// 获取栈顶元素/// </summary>/// <returns></returns>public object getTop(){if (this.isEmpty()){throw new Exception("Stack is empty!");}return this.data[this.top];}/// <summary>/// 清空/// </summary>public void Clear(){this.top = -1;}}