### 說明
五個操作: 從用戶的角度看,支持這些操作就好.具體底層實現,用戶不關心.實際底層有多種實現方式 .
* 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)