成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

瀏覽:155日期:2022-09-04 13:14:36

本文實例講述了Java鏈表中元素刪除的實現方法。分享給大家供大家參考,具體如下:

該部分與上一節是息息相關的,關于如何在鏈表中刪除元素,我們一步一步來分析:

一、圖示刪除邏輯

假設我們需要在鏈表中刪除索引為2位置的元素,此時鏈表結構為:

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

若要刪除索引為2位置的元素,需要獲取索引為2位置的元素之前的前置節點(此時為索引為1的位置的元素),因此我們需要設計一個變量prev來記錄前置節點。

1.初始時變量prev指向虛擬頭結點dummyHead:

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

2.尋找到前置節點位置,(對于該例子前置節點為索引為1的位置的元素)。

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

則此時prev記錄的next即為需要刪除的節點,記為delNode變量。

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

3.刪除操作

第一步:將prev的next指向delNode的next,如圖:

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

代碼為:

prev.next=delNode.next;

第二步:為了java能夠回收這個被刪除的空間,我們手動讓需要被刪除的節點從鏈表中脫離開來,也就是delNode的next變為null。

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

代碼為:

delNode.next=null;二、代碼實現刪除邏輯

2.1 從鏈表刪除第index(0-based)個位置的元素 ,返回刪除的元素

首先,初始化當前前置節點指向虛擬頭結點,然后遍歷尋找到需要被刪除節點的前置節點,最后執行刪除邏輯。

//從鏈表刪除第index(0-based)個位置的元素 ,返回刪除的元素 (實際不常用,練習用) public E remove(int index) { if (index < 0 || index >= size) { throw new IllegalArgumentException('remove failed,Illegal index'); } //獲取虛擬頭節點 Node<E> prev = dummyHead; for (int i = 0; i < index; i++) { //獲取到刪除元素之前節點 prev = prev.next; } Node<E> retNode = prev.next;//被刪除的元素 prev.next = retNode.next; retNode.next = null; size--; return retNode.e; }

2.2 從鏈表中刪除第一個元素,返回刪除的元素

基于remove(int index)方法實現該方法:

//從鏈表中刪除第一個元素,返回刪除的元素 public E removeFirst() { return remove(0); }

2.3 從鏈表中刪除最后一個元素,返回刪除的元素

基于remove(int index)方法實現該方法:

//從鏈表中刪除最后一個元素,返回刪除的元素 public E removeLast() { return remove(size - 1); }三、測試刪除邏輯

基于上一節的測試代碼,我們新增刪除邏輯代碼,此時貼出全部測試代碼:

package LinkedList;public class TestMain { public static void main(String[] args) { LinkedList<Integer> linkedList = new LinkedList<Integer>(); System.out.println('============在鏈表頭部添加============'); for (int i = 0; i < 5; i++) { linkedList.addFirst(i); System.out.println(linkedList); } System.out.println('============修改鏈表============'); linkedList.set(2, 666); System.out.println(linkedList); System.out.println('============刪除鏈表中666節點============'); linkedList.remove(2); System.out.println(linkedList); }}

結果為:

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

四、鏈表的時間復雜度分析

4.1 添加操作的時間復雜度

(1)在鏈表尾部添加(addLast())需要從頭遍歷,時間復雜度為O(n);

(2)在鏈表頭部添加(addFirst()),時間復雜度為O(1);

(3)在鏈表任意位置添加(add(int index,E e)),平均情況下為O(n/2)=O(n);

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

4.2 刪除操作的時間復雜度

(1)刪除鏈表最后一個元素(removeLast()),需要遍歷找到最后元素的前一個元素,故時間復雜度為O(n);

(2)刪除鏈表的第一個元素(removeFirst()),時間復雜度為O(1)

(3)刪除鏈表中任意位置節點(remove(index)),平均情況下時間復雜度為O(n/2)=O(n);

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

4.3 修改操作

由于鏈表不支持隨機訪問,需要從頭開始尋找直到找到需要修改的節點,故時間復雜度為O(n)

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

4.4 查找操作

由于鏈表不支持隨機訪問,需要從頭開始尋找直到找到需要的節點,故時間復雜度為O(n)

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

從上不難看出,關于鏈表的添加操作、刪除操作、修改操作、查找操作的時間復雜度均為O(n),看到這個頓時心涼了半截,這個還搞個mao,還不如數組呢,其實確實是這樣的,因為對于數組來說,只要有索引即可實現快速訪問。但是對于鏈表來說,我們如果只對鏈表頭進行添加操作、刪除操作、查找操作那么它的的時間復雜度為均O(1),這時和數組是一樣,是動態的,不會大量的浪費內存空間,這就是它的優勢,由于鏈表是最基礎的動態數據結構,在此基礎上將會有更多關于鏈表的應用。

Java鏈表中元素刪除的實現方法詳解【只刪除一個元素情況】

關于本小節,若您覺得還行、還過得去,麻煩給個推薦吧,謝謝!!

關于鏈表的源碼 https://github.com/FelixBin/dataStructure/tree/master/src/LinkedList

更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩精品久久久久久| 亚洲最新视频在线观看| 国内精品国产三级国产a久久| 日韩欧美电影一区| 亚洲精华国产欧美| 国产剧情一区在线| 一区二区三区在线观看欧美| 日韩欧美一级二级| 亚洲一区二区三区免费在线观看| 国产乱妇无码大片在线观看| 亚洲三级免费观看| 欧美三级蜜桃2在线观看| 欧美日韩亚洲一区在线观看| 久久不见久久见中文字幕免费| 欧美一区二区成人| 亚洲三级影院| 欧美色123| 亚洲视频一二| 成人av在线资源网| 成人av网站在线| 99久久久久免费精品国产| 国产99精品国产| 国产精品白丝jk白祙喷水网站| 久久国产精品99精品国产| 毛片av一区二区| 久久国产精品第一页| 蜜臀av性久久久久蜜臀aⅴ| 美国av一区二区| 国产ts人妖一区二区| 91在线视频官网| 好吊一区二区三区| 国产精品久久久久久久久久直播 | 日韩欧美123| 麻豆精品91| 国产精品一区视频网站| 国产精品美女黄网| 亚洲欧美日韩精品一区二区| 欧美日韩亚洲一区二区三区四区| 亚洲一区国产视频| 欧美电影在线免费观看| 国产亚洲毛片| a级高清视频欧美日韩| 国产九色sp调教91| 粉嫩在线一区二区三区视频| 不卡的av电影在线观看| 欧美午夜不卡| 国产精品一区视频网站| 色噜噜狠狠色综合欧洲selulu| 91精彩视频在线| 91麻豆精品国产91久久久久久| 日韩三级av在线播放| 久久久.com| 亚洲国产成人av网| 麻豆精品在线视频| 久久视频一区| 久久se这里有精品| 欧美亚洲动漫精品| 亚洲欧美色综合| 欧美日韩在线观看一区二区三区| 中文字幕第一区二区| 精品成人久久| 午夜精品在线看| 一本色道久久综合亚洲二区三区| 亚洲3atv精品一区二区三区| 91激情五月电影| 国产精品久久久久精k8| 久久成人免费| 亚洲高清不卡在线观看| 日韩欧美视频在线| 一区精品久久| 蜜臀av国产精品久久久久| 蜜桃91丨九色丨蝌蚪91桃色| 国产成人亚洲精品青草天美| 99国产一区二区三精品乱码| 亚洲天堂久久| 7777精品久久久大香线蕉| 国产日本欧洲亚洲| 午夜婷婷国产麻豆精品| 国产一区美女在线| 国产精品v一区二区三区| 亚洲中字黄色| 欧美mv日韩mv亚洲| 一区二区三区精品在线观看| 免费观看久久久4p| 欧美精品99| 欧美色视频在线| 亚洲欧洲日韩在线| 久久99久久99| 国产字幕视频一区二区| 884aa四虎影成人精品一区| 亚洲视频免费看| 99久久精品99国产精品| 91国产精品成人| 亚洲精品视频自拍| 波多野结衣亚洲| 欧美顶级少妇做爰| 免费在线观看精品| 一级成人国产| 久久精品视频一区二区三区| 日韩高清在线不卡| 一本色道久久综合亚洲精品不| 久久综合九色综合97婷婷女人| 激情综合网激情| 在线观看日韩电影| 亚洲午夜一二三区视频| 黄色另类av| 国产午夜精品一区二区三区视频| 国产麻豆日韩欧美久久| 欧美在线小视频| 日韩精品视频网| 久久国产手机看片| 亚洲一区二区精品视频| 伊人蜜桃色噜噜激情综合| 精品欧美一区二区在线观看| 精品一区二区免费看| 在线日韩国产精品| 日本不卡一区二区| 久久久久久自在自线| 天天综合色天天综合| 久久国产一二区| 青椒成人免费视频| 精品视频1区2区| 精品午夜久久福利影院| 欧美精品vⅰdeose4hd| 国产精品18久久久久久久网站| 欧美日韩你懂的| 国产精品一二二区| 6080yy午夜一二三区久久| 国产成人综合网站| 欧美一区二区三区的| 成人av网站免费观看| 久久九九国产精品| 欧美亚韩一区| 亚洲va在线va天堂| 色哟哟一区二区在线观看| 天天射综合影视| 日本乱人伦aⅴ精品| 久久99这里只有精品| 日韩一区二区不卡| 成人免费视频视频| 精品国一区二区三区| 欧美日韩一区在线视频| 亚洲制服丝袜在线| 欧美日韩国产综合草草| 国产福利91精品| 国产精品毛片久久久久久| 欧美va天堂| 亚洲成人手机在线| 9191国产精品| 欧美精品国产| 一区二区三区91| 欧美在线免费观看视频| 粉嫩在线一区二区三区视频| 久久久国产一区二区三区四区小说| 欧美日本中文| 亚洲国产精品尤物yw在线观看| 日本韩国精品一区二区在线观看| 日本vs亚洲vs韩国一区三区二区| 欧美色电影在线| 国产成人在线免费| 国产精品污污网站在线观看| 国产精品日韩二区| 国产一区二区三区免费观看| 精品福利视频一区二区三区| 雨宫琴音一区二区在线| 日本亚洲免费观看| 久久久久亚洲蜜桃| 久久精品官网| 成人福利在线看| 亚洲图片一区二区| 欧美r级电影在线观看| 国产欧美日韩在线播放| 国内不卡的二区三区中文字幕| 国产欧美日韩视频在线观看| 亚洲专区欧美专区| 成人免费视频国产在线观看| 亚洲妇女屁股眼交7| 久久亚区不卡日本| 91久久线看在观草草青青| 欧美韩日精品| 九九热在线视频观看这里只有精品| 久久久九九九九| 在线视频你懂得一区| 亚洲国产黄色| 岛国av在线一区| 奇米影视7777精品一区二区| 国产精品久久久久久亚洲伦| 91精品麻豆日日躁夜夜躁| 日韩中文字幕1| 欧美韩国一区二区| 欧美日韩国产一二三| 午夜一级久久| 欧美激情精品久久久六区热门| 久久99精品视频| 日韩成人一级片| 一区二区三区高清| 久久久久久久性| 亚洲婷婷综合色高清在线| 精品奇米国产一区二区三区| 欧美二区三区91|