最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java中LinkedStack鏈棧的實(shí)現(xiàn)

 更新時間:2022年11月14日 17:06:17   作者:第一天  
這篇文章主要為大家詳細(xì)介紹了Java中LinkedStack鏈棧的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下

概念

:又稱為堆棧.是限制在表的一端進(jìn)行插入和刪除的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除操作,不允許在其他任何位置進(jìn)行插入、查找、刪除等操作。

表中進(jìn)行插入、刪除操作的一端稱為棧頂.棧頂保存的元素秘為棧項(xiàng)元素。想對的,表的另一端稱為棧底。當(dāng)棧中沒有數(shù)據(jù)元素時,稱為空棧;向一個棧中插入元素又稱為進(jìn)棧或入棧;從一個棧中刪除元素又稱為出?;蛲藯!?/p>

由于棧的插入和刪除操作都僅在棧頂進(jìn)行,后進(jìn)棧的元素必定先出棧,所以又把堆棧稱為后進(jìn)先出表。

鏈棧--用鏈?zhǔn)酱鎯Y(jié)構(gòu)實(shí)現(xiàn)的棧稱為鏈棧;其結(jié)構(gòu)特點(diǎn)與單鏈表的結(jié)構(gòu)相同,鏈?zhǔn)蕉褩R彩怯梢粋€個結(jié)點(diǎn)組成的,每個結(jié)點(diǎn)由兩個域組成,一個是存放數(shù)據(jù)元素的數(shù)據(jù)元素域,另一個是存放指向向下一個節(jié)點(diǎn)的對象的引用域;因?yàn)闂V兄饕窃跅m斶M(jìn)行操作,所以在鏈表的頭部做棧頂是最方便的,而且不用添加頭結(jié)點(diǎn)。

具體內(nèi)容的解釋都寫在注釋里了

StackLnterface接口類

public interface StackLnterface0<T> {
    public interface StackInterface<T> {
        //在接口處聲明方法,在類內(nèi)進(jìn)行實(shí)現(xiàn)T
        public void push(T element);//用于表達(dá)進(jìn)棧的方法
        public  T pop();//用于表達(dá)出棧的方法
        public boolean isEmpty();//用于判斷棧是否為空的方法的方法
    }
}

LinkedStack接口實(shí)現(xiàn)

class LinkedNode<T>{
    private T data;//聲明data
    private LinkedNode<T> next;//聲明next
    public LinkedNode(T i){//定義有參構(gòu)造函數(shù)
        data = i;
        next = null;
    }
    public LinkedNode(){//定義無參構(gòu)造函數(shù)
        data = null;
        next = null;
    }
    //data和next 的getter and setter
    public T getData(){
        return data;
    }
    public void setData(T element){
        data = element;
    }
    public LinkedNode<T>getNext(){
        return next;
    }
    public void setNext(LinkedNode<T>successor){
        next = successor;
    }
}

public class LinkedStack<T>  implements StackLnterface0<T> {    //通過重新實(shí)現(xiàn)多個接口
    protected LinkedNode<T> top;//聲明top指針

    public LinkedStack() {
        //棧的初始化,初始化一個空棧
        LinkedNode<T> first = new LinkedNode<T>();//定義一個空節(jié)點(diǎn)
        top = first;//把空節(jié)點(diǎn)放在最開頭
    }

    public void push(T element) {//用于表達(dá)進(jìn)棧的方法
        LinkedNode<T> s = new LinkedNode<T>(element);//用s來代表要輸入的元素
        s.setNext(top);//讓新進(jìn)入的元素指向它的上一位元素
        top = s;//top指針指到s上面
    }

    public T pop() {//用于表達(dá)出棧的方法
        if (isEmpty())//先判斷是否空棧,如果是空棧就拋出異常
            throw new RuntimeException("棧空");
        T top_node = top.getData();//定義一個記錄top指針指向元素的變量
        top = top.getNext();//出棧后top指針指向下一個要出棧位置的元素
        return top_node;//返回出棧時讀取的元素
    }

    public boolean isEmpty() {//用于判斷棧是否為空的方法的方法
        if (top == null)//如果top指針指向null的話
            return true;//說明???
        else
            return false;//否則就是棧非空
    }

    public T getTop(){//用于表達(dá)展示當(dāng)前的指針指向元素的方法
        if(isEmpty())//先判斷是否空棧,如果是空棧就拋出異常
            throw new RuntimeException("棧空");
        T top_node = top.getData();//定義一個記錄top指針指向元素的變量
        return top_node;//返回top指向的元素
    }

    public void getLz() {//用于展示當(dāng)前鏈棧的方法
        LinkedNode<T> a = top;//定義此時的a代替top指針
        while (a.getNext()!=null){//當(dāng)a的引用域不為null時
            System.out.print(a.getData()+"\n");//輸出此時a的數(shù)據(jù)域
            a = a.getNext();//往下循環(huán)a讓元素一個一個輪流展示
        }
    }
}
 class ShiJian1{//實(shí)踐類
    public static void main(String[] args){
       LinkedStack<Integer> linked = new LinkedStack<Integer>();//實(shí)現(xiàn)T范型為int類型
        //輸入要加入鏈棧的元素
       linked.push(6);
       linked.push(7);
       linked.push(8);
       linked.push(9);
       linked.getLz();
       //進(jìn)行出棧操作
       System.out.println("進(jìn)行一次出棧操作,得到元素"+linked.pop());
       System.out.println("再進(jìn)行一次出棧操作,得到元素"+linked.pop());
       linked.getLz();
       System.out.println("此時的top指針指向元素為"+linked.getTop());

    }
}

運(yùn)行結(jié)果

到此這篇關(guān)于詳解Java中LinkedStack鏈棧的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java LinkedStack鏈棧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java貪心算法初學(xué)感悟圖解及示例分享

    java貪心算法初學(xué)感悟圖解及示例分享

    這篇文章主要為大家介紹了本人在初學(xué)java貪心算法的感悟,并通過圖解及示例代碼的方式分享給大家,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • redis統(tǒng)計APP在線人數(shù)的實(shí)例

    redis統(tǒng)計APP在線人數(shù)的實(shí)例

    這篇文章主要介紹了redis統(tǒng)計APP在線人數(shù)的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java中的SecretKeyFactory類使用詳解

    Java中的SecretKeyFactory類使用詳解

    這篇文章主要介紹了Java中的SecretKeyFactory類使用詳解,SecretKeyFactory表示私密密鑰的工廠,密鑰工廠用來將密鑰(類型 Key 的不透明加密密鑰)轉(zhuǎn)換為密鑰規(guī)范(底層密鑰材料的透明表示形式),需要的朋友可以參考下
    2024-01-01
  • Java中的集合工具類Collections詳解

    Java中的集合工具類Collections詳解

    這篇文章主要介紹了Java中的集合工具類Collections詳解,java.utils.Collections是集合工具類,用來對集合進(jìn)行操作,不是Collection集合的根接口,這個要區(qū)分開來,需要的朋友可以參考下
    2024-01-01
  • SpringBoot詳細(xì)講解yaml配置文件的用法

    SpringBoot詳細(xì)講解yaml配置文件的用法

    這篇文章主要介紹了SpringBoot中的yaml配置文件問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • java檢查服務(wù)器的連通兩種方法代碼分享

    java檢查服務(wù)器的連通兩種方法代碼分享

    這篇文章主要介紹了java檢查服務(wù)器的連通兩種方法代碼分享,涉及ping的介紹以及檢查服務(wù)器連通的兩種方法代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • IDEA如何一鍵部署SpringBoot項(xiàng)目到服務(wù)器

    IDEA如何一鍵部署SpringBoot項(xiàng)目到服務(wù)器

    文章介紹了如何在IDEA中部署SpringBoot項(xiàng)目到服務(wù)器,使用AlibabaCloudToolkit插件進(jìn)行配置部署,步驟包括設(shè)置服務(wù)名稱、選擇文件上傳類型、選擇jar文件、添加服務(wù)器信息、輸入上傳路徑、選擇上傳后執(zhí)行的腳本以及執(zhí)行前的操作命令
    2024-12-12
  • 解決SpringBoot ClassPathResource的大坑(FileNotFoundException)

    解決SpringBoot ClassPathResource的大坑(FileNotFoundException)

    這篇文章主要介紹了解決SpringBoot ClassPathResource的大坑(FileNotFoundException),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中的序列化機(jī)制詳細(xì)解讀

    Java中的序列化機(jī)制詳細(xì)解讀

    這篇文章主要介紹了Java中的序列化機(jī)制詳細(xì)解讀,序列化:將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)臄?shù)據(jù)形式(比如二進(jìn)制)的過程,反序列化:與序列化相對,把序列化轉(zhuǎn)換成的可以存儲或傳輸?shù)臄?shù)據(jù)形式轉(zhuǎn)化為對象的狀態(tài)信息的過程,需要的朋友可以參考下
    2023-11-11
  • Java基礎(chǔ)教程之字符流文件讀寫

    Java基礎(chǔ)教程之字符流文件讀寫

    這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之字符流文件讀寫的相關(guān)資料,,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07

最新評論

黑水县| 曲水县| 酒泉市| 昌吉市| 绵竹市| 麻栗坡县| 军事| 乌鲁木齐市| 云霄县| 秭归县| 荆门市| 宜都市| 敦化市| 老河口市| 烟台市| 甘孜| 长沙县| 根河市| 建德市| 枣强县| 南涧| 淅川县| 阳城县| 克什克腾旗| 濉溪县| 苗栗县| 霸州市| 桃源县| 和静县| 如东县| 沙坪坝区| 湖州市| 广平县| 泉州市| 广汉市| 临潭县| 万年县| 琼结县| 潞城市| 沛县| 安阳县|