LinkedList的模擬實現(雙向鏈表Java)

一:結構

LinkedList的底層是雙向鏈表結構(鏈表后面介紹),由于鏈表沒有將元素存儲在連續的空間中,元素存儲在單獨的節點中,然后通過引用將節點連接起來了,因此在在任意位置插入或者刪除元素時,不需要搬移元素,效率比較高。

1:LinkedList實現了List接口
2:LinkedList的底層使用了雙向鏈表
3:? LinkedList沒有實現RandomAccess接口,因此LinkedList不支持隨機訪問

4:? LinkedList的任意位置插入和刪除元素時效率比較高,時間復雜度為O(1)
5:? LinkedList比較適合任意位置插入的場景

二:實現

2.1:addFirst(頭插)

首先生成node對象,此時head節點的prev前一個節點為null,node的下一個節點為null,所以將此時head節點的prev指向node節點,將node節點的next節點指向head節點,再將head節點向前移,指向node,此時node節點就是頭節點了。

2.2:addlast(尾插)

在鏈表最后插入node對象,此時last的next節點為null,在尾部插入了一個node,所以last.next=node,然后將node節點的prev節點指向last,在將last后置last=node,此時node節點就是最后一個節點。

2.3:addIndex(插入)

與單向鏈表不同,此時findIndex方法的返回值不需要返回要插入位置的前一個節點,而是直接返回要插入位置的節點。然后通過prev與next進行變換即可。

2.4: remove(刪除指定節點)

2,5:removeAllKey(刪除所有key)?

與單一刪除相同,只不過remove刪除一個后最后就return,只要不返回然cur繼續遍歷重復執行上述代碼,直到cur==null,全部刪除完畢。

三:6. ArrayList和LinkedList的區別?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915502.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915502.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915502.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shopify 知識點

📜 一、Liquid模板語言(核心基礎)語法結構 ? 輸出變量:{{ product.title }} 動態顯示商品標題。 ? 邏輯控制:{% if product.available %}…{% endif %} 條件渲染。 ? 循環遍歷:{% for item in collectio…

Web LLM 安全剖析:以間接提示注入為核心的攻擊案例與防御體系

文章目錄1 間接提示注入2 訓練數據中毒為什么會出現這種漏洞?3 泄露敏感訓練數據攻擊者如何通過提示注入獲取敏感數據?為什么會出現這種泄露?4 漏洞案例間接提示注入利用 LLM 中的不安全輸出處理5 防御 LLM 攻擊把LLM能訪問的API當成“公開接…

ElasticSearch:不停機更新索引類型(未驗證)

文章目錄**一、前期準備****1. 集群健康檢查****2. 備份數據****3. 監控系統準備****二、創建新索引并配置****1. 設計新索引映射****2. 創建讀寫別名****三、全量數據遷移****1. 執行初始 Reindex****2. 監控 Reindex 進度****四、增量數據同步****1. 方案選擇****五、雙寫切換…

python學智能算法(二十七)|SVM-拉格朗日函數求解上

【1】引言 前序學習進程中,我們已經掌握了支持向量機算法中,為尋找最佳分割超平面,如何用向量表達超平面方程,如何為超平面方程建立拉格朗日函數。 本篇文章的學習目標是:求解SVM拉格朗日函數。 【2】求解方法 【2.…

mac安裝node的步驟

適用于macOS 10.15及以上版本。 前提條件 macOS版本:確保系統為macOS 10.15(Catalina)或更高版本。可在“蘋果菜單 > 關于本機”查看。管理員權限:部分安裝可能需要管理員權限。網絡連接:需要聯網下載安裝包或工具…

【LeetCode數據結構】棧的應用——有效的括號問題詳解

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為…

多尺度卷積模型:Inception塊

在GoogLeNet中,基本的卷積塊被稱為Inception塊(Inception block)。 使用窗口大小為11,33,551\times1,3\times3,5\times511,33,55的卷積層,從不同空間大小中提…

Android 默認圖庫播放視頻沒有自動循環功能,如何添加

Android 默認圖庫播放視頻沒有自動循環功能, 如何添加 按如下方式添加 開發云 - 一站式云服務平臺 .../apps/Gallery2/res/values-zh-rCN/strings.xml | 3 ++ packages/apps/Gallery2/res/values/strings.xml | 3 ++ .../com/android/gallery3d/app/MovieActivity…

7月21日總結

命令執行 RCE RCE(remote code execute):遠程命令執行或者代碼執行,我們平時說的rce,比如thinkPHP的 rce漏洞,即算代碼注入漏洞,也算rce漏洞,因為滲透的最終情況可以實現執行命令或…

Linux——自制shell命令行解釋器

文章目錄1.打印命令提示符2.獲取用戶輸入指令3.重定向分析4.命令行參數表,環境變量表,初始化5.命令解析6.命令執行6.1.創建子進程6.2 處理內建命令6.3 文件重定向7.源碼前言 在實現shell的時候我們先創建自己myshell目錄,在目錄中創建myshell.cc文件,因…

Boost庫智能指針boost::shared_ptr詳解和常用場景使用錯誤示例以及解決方法

1、Boost智能指針 —— boost::shared_ptr 詳解一、什么是 boost::shared_ptr boost::shared_ptr 是 Boost 庫中實現的一個智能指針模板類,用于管理動態分配的對象生命周期,采用引用計數機制。多個 shared_ptr 實例可以共享同一個對象的所有權&#xff0…

科學分析指南,如何快速找到并清理磁盤的無用文件

隨著時間的推移,系統中會積累大量的臨時文件、緩存文件、不再需要的安裝包或其他大型文件。磁盤清理可以刪除這些不必要的文件,從而釋放寶貴的磁盤空間。它無需安裝,插上 U 盤就能直接使用。只需勾選需要掃描的磁盤,點擊“開始分析…

Laravel 系統版本查看及artisan管理員密碼找回方法針對各個版本通用方法及原理-優雅草卓伊凡

Laravel 系統版本查看及artisan管理員密碼找回方法針對各個版本通用方法及原理-優雅草卓伊凡一、查看 Laravel 版本的方法優雅草蜻蜓T會議系統專業版 最近又有客戶要了,但是發現 密碼不對 管理員賬戶密碼不對,卓伊凡必須處理下,這里順便講解密…

針對大規模語言模型的上下文工程技術調研與總結(翻譯并摘要)

針對大規模語言模型的上下文工程技術調研與總結聲明摘要部分翻譯介紹部分翻譯相關工作部分翻譯并摘要為什么使用上下文工程(翻譯并摘要)基礎組件(翻譯并摘要)RAG(翻譯并摘要簡單介紹一下個人認為比較好的技術&#xff…

QT配置Quazip外部庫

1.下載QuaZip源碼網址:https://sourceforge.net/projects/quazip/  注:下載->解壓->打開.pro文件2.編譯QuaZip源碼2.1配置zlib注:QuaZip需zlib的支持,我們需要引用zlib找到本地安裝Qt目錄下zlib目錄:注&#x…

從C++開始的編程生活(4)——類的定義、訪問限定符、類域、類的實例化和this指針

前言 本系列文章承接C語言的學習,需要有C語言的基礎才能學會哦~ 第3篇主要講的是有關于C的類的定義、訪問限定符、類域、類的實例化和this指針。 C才起步,都很簡單呢! 目錄 前言 類 基本語法 訪問限定符 基本語法 類域 類的實例化 內…

AD域控制器虛擬化的安全加固最佳實踐

以下是AD域控制器虛擬化安全加固的7項核心實踐,結合最新Windows Server 2022特性與虛擬化環境需求:基礎架構強化? 采用靜態IP分配并確保所有域控節點DNS指向主DC(如192.168.1.10)? 虛擬機模板需預配置林/域功能級別為Windows Se…

java解析nc氣象數據

1.1pom.xml<dependency><groupId>edu.ucar</groupId><artifactId>netcdfAll</artifactId><version>5.4.1</version></dependency>1.2 netcdf使用/** param type 0 ,1, 2 wind 1 or 2 其他 0 .* return Map* */public Map i…

STC8H8K64U SKDIP28芯片頻率占空比PWM波形

/****PWM輸出任意周期占空比波形*******/ #include "STC8H.h" // #include "intrins.h" // #define uchar unsigned char // #define uint unsig…

【RK3576】【Android14】USB開發調試

獲取更多相關的【RK3576】【Android14】驅動開發&#xff0c;可收藏系列博文&#xff0c;持續更新中&#xff1a; 【RK3576】Android 14 驅動開發實戰指南 硬件接口 RK3576支持兩個USB3.0控制器 驅動開發 dts配置 在“Android14/kernel-6.1/arch/arm64/boot/dts/rockchip/rk…