### 说明
五个操作: 从用户的角度看,支持这些操作就好.具体底层实现,用户不关心.实际底层有多种实现方式 .
* void push(E) //入栈
* E pop() //出栈
* E peek() //查看栈顶元素
* int getSize() //查看栈元素数量
* boolean isEmpty() //查看栈是否为空
### 实现
#### 定义一个接口
~~~
public interface Stack<E> {
int getSize();
boolean isEmpty();
void push(E e);
E pop();
E peek();
}
~~~
#### 实现接口,并完成栈的相关操作
~~~
public class ArrayStack<E> implements Stack<E> {
Array<E> array;
public ArrayStack(int capacity)
{
array = new Array<>(capacity);
}
public ArrayStack()
{
array = new Array<>();
}
@Override
public int getSize()
{
return array.getSize();
}
@Override
public boolean isEmpty()
{
return array.isEmpty();
}
public int getCapacity()
{
return array.getCapacity();
}
@Override
public void push(E e)
{
array.addLast(e);
}
@Override
public E pop()
{
return array.removeLast();
}
@Override
public E peek()
{
return array.getLast();
}
@Override
public String toString()
{
StringBuilder res = new StringBuilder();
res.append("Stack :");
res.append('[');
for(int i = 0; i < array.getSize(); i++) {
res.append(array.get(i));
if(i != array.getSize() - 1)
res.append(",");
}
res.append("] top");
return res.toString();
}
}
~~~
### 栈的复杂度分析
栈在时间性能上是非常的好的
* void push(E) //O(1)均摊
* E pop(E) //O(1)均摊
* E peek() //O(1)
* int getSize() //O(1)
* boolean isEmpty() //O(1)