class SystemStack<T>
{
系统定义的栈,Push和Pop方法都已经写好
Stack<T> systemStack = new Stack<T>();
public void AddT(T x)
{
systemStack.Push(x);
}
public T GetT()
{
if (systemStack.Count <= 0)
{
throw new Exception();
}
else
{
T temp = systemStack.Pop();
return temp;
}
}
}
class MyStack<T>
{
//用数组去实现一个栈
//由于数组是定长,所以不能实现真正意义上的Pop()
T[] stackArray;
int stackPoint = 0;
const int MaxLength = 10;
public void AddT(T x)
{
if (!IsArrayFull)
{
stackArray[stackPoint++] = x;
}
}
public T GetT()
{
return (!IsArrayEmpty) ? stackArray[--stackPoint] : stackArray[0];
}
private bool IsArrayFull { get { return (stackPoint >= MaxLength); } }
private bool IsArrayEmpty { get { return (stackPoint <= 0); } }
public MyStack()
{
stackArray = new T[MaxLength];
}
class MyStack<T>
{
//跟系统的栈一样的功能
List<T> myStack;
int stackPoint = 0;
public void Push(T x)
{
myStack.Add(x);
stackPoint++;
}
public T Pop()
{
if(stackPoint <= 0)
{
throw new Exception();
}
else
{
T temp = myStack[--stackPoint];
myStack.RemoveAt(stackPoint);
return temp;
}
}
private bool IsListEmpty { get { return (stackPoint <= 0); } }
public MyStack()
{
myStack = new List<T>();
}
}