1.概念
堆疊是一種后進先出(LIFO)的線性存盤結構,
2.關于堆疊的相關名詞
- 堆疊頂:元素的插入和洗掉都是在這端操作的,
- 堆疊底:顧名思義,堆疊頂的另一端,
- 入堆疊(壓堆疊):添加資料,
- 出堆疊(彈堆疊):洗掉資料(取出資料),
- 空堆疊: 堆疊中沒有資料,
3.作業原理
堆疊是使用一個指標指向堆疊頂,從而來對堆疊進行添加、洗掉等操作,來舉個生活中的栗子就懂了,我們日常生活離不開紙巾,如果想要抽紙包裝袋中最后一張紙,你必須先把之前的紙都抽掉,當然你也把紙包裝袋底部捅破拿到最后一張,現在我們只考慮正常的抽法,在抽的程序中相當于出堆疊,那最初在工廠中包裝紙巾的時候就是在入堆疊,符合后進先出(先進后出)的特點,當紙巾抽完就不能抽了,這時候可以稱為空堆疊,生活中也有很多關于堆疊的栗子,舉哪個理解能就可以了,
4.Java中使用堆疊
在java中庫函式給我們提供了兩個類來使用堆疊,一個是Stack,使用陣列來做底層,一個是LinkedList,使用鏈表來做底層
- 下圖是Stack的方法解釋

- 下圖是LinkedList實作堆疊的方法,你可以選擇操作頭部,或者操作尾部來實作堆疊
- 有一套是標準的

- 也提供了使用里面的方法來組成堆疊功能

- 有一套是標準的
5.代碼
import java.util.LinkedList; import java.util.Stack; public class TestStack { public static void test1() { Stack<Integer> stack = new Stack<Integer>(); // 入堆疊 stack.push(1); stack.push(2); stack.push(3); stack.push(4); while(!stack.isEmpty()){ // 出堆疊 System.out.print(stack.pop() + " "); } System.out.println(); } public static void test2() { // LinkedList是雙向鏈表,即有兩個指標,一個指向頭,一個指向尾 LinkedList<Integer> stack = new LinkedList<Integer>(); // 入堆疊 stack.push(1); stack.push(2); stack.push(3); stack.push(4); while(!stack.isEmpty()){ // 出堆疊 System.out.print(stack.pop() + " "); } System.out.println(); } public static void main(String[] args) { System.out.println("Stack:"); test1(); System.out.println("LinkedList:"); test2(); } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/110930.html
標籤:其他
下一篇:佇列
