亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

概念

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

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

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

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

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

StackLnterface接口類(lèi)

public interface StackLnterface0<T> {
    public interface StackInterface<T> {
        //在接口處聲明方法,在類(lèi)內(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(){//定義無(wú)參構(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> {    //通過(guò)重新實(shí)現(xiàn)多個(gè)接口
    protected LinkedNode<T> top;//聲明top指針

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

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

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

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

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

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

    }
}

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

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

相關(guān)文章

  • SpringBoot替換默認(rèn)的tomcat服務(wù)器的方法

    SpringBoot替換默認(rèn)的tomcat服務(wù)器的方法

    Tomcat是Apache基金下的一個(gè)輕量級(jí)的Servlet容器,支持Servlet和JSP,Tomcat具有Web服務(wù)器特有的功能,在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot默認(rèn)的容器技術(shù),本文給大家介紹了Spring?Boot如何替換默認(rèn)的tomcat服務(wù)器,需要的朋友可以參考下
    2024-08-08
  • springboot整合mybatis流程詳解

    springboot整合mybatis流程詳解

    這篇文章主要為大家詳細(xì)介紹了springboot整合mybatisplus的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-05-05
  • 詳解在Java的Struts2框架中配置Action的方法

    詳解在Java的Struts2框架中配置Action的方法

    這篇文章主要介紹了詳解在Java的Struts2框架中配置Action的方法,講解了包括struts.xml中的action配置及基于注解方式Action配置的兩個(gè)方式,需要的朋友可以參考下
    2016-03-03
  • 一道關(guān)于java異常處理的題目

    一道關(guān)于java異常處理的題目

    本文給大家分享一道關(guān)于java異常處理的題目,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • SpringBoot中Filter沒(méi)有生效原因及解決方案

    SpringBoot中Filter沒(méi)有生效原因及解決方案

    Servlet 三大組件 Servlet、Filter、Listener 在傳統(tǒng)項(xiàng)目中需要在 web.xml 中進(jìn)行相應(yīng)的配置,這篇文章主要介紹了SpringBoot中Filter沒(méi)有生效原因及解決方案,需要的朋友可以參考下
    2024-04-04
  • SpringMVC如何域?qū)ο蠊蚕頂?shù)據(jù)

    SpringMVC如何域?qū)ο蠊蚕頂?shù)據(jù)

    在Spring MVC中,可以使用域?qū)ο髞?lái)共享數(shù)據(jù),域?qū)ο笫且粋€(gè)Map類(lèi)型的對(duì)象,可以在請(qǐng)求處理方法之間共享數(shù)據(jù),本文給大家介紹SpringMVC 域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼,一起看看吧
    2023-09-09
  • Spring Cloud Feign 自定義配置(重試、攔截與錯(cuò)誤碼處理) 代碼實(shí)踐

    Spring Cloud Feign 自定義配置(重試、攔截與錯(cuò)誤碼處理) 代碼實(shí)踐

    這篇文章主要介紹了Spring Cloud Feign 自定義配置(重試、攔截與錯(cuò)誤碼處理) 實(shí)踐,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java substring方法實(shí)現(xiàn)原理解析

    Java substring方法實(shí)現(xiàn)原理解析

    這篇文章主要介紹了Java substring方法實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線(xiàn)圖)

    使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線(xiàn)圖)

    用Jfree實(shí)現(xiàn)條形柱狀圖表,java代碼實(shí)現(xiàn)??山?jīng)常用于報(bào)表的制作,代碼自動(dòng)生成后可以自由查看??梢宰杂膳渲脠D表的各個(gè)屬性,用來(lái)達(dá)到自己的要求和目的。本文給大家介紹使用java實(shí)現(xiàn)各種數(shù)據(jù)統(tǒng)計(jì)圖(柱形圖,餅圖,折線(xiàn)圖),需要的朋友可以參考下
    2015-10-10
  • SpringSecurity整合jwt權(quán)限認(rèn)證的全流程講解

    SpringSecurity整合jwt權(quán)限認(rèn)證的全流程講解

    這篇文章主要介紹了SpringSecurity整合jwt權(quán)限認(rèn)證的全流程講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論