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

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

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的惠城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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

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

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

前言,在寫本小節(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)為:

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

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é)果為:

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

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

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

本節(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ì)有所幫助。

文章名稱:Java基于鏈表實(shí)現(xiàn)棧的方法詳解
文章轉(zhuǎn)載:http://muchs.cn/article34/gcicpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作域名注冊(cè)、定制網(wǎng)站、云服務(wù)器、虛擬主機(jī)企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)