Java鏈表(Linked List)基本原理與實現(xiàn)方法入門示例
本文實例講述了Java鏈表(Linked List)基本原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:
在分析鏈表之前,我們先來對之前的動態(tài)數(shù)組、棧、隊列總結(jié)一下:
(1)底層依托于靜態(tài)數(shù)組
(2)依靠resize解決固定容量問題
(3)是一種假的的動態(tài)數(shù)據(jù)結(jié)構(gòu)
1.什么是鏈表
可以從以下兩個部分來理解什么是鏈表
(1)最簡單的動態(tài)數(shù)據(jù)結(jié)構(gòu),是一種真正的動態(tài)數(shù)據(jù)結(jié)構(gòu);
(2)是一種數(shù)據(jù)的存儲方式,數(shù)據(jù)存儲在"節(jié)點"(Node)中
1.1結(jié)構(gòu)基本代碼:
class Node{ E e; Node next; }
1.2 圖示如下:
1.3 優(yōu)點、缺點
優(yōu)點:真正的動態(tài),不需要處理固定容量的問題
缺點:喪失了隨機訪問的能力,也就是不能通過索引進(jìn)行訪問,只能next來進(jìn)行查找
1.4數(shù)組與鏈表的對比
1.5 基本的鏈表節(jié)點結(jié)構(gòu)代碼:
新建一個package(LinkedList),然后新建一個類LinkedList,在該類中封裝一個私有的節(jié)點,便于后續(xù)對于節(jié)點的使用。
package LinkedList; public class LinkedList<E> { //將Node節(jié)點設(shè)計成私有的類中類 private class Node<E> { public E e; public Node next; //兩個參數(shù)的構(gòu)造函數(shù) public Node(E e, Node next) { this.e = e; this.next = next; } //一個參數(shù)的構(gòu)造函數(shù) public Node(E e) { this.e = e; this.next = null; } //無參構(gòu)造函數(shù) public Node() { this(null, null); } @Override public String toString() { return e.toString(); } } }
在本小節(jié)中先是簡單了解了一下理論知識,然后把基本的鏈表節(jié)點結(jié)構(gòu)使用代碼來實現(xiàn),下一小節(jié)我們繼續(xù)來學(xué)習(xí)如何如何在鏈表中添加元素。
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
玩轉(zhuǎn)SpringBoot中的那些連接池(小結(jié))
這篇文章主要介紹了玩轉(zhuǎn)SpringBoot中的那些連接池(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Security中的WebSecurityConfigurerAdapter詳解
這篇文章主要介紹了Security中的WebSecurityConfigurerAdapter詳解,今天我們要進(jìn)一步的的學(xué)習(xí)如何自定義配置Spring?Security,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07Quartz定時任務(wù)管理方式(動態(tài)添加、停止、恢復(fù)、刪除定時任務(wù))
這篇文章主要介紹了Quartz定時任務(wù)管理方式(動態(tài)添加、停止、恢復(fù)、刪除定時任務(wù)),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12