Java 數據結構與算法系列精講之棧
概述
從今天開始, 小白我將帶大傢開啟 Jave 數據結構 & 算法的新篇章.
棧
棧 (Stack) 是一種運算受限的線性表, 遵循先進後出的原則 (Last-In-First-Out). 舉個例子, 當我們灌調料的時候, 後灌進去的調料會先被使用.
棧隻能在表尾部進行插入和刪除的操作. 開口的一端被稱為棧頂, 另一端則被稱為棧底. 如圖:
棧實現
push 方法
棧 (Stack) 的 push 方法, 把項壓入棧頂部.
代碼:
// push方法 public void push(E element){ array.add(array.size(), element); }
pop 方法
棧 (Stack) 的 pop 方法, 移除棧頂對象並返回.
代碼:
// pop方法 public E pop(){ E element = array.get(array.size() - 1); array.remove(array.size() - 1); return element; }
main
public static void main(String[] args) { // 創建棧 Stack<Integer> stack = new Stack<>(); // push5個元素 for (int i = 0; i < 5; i++) { stack.push(i); System.out.println(stack); } // pop 5個元素 for (int i = 0; i < 5; i++) { stack.pop(); System.out.println(stack); } }
輸出結果:
stack{array=[0]}
stack{array=[0, 1]}
stack{array=[0, 1, 2]}
stack{array=[0, 1, 2, 3]}
stack{array=[0, 1, 2, 3, 4]}
stack{array=[0, 1, 2, 3]}
stack{array=[0, 1, 2]}
stack{array=[0, 1]}
stack{array=[0]}
stack{array=[]}
完整代碼
import java.util.ArrayList; public class Stack<E> { private ArrayList<E> array; // 無參構造 public Stack() { array = new ArrayList(); } // 有參構造 public Stack(int capacity){ array = new ArrayList(capacity); } // push方法 public void push(E element){ array.add(array.size(), element); } // pop方法 public E pop(){ E element = array.get(array.size() - 1); array.remove(array.size() - 1); return element; } @Override public String toString() { return "stack{" + "array=" + array + '}'; } public static void main(String[] args) { // 創建棧 Stack<Integer> stack = new Stack<>(); // push5個元素 for (int i = 0; i < 5; i++) { stack.push(i); System.out.println(stack); } // pop5個元素 for (int i = 0; i < 5; i++) { stack.pop(); System.out.println(stack); } } }
到此這篇關於Java 數據結構與算法系列精講之棧的文章就介紹到這瞭,更多相關Java 棧內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java 動態數組的實現示例
- Java中關於泛型、包裝類及ArrayList的詳細教程
- 詳細總結Java for循環的那些坑
- Java中ArrayList與順序表的概念與使用實例
- 細數java for循環中的那些坑