天天看點

Stack 的操作|學習筆記

開發者學堂課程【Java進階程式設計:Stack 的操作】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/20/detail/422

Stack 的操作

内容簡介:

1、Stack類、棧的定義

2、棧的基本操作

3、棧的入棧和出棧的順序規律

4、棧的邏輯結構

5、具體内容

1、Stack類、棧的定義:

棧是一種先進後出的資料結構。例如文本編輯器上都有的撤銷功能,每次使用時,最後一次的編輯操作永遠是最早、最先撤銷。這個功能就是利用棧來實作,棧的基本操作形式如下:先設定有一個棧的空間,将操作資料輸入棧裡面,棧在整個過程之中,它分為兩個概念,一個叫做棧頂,是棧的頭部,一個叫做是棧底,是棧的尾部。

基本上當資料對象進行儲存的時候,新的資料會直接在棧底儲存。

輸入的資料一儲存到棧底後再輸入資料二,資料二将會在資料一的上面,依次類推,

所有的操作資料,最終結果都是在最上儲存,而後,如果要進行出棧的操作,出棧過程中,最後儲存的資料最先出去。

例如在使用的浏覽器時,最後一次操作總是最先回退。

浏覽器中所有處理回退的過程,嚴格來講都是棧的支援。

Stack 的操作|學習筆記

在 Java 程式裡面使用 Stack 描述我們棧的操作。

這個類的定義如下:

public class Stack

extends Vector

Stack 是 Vector 的一個子類,但是它使用的并不是 Vector 類之中所提供的方法,而是采用如下的兩個方法:

·入棧:

public E push(E item);

·出棧:

public E pop()

範例:實作棧的操作

操作的代碼如下

1 package cn. mldn. demo;

2

3 import java.util.stack;

4

5 public class JavaAPIDemo {

6     public static void main(String[ ] args) throws Exception {

7         Stack all = new Stack();

8         all. push("A") ;

9         all.push("B") ;

10        all.push("C") ;

11        System. out. println(all.pop());

12        System. out . println(all. pop());

13        System. out . println(all. pop());

14        System. out . println(all.pop()); //

無資料、EmptyStackException

15      }

16 }

C

B

A

Exception in thread "main" java . util .EmptyStackException

at java. base/java . util . Stack . peek(Stack . java:102)

at java. base/java . util . Stack.pop(Stack.java:84)

at cn. mldn. demo .JavaAPIDemo . main(JavaAPIDemo. java:14 )

通過此時的操作可以發現,所有資料儲存之後,将按照倒序的形式進行彈出,如果棧已經空了,則會抛出空棧異常。

在開發過程中,這是棧的一個基本使用。

要了解棧的繼承結構,先得找到 Vector 類的繼承結構,在整個的操作裡面,Stack 是一個操作子類,繼承自 Vector 這個父類。

Stack 的操作|學習筆記

雖然棧這個結構,在現在開發中所寫的情況比較少,但是棧這個資料結構依然是個重要的結構,是開發之中必不可少的操作。