国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

從數組與鏈表到單鏈表的反轉,一文帶你吃透

開發 后端
既然數組和鏈表,常常會拿到一起做比較。那咱們今天就先來說說數組和鏈表。

 

[[314217]]

 

阿粉發現大家在說鏈表的時候,就會常說另外一個概念:數組。

既然數組和鏈表,常常會拿到一起做比較。那咱們今天就先來說說數組和鏈表。

數組與鏈表

數組最大的一個特點就是,需要一塊連續的內存空間。假設現在內存空間剩余了 1MB ,但是它不是連續的,這個時候申請一個大小為 1MB 的數組,會告訴你申請失敗,因為這個內存空間不連續。

鏈表最大的一個特點是,不需要一塊連續的內存空間。還是上面那個例子,如果申請的不是大小為 1MB 的數組,而是鏈表,就會申請成功。

如果只是理解到了這個層面,你是不是會覺得,我以后一直用鏈表這種數據結構就可以了?不不不,數組也有它自己的優勢。

阿粉在查閱相關資料時,發現數組簡單易用,又因為它使用的是連續內存空間,就可以借助 CPU 的緩存機制,預讀數組中的數據,因而訪問效率更高,所以在插入,刪除操作比較少,而查詢比較多的情況下,使用數組是比較有優勢的。

鏈表

在內存中不是連續存儲,對 CPU 緩存機制不夠友好,也就沒辦法進行有效預讀。所以鏈表適用于在插入,刪除操作比較多的情況下使用。

鏈表鏈表分為單鏈表,循環鏈表,和雙向鏈表。

對于單鏈表來說,它的第一個節點也就是頭結點記錄著鏈表的基地址,而最后一個節點也就是尾節點則指向一個空地址 NULL ,循環鏈表也可以理解成特殊的單鏈表,只不過尾節點由原來指向一個空地址 NULL 改為了指向頭結點。

單鏈表是這樣的:

 

 

 

 

循環鏈表是這樣的:

 

 

 

 

但是在實際開發中,更加常用的鏈表結構是:雙向鏈表。

它的結構是這樣的:

 

 

 

 

我們能夠看到它的特點是:占用內存較多,支持雙向遍歷。因為它有兩個指針,所以相對單鏈表,一個數據就會多占用一些內存。

既然它占用內存較多,為什么在實際開發中還比較常用呢,這里面有一個思想在里面,咱們具體來講講。

我們知道,單鏈表,雙鏈表在刪除的時候,時間復雜度為 O(1) ,但是在實際開發中它的時間復雜度并不是這樣,為什么呢?

這樣想,一般在做數據刪除的時候,你的操作是怎樣的?

首先,查找在節點中「值等于給定某個值」的節點,找到之后再做刪除對吧?也就是說在刪除之前,是需要做查找這個工作的。而單向鏈表和雙向鏈表在查找的時候時間復雜度為 O(n) ,因為它為了找到這個要刪除的元素,需要將所有的元素都遍歷一遍。將上面過程梳理一下就是,查找時間復雜度為 O(n) ,刪除時間復雜度為 O(1) ,總的時間復雜度為 O(n) 。

以上過程在雙鏈表中是怎樣的呢?因為雙鏈表支持雙向遍歷,所以查找這個操作對它來說時間復雜度為 O(1) ,因為它是雙向遍歷,所以在查找元素時,不需要將所有的元素進行遍歷,刪除時時間復雜度為 O(1) ,總的時間復雜度為 O(1) 。

因為雙向鏈表的時間復雜度為 O(1) ,所以在開發中它是比較受歡迎的。而在這其中體現的一個最重要的思想就是:空間換時間。

當內存空間相對時間來說不是那么重要的話,那我們是不是就可以忽略次要的因素,著重解決主要矛盾?

光說不做不符合阿粉的風格啊。阿粉今天實現了一個比較常見的單鏈表操作---單鏈表反轉

單鏈表反轉代碼實現

 

  1. /** 
  2.  * 鏈表反轉 
  3.  */ 
  4. public class ReverseList { 
  5.     public static class Node{ 
  6.         private int data; 
  7.         private Node next
  8.  
  9.         public Node(int data , Node next){ 
  10.             this.data=data; 
  11.             this.next=next
  12.         } 
  13.         public int getData(){ 
  14.             return data; 
  15.         } 
  16.     } 
  17.      
  18.     public static void main(String[] args){ 
  19.         // 初始化單鏈表 
  20.         Node node5=new Node(5,null); 
  21.         Node node4=new Node(4,node5); 
  22.         Node node3=new Node(3,node4); 
  23.         Node node2=new Node(2,node3); 
  24.         Node node1=new Node(1,node2); 
  25.         // 調用反轉方法 
  26.         Node reverse=reverse(node1); 
  27.         System.out.println(reverse); 
  28.     } 
  29.      
  30.     /** 
  31.      *單鏈表反轉 
  32.      * @param list 為傳入的單鏈表 
  33.      */ 
  34.     public static Node reverse(Node list){ 
  35.         Node current=list, // 定義 current 為當前鏈表 
  36.                 afterReverse=null;   // 定義 afterReverse 為轉換之后的新鏈表,初始為 null 
  37.         // 當前鏈表不為空,進行反轉操作 
  38.         while (current!=null){ 
  39.             // 1. 保存當前節點的 next 指針指向的鏈表 
  40.             Node next=current.next
  41.             // 2. 將當前節點的 next 指針指向反轉之后的新鏈表 
  42.             current.next=afterReverse; 
  43.             // 3. 保存當前的鏈表狀態到新鏈表中 
  44.             afterReverse=current
  45.             // 4. 將當前節點指針后移一位,進行下一次循環 
  46.             current=next
  47.         } 
  48.         return afterReverse; 
  49.     } 

接下來咱們斷點調試,看看每次結果:

初始狀態:

 

 

 

 

第一次循環結束

 

 

 

 

第二次循環結束

 

 

 

 

第三次循環結束

 

 

 

第四次循環結束

 

 

 

 

第五次循環結束

 

 

 

在寫這篇文章的時候,特別是單鏈表反轉那一塊,考慮了很久,借鑒網上思路做出來,有的思路真的是很巧妙。

在阿粉的一步步斷點調試 + 手寫代碼下,終于拿下了單鏈表反轉。你掌握了嘛?

參考《極客時間》算法面試通關40講

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2024-09-18 13:57:15

2025-06-05 03:11:00

2022-04-07 08:37:05

鏈表技巧單鏈表

2020-07-01 08:07:33

Redis

2020-02-09 17:30:54

反轉鏈表程序員節點

2024-04-26 00:02:00

Rust語言LinkedList

2020-03-31 08:37:31

遞歸單鏈表反轉

2021-01-06 05:31:13

線性表鏈表數據

2025-12-01 01:45:00

C++內存深拷貝

2025-03-24 00:11:05

IO模型計算機

2025-07-02 04:00:00

2009-11-25 10:31:35

PHP數組實現單鏈表

2023-11-20 08:18:49

Netty服務器

2022-12-20 07:39:46

2023-12-21 17:11:21

Containerd管理工具命令行

2023-09-07 07:17:01

KubernetesCRI標準

2025-11-05 02:11:00

2024-08-09 08:41:14

2023-07-31 08:18:50

Docker參數容器

2021-05-29 10:11:00

Kafa數據業務
點贊
收藏

51CTO技術棧公眾號

国产网友自拍电影在线| 国产精品久久久久久模特| 在线观看日韩电影| 交视频在线观看国产| 久久嫩草精品久久久精品| 国产色一区二区三区| 亚洲精品看片| 国产一级精品aaaaa看| 亚洲一区色图| 俄罗斯精品一区二区三区| 欧美一区二区三区久久精品茉莉花| 亲爱的老师9免费观看全集电视剧| 日韩一级淫片| 国内精品小视频在线观看| 激情五月综合婷婷| 欧美成人一区二区三区电影| 成人国产精品久久| 精品三级av| 色婷婷精品国产一区二区三区| 青草av.久久免费一区| 日本一区二区在线播放| 国产精品女主播av| 亚洲综合欧美激情| 亚洲欧美另类图片小说| 美女免费免费看网站| 亚洲综合成人网| 亚洲图片123| 欧美亚洲国产一区二区三区va| 一个人免费观看视频www在线播放 一个人免费视频www在线观看 | 欧美日韩一区二区三区四区| 成人免费网站观看| 中文字幕在线观看一区| 毛片中文在线观看| 欧美日韩国产中文字幕| 午夜激情在线观看| 欧美一区二区三区四区视频| 女海盗2成人h版中文字幕| 一区二区三区视频在线 | 欧美日韩高清一区二区| 日韩三级电影视频| 欲色天天网综合久久| 亚洲精品v亚洲精品v日韩精品| 欧美在线观看一区二区三区| 亚洲国产高清一区| 丰满的少妇愉情hd高清果冻传媒| 久久久国产精华| 一区二区三区四区在线免费视频| 日韩欧美成人一区| 7777精品| 国产精品美女黄网| 成人性生交大片免费看视频在线 | 国产对白叫床清晰在线播放| 精品国产1区二区| 日韩区一区二| 51国偷自产一区二区三区的来源 | 国产欧美日韩一区二区三区在线观看 | 亚洲一区3d动漫同人无遮挡| 久久久久久久久99精品| 成a人v在线播放| 亚洲一区999| 国产成人3p视频免费观看| 美女三级99| 中文乱码免费一区二区| 欧美高清视频| 久久青草精品视频免费观看| 亚洲精选成人| 成人免费观看www在线| 6080日韩午夜伦伦午夜伦| **国产精品| 肥熟一91porny丨九色丨| 91在线云播放| 日本最新在线视频| 欧美大片在线免费观看| 最新成人av网站| 天天干天天玩天天操| 亚洲精品一区二区三区在线观看| 天天躁日日躁成人字幕aⅴ| 色综合电影网| 亚洲mv在线观看| 岛国精品在线| 蜜桃麻豆www久久国产精品| 国产精品国产三级国产aⅴ入口| 毛片网站在线看| 成人午夜小视频| 91在线云播放| 暖暖在线中文免费日本| 91精品在线国产| 国产女人18毛片水真多成人如厕 | 亚洲成av人影院| 日本精品裸体写真集在线观看| 91精品视频在线播放| 久久精品一区八戒影视| 久操av在线| 99国产超薄肉色丝袜交足的后果| 中文字幕中文在线不卡住| 国产精品亚洲d| 欧美污视频久久久| 大桥未久av一区二区三区| 精品网站aaa| 欧美一级视频免费看| 精品国产麻豆免费人成网站| 91破解版在线看| 免费一级特黄录像| 国产日韩精品在线观看| 牲欧美videos精品| 青青青青草视频| 日韩欧美成人激情| 激情av一区| 在线国产网址| 欧美资源在线观看| 国产蜜臀av在线一区二区三区| 78精品国产综合久久香蕉| 亚洲国产精品综合| 欧美一区国产二区| 欧美国产日本| 欧美5-7sexvideos处| 国内精品小视频| 26uuu精品一区二区| 欧美日韩精品免费观看视欧美高清免费大片| 精品国产乱码久久| 亚洲国产精品一区| av电影在线观看| 国产欧美亚洲日本| 欧美色偷偷大香| 欧美精品自拍| 精品视频一二区| 成人在线免费网站| 日本h片在线看| 午夜爽爽爽男女免费观看影院| 屁屁影院ccyy国产第一页| 欧美亚洲国产一卡| 黄色免费成人| 97最新国自产拍视频在线完整在线看| 亚洲专区在线视频| 欧美性xxxxx极品少妇| 亚洲电影在线| 51xtv成人影院| 午夜欧美大尺度福利影院在线看| 成人黄色在线免费| 国产精品一区二区精品| 国产成人天天5g影院在线观看| 91高清在线| 日韩av毛片| 91麻豆精品国产91久久久久推荐资源 | 蜜臀久久99精品久久久无需会员| 久久国产精品久久久久久| 中文字幕免费国产精品| 日韩精品中文字幕有码专区| 欧美成人午夜剧场免费观看| 免费久久99精品国产自| 3d成人动漫在线| 午夜久久中文| 欧美a大片欧美片| 国产美女精品一区二区三区| 试看120秒一区二区三区| 欧美亚洲一区二区三区| 91色在线porny| 亚洲欧美一区二区三区极速播放| 91国产免费看| 国产一区免费视频| 成年人视频在线| 免费一级毛片在线观看| av网站在线免费| 午夜影院欧美| 亚洲电影在线| 成人免费视频网站在线观看| 亚洲激情在线激情| 亚洲第一成年网| 韩国福利视频一区| 91香蕉国产在线观看| 亚洲一区二区在线播放| 91免费观看| 在线欧美三级| 国产伦精品一区二区三区千人斩| 毛片一区二区三区| 午夜伦理一区二区| 另类色图亚洲色图| 97精品国产aⅴ7777| 高清无码一区二区在线观看吞精| 免费黄色在线网站| 色777狠狠狠综合伊人| 国产精品看片你懂得| 亚洲欧美综合v| 国产精品美女www| av在线播放天堂| 国产在线一二| 99精品女人在线观看免费视频| 国产精品综合| 秋霞电影网一区二区| 国产丝袜欧美中文另类| 精品乱人伦小说| 国产成人黄色片| 欧美激情aⅴ一区二区三区| 色av综合在线| 亚洲一卡二卡三卡| 人人超在线公开视频| 亚洲欧美福利一区二区| 亚州欧美日韩中文视频| 欧美一区二区三区成人久久片 | 97人人在线|