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

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

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

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

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

在開始棧的實現(xiàn)之前,我們再來看看關于鏈表的只在頭部進行的增加、刪除、查找操作,時間復雜度均為O(1),基于鏈表的這幾個優(yōu)勢,我們在此基礎上實現(xiàn)棧。

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

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

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

2.實現(xiàn)棧

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

Stack接口:

package Stack;

public interface Stack<E> {

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

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

  //進棧
  void push(E e);

  //出棧
  E pop();

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

個LinkedListStack類:

package Stack;

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

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

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

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

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

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

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


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

}

3.添加測試代碼

為了測試的簡單,我們在已經(jīng)實現(xiàn)了Stack接口的LinkedListStack類中建立以main()方法,main中代碼如下:

  //測試
  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("出棧一個元素:");
    stack.pop();
    System.out.println(stack);
  }

結(jié)果為:

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

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

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

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

希望本文所述對大家java程序設計有所幫助。

相關文章

  • java虛擬機是做什么用的

    java虛擬機是做什么用的

    在本篇文章里小編給大家整理的是一篇關于java虛擬機作用等相關內(nèi)容,對此有興趣的朋友們可以學習參考下。
    2021-01-01
  • IntelliJ IDEA 設置代碼提示或自動補全的快捷鍵功能

    IntelliJ IDEA 設置代碼提示或自動補全的快捷鍵功能

    這篇文章主要介紹了IntelliJ IDEA 設置代碼提示或自動補全的快捷鍵功能,需要的朋友可以參考下
    2018-03-03
  • Eclipse新建web項目流程圖解

    Eclipse新建web項目流程圖解

    這篇文章主要介紹了Eclipse新建web項目流程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • MyBatis-Plus中使用EntityWrappe進行列表數(shù)據(jù)倒序設置方式

    MyBatis-Plus中使用EntityWrappe進行列表數(shù)據(jù)倒序設置方式

    這篇文章主要介紹了MyBatis-Plus中使用EntityWrappe進行列表數(shù)據(jù)倒序設置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • httpclient ConnectionHolder連接池連接保持源碼解析

    httpclient ConnectionHolder連接池連接保持源碼解析

    這篇文章主要為大家介紹了httpclient ConnectionHolder連接池連接保持源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • java實現(xiàn)excel和txt文件互轉(zhuǎn)

    java實現(xiàn)excel和txt文件互轉(zhuǎn)

    本篇文章主要介紹了java實現(xiàn)excel和txt文件互轉(zhuǎn)的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • SpringBoot @value注解動態(tài)刷新問題小結(jié)

    SpringBoot @value注解動態(tài)刷新問題小結(jié)

    @Value注解 所對應的數(shù)據(jù)源來自項目的 Environment 中,我們可以將數(shù)據(jù)庫或其他文件中的數(shù)據(jù),加載到項目的 Environment 中,然后 @Value注解 就可以動態(tài)獲取到配置信息了,這篇文章主要介紹了SpringBoot @value注解動態(tài)刷新,需要的朋友可以參考下
    2023-09-09
  • JAVAEE Filter 過濾器設置是否緩存實例詳解

    JAVAEE Filter 過濾器設置是否緩存實例詳解

    網(wǎng)頁中,每次的客戶端訪問服務器,有部分不用重復請求的,這樣可以減輕服務器的工作量。那么如何設置客戶端是否都緩存呢?接下來通過本文給大家介紹JAVAEE Filter 過濾器設置是否緩存的實例,感興趣的朋友一起學習吧
    2016-05-05
  • IDEA 項目創(chuàng)建Mapper的xml文件的方法

    IDEA 項目創(chuàng)建Mapper的xml文件的方法

    這篇文章主要介紹了IDEA 項目創(chuàng)建Mapper的xml文件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 詳解Java泛型及其應用

    詳解Java泛型及其應用

    這篇文章主要介紹了Java泛型及其應用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04

最新評論

山东| 渑池县| 黄冈市| 永和县| 广德县| 类乌齐县| 泰州市| 福州市| 涿鹿县| 屏东县| 西宁市| 永川市| 明溪县| 汶川县| 陈巴尔虎旗| 舞钢市| 张掖市| 开平市| 永靖县| 抚顺县| 胶南市| 高陵县| 邹城市| 刚察县| 通渭县| 大冶市| 建宁县| 宁波市| 民县| 紫金县| 南华县| 特克斯县| 朝阳市| 文成县| 新郑市| 襄垣县| 彰化县| 报价| 秦安县| 英山县| 宝坻区|