代码
namespace DataStructure
{
/*
stack是一种先进后出的数据结构
有几个基本操作,见代码
用于解决和存取数据的顺序有关的问题
*/
public class ArrayStack<T>
{
private T[] memory;
private int _size;
public ArrayStack(int capacity)
{
Rebuild(capacity);
}
public void Clear()
{
_size = 0;
}
public void Rebuild(int capacity)
{
memory = new T[capacity];
_size = 0;
}
public T Pop()
{
var val = Peek();
_size--;
return val;
}
public T Peek()
{
if (Size() == 0)
{
throw new System.Exception("empty stack");
}
return memory[Size() - 1];
}
public void Push(T val)
{
if (Size() == Capacity())
{
throw new System.Exception("stack overflow");
}
memory[Size()] = val;
_size++;
}
public int Capacity()
{
return memory.Length;
}
public int Size()
{
return _size;
}
public bool IsEmpty()
{
return Size() == 0;
}
}
}