05-java實現棧
阿新 • • 發佈:2020-08-14
05-java實現棧
一丶棧
- 棧是特殊的線性表,只能在一段操作
- 新增元素push,入棧
- 刪除元素pop,出棧
- 動態陣列和雙向連結串列都可以實現
- 在棧頂進行操作
二丶棧的介面設計
public class Stack<E> { // 使用動態陣列實現棧 private List<E> list = new ArrayList<>(); // 元素的數量 public int size(); // 是否為空 public boolean isEmpty(); // 入棧 public void push(E element); // 出棧 public E pop(); // 獲取棧頂元素 public E top(); }
三丶棧的實現
- 我們在動態陣列中實現了很多介面,動態陣列和棧的結構類似,很多方法我們可以複用
- 我們採用組合的方式,將動態陣列注入,
- 我們也可以採取繼承的方式,但是繼承會導致一些不需要的介面對外暴露,所以我們還是選擇了組合的方式
- list.get().這個介面我們就沒必要對外暴露
public class Stack<E> { // 使用 動態陣列儲存陣列 private ArrayList<E> list; public Stack() { // 初始化方法中建立列表 this.list = new ArrayList<>(); } public int size() { // 棧中元素數量, 就是列表中儲存的元素數量 return list.size(); } public boolean isEmpty() { // 棧是否空, 就是列表是否空 return list.isEmpty(); } public void push(E element) { // 入棧, 將元素新增到列表的最後面 list.add(element); } public E pop() { // 出棧, 將列表中最後一個元素刪除並返回 return list.remove(list.size() - 1); } public E top() { // 檢視棧頂元素, 就是檢視列表中的最後一個元素 return list.get(list.size() - 1); } public void clear() { // 清空棧, 就是清空列表 list.clear(); } }