public class Stack<T>
{
private List<T> elements; // 内部使用List<T>来存储栈中的元素
// 初始化一个栈
public Stack()
{
elements = new List<T>();
}
// 销毁一个栈
// 注意:在C#中,对象的销毁是由垃圾回收器自动处理的,这里只提供一个标记销毁的方法
public void DestroyStack()
{
elements = null;
// 实际上这并不会立即销毁栈,只是将引用设置为null,待垃圾回收器回收内存
}
// 清空一个栈
public void ClearStack()
{
elements.Clear();
}
// 判断一个栈是否为空
public bool StackIsEmpty()
{
return elements.Count == 0;
}
// 返回栈中元素个数,即栈的长度
public int StackLength()
{
return elements.Count;
}
// 入栈,把一个元素加入到栈中
public void Push(T item)
{
elements.Add(item);
}
// 出栈,把栈顶元素给干掉
public T Pop()
{
if (StackIsEmpty())
{
throw new InvalidOperationException("栈为空,不能进行出栈操作。");
}
return elements.RemoveAt(elements.Count - 1);
}
// 返回栈顶元素,但不出栈
public T GetTop()
{
if (StackIsEmpty())
{
throw new InvalidOperationException("栈为空,无法获取栈顶元素。");
}
return elements[elements.Count - 1];
}
}
使用C#List实现一个栈数据结构
最新推荐文章于 2024-06-13 17:18:47 发布