欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基于鏈表實(shí)現(xiàn)棧的方法詳解

 更新時(shí)間:2020年03月17日 12:04:59   作者:WFaceBoss  
這篇文章主要介紹了Java基于鏈表實(shí)現(xiàn)棧的方法,結(jié)合實(shí)例形式詳細(xì)分析了Java基于鏈表實(shí)現(xiàn)棧的原理、操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java基于鏈表實(shí)現(xiàn)棧的方法。分享給大家供大家參考,具體如下:

在上幾小節(jié)中我們實(shí)現(xiàn)了基本的鏈表結(jié)構(gòu),并在上一節(jié)的底部給出了有關(guān)鏈表的源碼,此處在貼一次吧,猛戳

在開(kāi)始棧的實(shí)現(xiàn)之前,我們?cè)賮?lái)看看關(guān)于鏈表的只在頭部進(jìn)行的增加、刪除、查找操作,時(shí)間復(fù)雜度均為O(1),基于鏈表的這幾個(gè)優(yōu)勢(shì),我們?cè)诖嘶A(chǔ)上實(shí)現(xiàn)棧。

前言,在寫(xiě)本小節(jié)之前,我們已經(jīng)實(shí)現(xiàn)了一個(gè)基于靜態(tài)數(shù)組的棧,轉(zhuǎn)到查看。此處我們實(shí)現(xiàn)基于鏈表的棧。

1.鏈表類拷貝到Stack 包下:

在實(shí)現(xiàn)基于靜態(tài)數(shù)組的棧的時(shí)候,我們已經(jīng)新建了一個(gè)package,此時(shí)我們將已經(jīng)實(shí)現(xiàn)的鏈表類拷貝到該package下,目錄結(jié)構(gòu)為:

2.實(shí)現(xiàn)棧

新建一個(gè)LinkedListStack類,實(shí)現(xiàn)Stack接口,相關(guān)代碼如下:

Stack接口:

package Stack;

public interface Stack<E> {

  //棧中元素個(gè)數(shù)
  int getSize();

  //棧中元素個(gè)數(shù)是否為空
  boolean isEmpty();

  //進(jìn)棧
  void push(E e);

  //出棧
  E pop();

  //查看棧頂元素
  E peek();
}

個(gè)LinkedListStack類:

package Stack;

public class LinkedListStack<E> implements Stack<E> {
  private LinkedList<E> list;

  public LinkedListStack() {
    list = new LinkedList<E>();
  }

  //棧中元素個(gè)數(shù)
  @Override
  public int getSize() {
    return list.getSize();
  }

  //棧中是否為空
  @Override
  public boolean isEmpty() {
    return list.isEmpty();
  }

  //在棧中添加元素
  @Override
  public void push(E e) {
    list.addFirst(e);
  }

  //從棧中刪除第一個(gè)元素
  @Override
  public E pop() {
    return list.removeFirst();
  }

  //查看棧中第一個(gè)元素
  @Override
  public E peek() {
    return list.getFirst();
  }


  //主要是便于輸出給對(duì)象信息
  @Override
  public String toString() {
    StringBuilder res = new StringBuilder();
    res.append("Stack: top ");
    res.append(list);
    return res.toString();
  }

}

3.添加測(cè)試代碼

為了測(cè)試的簡(jiǎn)單,我們?cè)谝呀?jīng)實(shí)現(xiàn)了Stack接口的LinkedListStack類中建立以main()方法,main中代碼如下:

  //測(cè)試
  public static void main(String[] args) {
    LinkedListStack<Integer> stack = new LinkedListStack<Integer>();
    for (int i = 0; i < 5; i++) {
      stack.push(i);
      System.out.println(stack);
    }
    System.out.println("出棧一個(gè)元素:");
    stack.pop();
    System.out.println(stack);
  }

結(jié)果為:

 到此我們實(shí)現(xiàn)了底層是鏈表的棧。

關(guān)于本小節(jié),若您覺(jué)得還行、還過(guò)得去,記得給個(gè)推薦哦~,謝謝?。?/p>

本節(jié)源碼 https://github.com/FelixBin/dataStructure/blob/master/src/Stack/LinkedListStack.java

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • java中的方法重載知識(shí)點(diǎn)總結(jié)

    java中的方法重載知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了關(guān)于java中的方法重載知識(shí)點(diǎn)總結(jié),有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2020-02-02
  • 詳解Mybatis中的select方法

    詳解Mybatis中的select方法

    這篇文章主要介紹了Mybatis的select方法,通過(guò)代碼給大家詳細(xì)介紹了selectByExample方法,selectById方法,需要的朋友可以參考下
    2018-07-07
  • idea啟動(dòng)springboot報(bào)錯(cuò): 找不到或無(wú)法加載主類問(wèn)題

    idea啟動(dòng)springboot報(bào)錯(cuò): 找不到或無(wú)法加載主類問(wèn)題

    這篇文章主要介紹了idea啟動(dòng)springboot報(bào)錯(cuò): 找不到或無(wú)法加載主類問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • ruoyi-springboot框架新增模塊調(diào)接口報(bào)404的解決方案

    ruoyi-springboot框架新增模塊調(diào)接口報(bào)404的解決方案

    這篇文章主要介紹了ruoyi-springboot框架新增模塊調(diào)接口報(bào)404的解決方案,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Spring Boot如何實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)增刪啟停詳解

    Spring Boot如何實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)增刪啟停詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot如何實(shí)現(xiàn)定時(shí)任務(wù)的動(dòng)態(tài)增刪啟停的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring中存對(duì)象和取對(duì)象的方式詳解

    Spring中存對(duì)象和取對(duì)象的方式詳解

    這篇文章主要介紹了Spring中存對(duì)象和取對(duì)象的方式,Spring中更簡(jiǎn)單的存對(duì)象與取對(duì)象的方式是注解,注解實(shí)現(xiàn)有兩種方式:一在編譯的時(shí)候,把注解替換成相關(guān)代碼,并添加到我們?cè)瓉?lái)的代碼中,二攔截方法,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-08-08
  • 徹底搞懂Java多線程(三)

    徹底搞懂Java多線程(三)

    這篇文章主要給大家介紹了關(guān)于Java面試題之多線程和高并發(fā)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • SpringBoot自定義工具類實(shí)現(xiàn)Excel數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)

    SpringBoot自定義工具類實(shí)現(xiàn)Excel數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了如何使用EasyExcel讀取Excel內(nèi)數(shù)據(jù)并轉(zhuǎn)換為csv格式數(shù)據(jù),然后實(shí)現(xiàn)字符串分割,分割出屬性名和屬性值建表插入MySQL數(shù)據(jù)庫(kù)中,感興趣的可以了解下
    2024-03-03
  • Java設(shè)計(jì)模式 模板模式及應(yīng)用場(chǎng)景解析

    Java設(shè)計(jì)模式 模板模式及應(yīng)用場(chǎng)景解析

    這篇文章主要介紹了Java設(shè)計(jì)模式 模板模式及應(yīng)用場(chǎng)景解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 基于hibernate框架在eclipse下的配置方法(必看篇)

    基于hibernate框架在eclipse下的配置方法(必看篇)

    下面小編就為大家?guī)?lái)一篇基于hibernate框架在eclipse下的配置方法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09

最新評(píng)論