Java棧資料結構的實現方式
棧是Java語言中最重要的資料結構之一,它的實現,至少應該包括以下幾個方法:
- pop() 出棧操作,彈出棧頂元素。
- push(E e) 入棧操作
- peek() 檢視棧頂元素
- isEmpty() 棧是否為空
另外,實現一個棧,還應該考慮到幾個問題:
- 棧的初始大小以及棧滿以後如何新增棧空間
- 對棧進行更新時需要進行同步
簡單示例,使用陣列實現棧,程式碼如下:
public class Stack<E> { // Java 不支援泛型陣列,如需使用,請使用Java提供的容器 private Object[] stack; // 棧的預設初始大小 private static final int INIT_SIZE = 2; // 棧頂索引 private int index; public Stack() { stack = new Object[INIT_SIZE]; index = -1; } /** * 構造方法 * * @param initSize * 棧的初始大小 */ public Stack(int initSize) { if (initSize < 0) { throw new IllegalArgumentException(); } stack = new Object[initSize]; index = -1; } /** * 出棧操作 * * @return 棧頂物件 */ public synchronized E pop() { if (!isEmpty()) { E temp = peek(); stack[index--] = null; return temp; } return null; } /** * 入棧操作 * * @param obj * 等待入棧的物件 */ public synchronized void push(E obj) { if (isFull()) { Object[] temp = stack; // 如果棧滿,則建立空間為當前棧空間兩倍的棧 stack = new Object[2 * stack.length]; System.arraycopy(temp, 0, stack, 0, temp.length); } stack[++index] = obj; } /** * 檢視棧頂物件 * * @return 棧頂物件 */ public E peek() { if (!isEmpty()) { return (E) stack[index]; } return null; } /** * 檢視棧是否為空 * * @return 如果棧為空返回true,否則返回false */ public boolean isEmpty() { return index == -1; } /** * 檢視棧是否滿 * * @return 如果棧滿返回true,否則返回false */ public boolean isFull() { return index >= stack.length - 1; } }
最後說明,Java中實現了棧(java.util.Stack)的資料結構,它是通過繼承Vector類實現的,一般情況下我們直接拿來用就行了。
相關文章
- js實現資料結構--棧JS資料結構
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- 演算法與資料結構-棧(Stack)-Java實現演算法資料結構Java
- 資料結構之php實現棧資料結構PHP
- Java版-資料結構-棧Java資料結構
- java實現單連結串列、棧、佇列三種資料結構Java佇列資料結構
- 詳細分析棧和佇列的資料結構的實現過程(Java 實現)佇列資料結構Java
- 資料結構-js實現棧和佇列資料結構JS佇列
- php實現基本資料結構之棧、佇列PHP資料結構佇列
- 資料結構和演算法-切片實現棧資料結構演算法
- Java實現資料結構之線性結構Java資料結構
- Java關於資料結構的實現:樹Java資料結構
- 資料結構-棧資料結構
- 資料結構 - 棧資料結構
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 波波的資料結構-棧資料結構
- 資料結構與演算法 | 棧的實現及應用資料結構演算法
- Java關於資料結構的實現:雜湊Java資料結構
- 資料結構 使用2個棧實現一個佇列資料結構佇列
- 資料結構之「棧」資料結構
- 資料結構之棧資料結構
- 資料結構(1):棧資料結構
- 資料結構之——棧資料結構
- javascript資料結構 -- 棧JavaScript資料結構
- 利用PHP實現常用的資料結構之棧(小白系列文章四)PHP資料結構
- JS 裡的資料結構 - 棧JS資料結構
- 詳細分析連結串列的資料結構的實現過程(Java 實現)資料結構Java
- 資料結構與演算法-資料結構(棧)資料結構演算法
- 資料結構-棧(通過陣列和單向連結串列實現)資料結構陣列
- 資料結構--LinkedList的實現資料結構
- 資料結構與演算法——常用高階資料結構及其Java實現資料結構演算法Java
- js資料結構之棧JS資料結構
- python資料結構之棧Python資料結構
- JavaScript資料結構02 - 棧JavaScript資料結構
- JavaScript資料結構之-棧JavaScript資料結構
- JavaScript資料結構之棧JavaScript資料結構
- js資料結構--棧(stack)JS資料結構
- 資料結構筆記——棧資料結構筆記
- 資料結構-佇列、棧資料結構佇列