Java基于鏈表實現(xiàn)棧的方法詳解
本文實例講述了Java基于鏈表實現(xiàn)棧的方法。分享給大家供大家參考,具體如下:
在上幾小節(jié)中我們實現(xiàn)了基本的鏈表結構,并在上一節(jié)的底部給出了有關鏈表的源碼,此處在貼一次吧,猛戳
在開始棧的實現(xiàn)之前,我們再來看看關于鏈表的只在頭部進行的增加、刪除、查找操作,時間復雜度均為O(1),基于鏈表的這幾個優(yōu)勢,我們在此基礎上實現(xiàn)棧。

前言,在寫本小節(jié)之前,我們已經(jīng)實現(xiàn)了一個基于靜態(tài)數(shù)組的棧,轉到查看。此處我們實現(xiàn)基于鏈表的棧。
1.鏈表類拷貝到Stack 包下:
在實現(xiàn)基于靜態(tài)數(shù)組的棧的時候,我們已經(jīng)新建了一個package,此時我們將已經(jīng)實現(xiàn)的鏈表類拷貝到該package下,目錄結構為:

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); }
結果為:

到此我們實現(xiàn)了底層是鏈表的棧。
關于本小節(jié),若您覺得還行、還過得去,記得給個推薦哦~,謝謝!!
本節(jié)源碼 https://github.com/FelixBin/dataStructure/blob/master/src/Stack/LinkedListStack.java
更多關于java算法相關內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章:
1. 從Python的字符串中剝離所有非數(shù)字字符(“。”除外)2. 解決spring @ControllerAdvice處理異常無法正確匹配自定義異常3. IntelliJ IDEA設置自動提示功能快捷鍵的方法4. IDEA一鍵完成格式化、去除無用引用、編譯的操作5. 詳解python 內(nèi)存優(yōu)化6. PHP程序員簡單的開展服務治理架構操作詳解(二)7. JavaScript創(chuàng)建表格的方法8. PHP如何開啟Opcache功能提升程序處理效率9. ASP.NET MVC使用jQuery ui的progressbar實現(xiàn)進度條10. SpringBoot整合Redis的步驟

網(wǎng)公網(wǎng)安備