當前位置:網站首頁>棧的初理解1

棧的初理解1

2022-01-27 03:51:05 w-ib

什麼是棧(stack)?

棧其實就是一種數據結構。它是一種運算受限的線性錶。限定僅在錶尾進行插入和删除操作的線性錶。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧删除元素又稱作出棧或退棧,它是把棧頂元素删除掉,使其相鄰的元素成為新的棧頂元素


棧的特點

先進後出


 棧的圖片

棧


棧到底怎麼用?用在哪裏?

接下來就用一個小題來理解

一個棧的入棧序列是 a,b,c,d,e,則棧的不可能的輸出序列是( ) 
a) edcba
b) decba
c) dceab
d) abcde

根據棧的特點先進後出可知,a選項,符合棧的特點先進後出,a到e依次入棧在出棧正好符合選項,對於b和d選項,有些人可能會認為必須全部入棧後才能出棧,其實不然,可以入棧在直接出棧,這樣b d選項就顯然易見是對的,而對於c選項,a不可能在b的前面拿出來,故選c選項。


 接下來向大家演示Stack的源碼

 

class Stack<E> extends Vector<E> {
    /**
     * Creates an empty Stack.
     */
    public Stack() {
    }

通過idea查看stack的源碼可以得知Stack的方法並不多,並且Stack也繼承了一個類

public class Test222 {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(12);
        stack.push(23);
        stack.push(32);
        //將三個數字入棧
        System.out.println(stack.pop());//查看棧頂元素並删除
        System.out.println(stack.peek());//查看棧頂元素
        System.out.println(stack.isEmpty());//棧中是否還有元素
    }
}

上面代碼段介紹了Stack方法的使用 

 

 未完待續..

 

版權聲明
本文為[w-ib]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201270351045604.html

隨機推薦