时间复杂度分析:压栈和弹栈的时间复杂度均为O(1)级别,因为只需更改单个节点的索引即可。
空间复杂度分析:在入栈和出栈的过程中,只需要一两个临时变量存储空间,所以O(1)级别。我们说空间复杂度的时候,是指除了原本的数据存储空间外,算法运行还需要额外的存储空间。
public class Stack<T>
{
private Node<T> top = null;
public bool push(T item)
{
if (top == null)//判断栈是否为空
{
top = new Node<T>(item);
return true;
}
else
{
Node<T> temp = new Node<T>(item);
temp.Next = top;//将元素插入到栈顶位置
top = temp;
return true;
}
}
/// <summary>
/// 移除栈顶
/// </summary>
/// <returns></returns>
public T pop()
{
if (top == null)
{
return default(T);
}
else {
Node<T> temp = new Node<T>();
top = top.Next;
if (top == null)//需要判断是否为空
{
return default(T);
}
return top.Data;
}
}
}
网友评论