public class MyStack<T> where T : notnull
{
private T[] stack;
//指向栈顶元素上一个位置的指针
private int top;
MyStack()
{
stack = new T[10];
}
public bool isEmpty() => stack.Length == 0;
public T Peek()
{
if (top > 0)
return stack[top - 1];
return default;
}
public T Pop()
{
if(top > 0)
{
T t = stack[top - 1];
stack[top - 1] = default;
top--;
return t;
}
return default;
}
public void Push(T item)
{
expandCapacity(top + 1);
stack[top] = item;
top++;
}
public void expandCapacity(int size)
{
int len = stack.Length;
if(size > len)
{
size = size * 3 / 2 + 1;
Array.Copy(stack, stack, size);
}
}
}
算法通关村——基于数组实现栈
最新推荐文章于 2024-06-22 21:53:36 发布