Java鏈表(Linked List)基本原理與實(shí)現(xiàn)方法入門示例
本文實(shí)例講述了Java鏈表(Linked List)基本原理與實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
在分析鏈表之前,我們先來(lái)對(duì)之前的動(dòng)態(tài)數(shù)組、棧、隊(duì)列總結(jié)一下:
(1)底層依托于靜態(tài)數(shù)組
(2)依靠resize解決固定容量問(wèn)題
(3)是一種假的的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)
1.什么是鏈表
可以從以下兩個(gè)部分來(lái)理解什么是鏈表
(1)最簡(jiǎn)單的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),是一種真正的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu);
(2)是一種數(shù)據(jù)的存儲(chǔ)方式,數(shù)據(jù)存儲(chǔ)在"節(jié)點(diǎn)"(Node)中
1.1結(jié)構(gòu)基本代碼:
class Node{ E e; Node next; }
1.2 圖示如下:
1.3 優(yōu)點(diǎn)、缺點(diǎn)
優(yōu)點(diǎn):真正的動(dòng)態(tài),不需要處理固定容量的問(wèn)題
缺點(diǎn):?jiǎn)适Я穗S機(jī)訪問(wèn)的能力,也就是不能通過(guò)索引進(jìn)行訪問(wèn),只能next來(lái)進(jìn)行查找
1.4數(shù)組與鏈表的對(duì)比
1.5 基本的鏈表節(jié)點(diǎn)結(jié)構(gòu)代碼:
新建一個(gè)package(LinkedList),然后新建一個(gè)類LinkedList,在該類中封裝一個(gè)私有的節(jié)點(diǎn),便于后續(xù)對(duì)于節(jié)點(diǎn)的使用。
package LinkedList; public class LinkedList<E> { //將Node節(jié)點(diǎn)設(shè)計(jì)成私有的類中類 private class Node<E> { public E e; public Node next; //兩個(gè)參數(shù)的構(gòu)造函數(shù) public Node(E e, Node next) { this.e = e; this.next = next; } //一個(gè)參數(shù)的構(gòu)造函數(shù) public Node(E e) { this.e = e; this.next = null; } //無(wú)參構(gòu)造函數(shù) public Node() { this(null, null); } @Override public String toString() { return e.toString(); } } }
在本小節(jié)中先是簡(jiǎn)單了解了一下理論知識(shí),然后把基本的鏈表節(jié)點(diǎn)結(jié)構(gòu)使用代碼來(lái)實(shí)現(xiàn),下一小節(jié)我們繼續(xù)來(lái)學(xué)習(xí)如何如何在鏈表中添加元素。
更多關(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)文章
Spring自動(dòng)掃描無(wú)法掃描jar包中bean的解決方法
在日常開發(fā)中往往會(huì)對(duì)公共的模塊打包發(fā)布,然后調(diào)用公共包的內(nèi)容。然而,最近對(duì)公司的公共模塊進(jìn)行整理發(fā)布后。spring卻無(wú)法掃描到相應(yīng)的bean,下面這篇文章主要給大家介紹了關(guān)于Spring自動(dòng)掃描時(shí)無(wú)法掃描jar包中bean的解決方法,需要的朋友可以參考下。2017-06-06使用Feign傳遞請(qǐng)求頭信息(Finchley版本)
這篇文章主要介紹了使用Feign傳遞請(qǐng)求頭信息(Finchley版本),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03玩轉(zhuǎn)SpringBoot中的那些連接池(小結(jié))
這篇文章主要介紹了玩轉(zhuǎn)SpringBoot中的那些連接池(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Security中的WebSecurityConfigurerAdapter詳解
這篇文章主要介紹了Security中的WebSecurityConfigurerAdapter詳解,今天我們要進(jìn)一步的的學(xué)習(xí)如何自定義配置Spring?Security,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07深入探討Java?SPI機(jī)制及其應(yīng)用場(chǎng)景
本文深入介紹了Java?SPI機(jī)制的原理和實(shí)現(xiàn)方式,以及在Java中如何使用SPI實(shí)現(xiàn)可插拔的組件化架構(gòu),包括示例代碼和應(yīng)用場(chǎng)景分析,幫助讀者更好地理解和應(yīng)用該機(jī)制2023-04-04Quartz定時(shí)任務(wù)管理方式(動(dòng)態(tài)添加、停止、恢復(fù)、刪除定時(shí)任務(wù))
這篇文章主要介紹了Quartz定時(shí)任務(wù)管理方式(動(dòng)態(tài)添加、停止、恢復(fù)、刪除定時(shí)任務(wù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12