精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:請手寫一個簡易的單鏈表

開發(fā) 前端
我現(xiàn)在有點(diǎn)明白了,在面試過程中面試官有時會讓我們手寫代碼,其實主要是考驗大家的基本功,更是通過大眾都熟悉的領(lǐng)域來考核大家的體系化思維與應(yīng)對思路。

我現(xiàn)在有點(diǎn)明白了,在面試過程中面試官有時會讓我們手寫代碼,其實主要是考驗大家的基本功,更是通過大眾都熟悉的領(lǐng)域來考核大家的體系化思維與應(yīng)對思路。

而數(shù)據(jù)結(jié)構(gòu)又是編程領(lǐng)域最基本知識,因為編程的世界中必須解決的問題:存儲。

接下來筆者會從自己角度,重新開始學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),并將學(xué)習(xí)到的內(nèi)容與大家一起探討,交流,共同進(jìn)步。

溫馨提示:本文主要以單鏈表表為例進(jìn)行展開,因為單鏈表的反轉(zhuǎn)、檢測環(huán)都是常見面試題。

1、鏈表是什么?具備哪些基本特征?

面試官讓我們手寫一個鏈表,那我們首先快速梳理出鏈表的基本特征。

特意從百度百科上查詢了鏈表的定義:

鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時動態(tài)生成。每個結(jié)點(diǎn)包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點(diǎn)地址的指針域。

基本特征如下:

  • 物理存儲非連續(xù)、邏輯通過指針實現(xiàn)順序性,其示例圖如下所示:
  • 數(shù)據(jù)結(jié)構(gòu)分為指針域和數(shù)據(jù)域

面向?qū)ο缶幊蹋惒粌H要定義屬性,還需要抽象出行為(方法),思考如下:

通知在面試過程中,只需要基本實現(xiàn)增、刪、改、查即可。

2、圖解與代碼實現(xiàn)

鏈表的類圖如下:

鏈表的存儲結(jié)構(gòu)如下圖所示:

接下來將從代碼角度來實現(xiàn)一個簡易的鏈表。

2.1 基礎(chǔ)代碼

鏈表的基礎(chǔ)數(shù)據(jù)如下所示:

  1. public class LinkedList<T> { 
  2.  
  3.     /** 指針域*/ 
  4.     // 頭節(jié)點(diǎn) 
  5.     private DataNode<T> header; 
  6.     // 從節(jié)點(diǎn) 
  7.     private DataNode<T> tail; 
  8.  
  9.     private int size
  10.  
  11.  
  12.     /** 
  13.      * 數(shù)據(jù)節(jié)點(diǎn) 
  14.      * @param <T> 
  15.      */ 
  16.     private class DataNode<T> { 
  17.         public T value; 
  18.         public DataNode<T> next
  19.  
  20.         public DataNode(T value) { 
  21.             this.value = value; 
  22.         } 
  23.     } 

2.2 指定下標(biāo)插入節(jié)點(diǎn)

上面主要是定義基本的數(shù)據(jù)結(jié)構(gòu),接下來我們看一下在鏈表的中間插入新的數(shù)據(jù)。

在指定下標(biāo)處插入節(jié)點(diǎn),該節(jié)點(diǎn)作為新節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn),暫存它的next指針,謹(jǐn)防該指針會丟失,圖示如下:

代碼如下所示

  1. public void add(int index, T value) { 
  2.         if(index >= size) { 
  3.             throw new ArrayIndexOutOfBoundsException(); 
  4.         } 
  5.         DataNode<T> node = new DataNode<>(value); 
  6.         DataNode<T> prev = get(index); 
  7.  
  8.         DataNode<T> tmp = prev.next;  // @1 
  9.         prev.next = node;             // @2 
  10.         node.next = tmp;              // @3 
  11.     } 

鏈表的插入首先找到前驅(qū)節(jié)點(diǎn),暫存它的next指針,謹(jǐn)防該指針會丟失,圖解如下圖所示:

上述三行代碼的說明如下:

  • @1:首先創(chuàng)建一個臨時節(jié)點(diǎn),用于暫存前驅(qū)節(jié)點(diǎn)的next
  • @2:前驅(qū)節(jié)點(diǎn)的next指針重新指向待插入的節(jié)點(diǎn)
  • @3:新節(jié)點(diǎn)的next指針指向原前驅(qū)節(jié)點(diǎn)的next指針

優(yōu)化點(diǎn):其實我們發(fā)現(xiàn),前驅(qū)節(jié)點(diǎn)是要暫存,但是否真有必要開辟一個臨時節(jié)點(diǎn),其實不需要,直接將其賦值給新節(jié)點(diǎn)的next即可。優(yōu)化代碼如下:

  1. node.next = prev.next
  2. prev.next = node; 

2.3 移除指定下標(biāo)處節(jié)點(diǎn)

移除指定下標(biāo)處節(jié)點(diǎn)的示例圖:

正如上圖所示,要移除下標(biāo)為2的節(jié)點(diǎn),即圖中的第三個節(jié)點(diǎn),核心關(guān)鍵點(diǎn)還是需要找到待刪除節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn),然后前驅(qū)節(jié)點(diǎn)的next等于待刪除節(jié)點(diǎn)的next即可,故實現(xiàn)代碼如下:

  1. public T remove(int index) { 
  2.         if(index >= size) { 
  3.             throw new ArrayIndexOutOfBoundsException(); 
  4.         } 
  5.  
  6.         DataNode<T> pre = get(index - 1 ); 
  7.         DataNode<T> cur = pre.next
  8.  
  9.         pre.next = cur.next
  10.         // help GC 
  11.         cur.next = null
  12.  
  13.         size --; 
  14.         return cur.value; 
  15.     } 

2.4 單鏈表反轉(zhuǎn)

所謂的單鏈表反轉(zhuǎn),就是將原鏈表逆序輸出結(jié)果,其示例圖如下:

單鏈表的反轉(zhuǎn),需要做的事情是將當(dāng)前節(jié)點(diǎn)的next指針指向前驅(qū)節(jié)點(diǎn)。

但由于單鏈表只有next指針,故從頭節(jié)點(diǎn)開始遍歷的過程中,遍歷指針前進(jìn)到的當(dāng)前節(jié)點(diǎn)時,需要能方便的訪問到該節(jié)點(diǎn)的前驅(qū)動。

另外一個核心點(diǎn)就是,在遍歷過程中,對當(dāng)前節(jié)點(diǎn)的next指針進(jìn)行操作(賦值為前驅(qū)節(jié)點(diǎn))時必須暫存該節(jié)點(diǎn)的next指針,否則next指針丟失,無法遍歷到鏈表的結(jié)尾。

基于上述思路,鏈表反轉(zhuǎn)的具體操作流程如下圖所示:

基于上述思路,代碼編寫如下所示:

  1. public void reverse() { 
  2.         // 從頭節(jié)點(diǎn)開始遍歷 
  3.         DataNode<T> cur = header; 
  4.         // 記錄當(dāng)前節(jié)點(diǎn)到 prev 前驅(qū)節(jié)點(diǎn) 
  5.         DataNode<T> cur_prev = null
  6.         // 暫存當(dāng)前節(jié)點(diǎn)到next指針 
  7.         DataNode<T> cur_next = null
  8.  
  9.         // 從當(dāng)前節(jié)點(diǎn)開始遍歷,直接到尾部 
  10.         while(cur != null) { 
  11.             //反轉(zhuǎn)之前,先暫存相關(guān)節(jié)點(diǎn) 
  12.             cur_next = cur.next
  13.             cur.next = cur_prev; 
  14.             cur_prev = cur; 
  15.             // 繼續(xù)遍歷下一個節(jié)點(diǎn) 
  16.             cur = cur_next; 
  17.         } 
  18.          
  19.         //反轉(zhuǎn) header ,tail 
  20.         DataNode<T> tmp = header; 
  21.         header = tail; 
  22.         tail = tmp; 
  23.     } 

鏈表的其他方法實現(xiàn),基本差不多,從編寫代碼的過程中,不難看出鏈表的操作,主要是操作各個節(jié)點(diǎn)的指針。

3、常見面試題

3.1 鏈表與數(shù)組的區(qū)別

鏈表與數(shù)組的區(qū)別可以從如下幾個方面展開:

  • 內(nèi)存布局
  • 插入性能
  • 查找性能

3.1.1 內(nèi)存布局

數(shù)組必須申請連續(xù)的內(nèi)存,即物理上連續(xù),例如當(dāng)前jvm虛擬機(jī)當(dāng)前還剩150M內(nèi)存,但此時嘗試去創(chuàng)建一個100M內(nèi)存,可能無法分配內(nèi)存而觸發(fā)垃圾回收,而鏈表是邏輯連續(xù),物理上不連續(xù),因為時通過指針進(jìn)行定位。

3.1.2 插入性能

鏈表在頭、尾節(jié)點(diǎn)插入性能極佳,如果需要在鏈表的隨機(jī)位置插入數(shù)據(jù),需要先從頭節(jié)點(diǎn)開始遍歷,先找到相關(guān)待插入節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn),后續(xù)的插入操作只需要涉及指針賦值,性能表現(xiàn)佳,而數(shù)組的插入由于需要涉及數(shù)據(jù)的復(fù)制、移動,從而帶來較大性能損耗。

3.1.3 查找性能

數(shù)組最大的優(yōu)勢是隨機(jī)查找能力,其時間復(fù)雜度為O(1),即數(shù)組可以根據(jù)下表快速定位到需要查詢到數(shù)據(jù)。而鏈表只能是從頭節(jié)點(diǎn)或尾節(jié)點(diǎn)開始遍歷。

本文轉(zhuǎn)載自微信公眾號「中間件興趣圈」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系中間件興趣圈公眾號。

 

責(zé)任編輯:武曉燕 來源: 中間件興趣圈
相關(guān)推薦

2023-01-18 17:50:35

系統(tǒng)架構(gòu)Kafka

2021-11-02 09:05:25

Redis

2021-11-24 10:10:32

axios前端攔截器

2022-04-08 08:26:03

JavaHTTP請求

2021-09-28 13:42:55

Chrome Devwebsocket網(wǎng)絡(luò)協(xié)議

2025-10-20 04:00:00

2019-12-20 08:52:01

算法單鏈表存儲

2025-11-11 09:25:19

2021-08-31 15:19:16

美團(tuán)面試快排

2017-03-16 15:27:10

面試官測試技術(shù)

2025-09-19 09:57:46

2020-05-13 14:35:47

HashMap面試官Java

2021-05-19 08:17:35

秒殺場景高并發(fā)

2023-07-31 08:26:09

2020-06-22 07:47:46

提交面試官訂單

2022-08-18 20:02:04

JSLRU緩存

2021-01-06 05:36:25

拉鏈表數(shù)倉數(shù)據(jù)

2021-06-09 07:55:19

NodeEventEmitte驅(qū)動

2025-06-04 03:15:00

高并發(fā)短鏈系統(tǒng)

2024-05-28 10:14:31

JavaScrip模板引擎
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲精品一区二区三区影院忠贞| 桥本有菜av在线| 天天操中文字幕| 精品国产乱码久久久久久蜜坠欲下| 日本精品一区二区三区高清| 成人美女免费网站视频| 2025国产精品自拍| 岛国av一区| 日韩欧美国产网站| 水蜜桃亚洲精品| 99久久精品国产色欲| 亚洲日产国产精品| 亚洲片国产一区一级在线观看| 999精品视频在线| 肉肉视频在线观看| 久久综合网色—综合色88| 国产精品福利久久久| 强制高潮抽搐sm调教高h| 136福利精品导航| 91高清在线观看| 国产在线观看欧美| 美女欧美视频在线观看免费 | 中文字幕视频网| 四虎国产精品免费观看| 精品日韩在线一区| 亚洲自偷自拍熟女另类| 久cao在线| 久久综合九色综合97_久久久| 成人黄色免费片| 国产99久久久| 国产精品av久久久久久麻豆网| 亚洲深夜福利视频| 无码人妻一区二区三区在线| 中文另类视频| 午夜精品一区二区三区电影天堂| 亚洲精品国产精品国自产| 亚洲成a人片在线| 喷水一区二区三区| 欧美在线视频免费| 欧美成人精品欧美一| 欧美日韩精品在线一区| 精品国产免费人成电影在线观看四季| 自拍偷拍21p| 都市激情亚洲综合| 亚洲午夜精品在线| 青青草免费在线视频观看| 日本人妖在线| 91在线国内视频| 超碰在线观看97| 日本成人一级片| 国产日韩欧美一区| 久久男人的天堂| 午夜激情福利网| 日韩欧美精品一区| 一区二区三区国产视频| 色天使在线视频| 极品国产人妖chinesets亚洲人妖| 欧美日本在线播放| 手机在线免费观看毛片| 欧美一区 二区 三区| 亚洲伦理在线精品| 中文字幕99| 欧美jizz18性欧美| 国产精品久久久爽爽爽麻豆色哟哟| 蜜桃久久影院| 蜜桃视频在线免费| 久久综合av免费| 蜜桃成人在线| 黄色在线小视频| 国产女人18水真多18精品一级做| 明星裸体视频一区二区| 欧美视频一二区| 国产1区2区3区精品美女| 91热福利电影| 99这里有精品视频| 国产xxx精品视频大全| 亚洲在线观看视频| a级片免费观看| 国产激情一区二区三区| 91影院未满十八岁禁止入内| 国产激情视频在线播放 | 日本一区二区综合亚洲| 日韩精品资源| 免费在线看黄| 亚洲精品日韩综合观看成人91| 欧美少妇在线观看| 青青青国内视频在线观看软件| 一区二区日韩电影| 2018日日夜夜| 精品国产免费人成网站| 欧美在线三级电影| 亚洲精品永久视频| 亚洲一区二区三区免费| 精品呦交小u女在线| 无码 人妻 在线 视频| 日韩欧美网站| 高清欧美性猛交| 国产寡妇亲子伦一区二区三区四区| 日韩中文字幕亚洲一区二区va在线| 国产伦精品免费视频| 瑟瑟视频在线免费观看| 国产伦理精品不卡| 精品一区二区久久久久久久网站| 麻豆app在线观看| 最新欧美精品一区二区三区| 97超碰国产精品| 香蕉久久免费电影| 3d成人h动漫网站入口| 亚洲一区二区三区四区av| 国产99精品一区| 久久成人精品一区二区三区| 国产成人在线播放视频| 精品一二三四区| 狠狠色综合色区| 午夜国产福利在线| 精品露脸国产偷人在视频| 久久久久久久久久久久91| 日本在线一区二区| 日韩电影中文字幕一区| 亚洲精品国产91| 狠狠噜噜久久| 国产日韩在线观看av| 好吊色一区二区| 国产精品色婷婷久久58| 天天夜碰日日摸日日澡性色av| 欧美三级电影网址| 亚洲福利在线看| 免费看黄色av| 在线精品一区| 亚洲自拍中文字幕| 东凛在线观看| 欧美日韩国产一中文字不卡| 1314成人网| 日本一区二区高清不卡| 91国产在线精品| 亚洲国产精品久久久久久久| 国产精品国模大尺度视频| 欧美一级视频在线播放| 日本一区二区乱| 色综合影院在线| 男操女视频网站| 91欧美一区二区| 精品成在人线av无码免费看| 先锋影音网一区二区| 亚洲欧美精品一区二区| 日本少妇激情舌吻| 国产老女人精品毛片久久| 视频一区视频二区视频三区视频四区国产 | 四虎国产成人精品免费一女五男| 中文亚洲欧美| 国产乱码精品一区二区三区中文| 巨大荫蒂视频欧美大片| 欧美日韩综合在线| 中文字幕伦理片| 日日摸夜夜添夜夜添精品视频 | 国产婷婷一区二区三区久久| av不卡在线观看| 久久人人爽人人爽人人av| 亚洲高清999| 久久99精品视频一区97| 国产激情视频在线播放| 一区二区三区欧美日韩| 日本wwwxx| 午夜精品久久久久99热蜜桃导演 | 亚洲国产女人aaa毛片在线| 欧美日韩中文字幕在线观看| 国产精品一级二级三级| 欧美交换配乱吟粗大25p| 免费观看亚洲天堂| 欧美成人亚洲成人日韩成人| 精品欧美在线观看| 亚洲三级电影网站| 黄色片子免费看| 欧美成人高清| 国产高清一区二区三区| 色爱综合区网| 精品福利在线导航| 国产污污视频在线观看| 久久久精品免费观看| 手机在线免费观看毛片| 国产精品久久久久蜜臀| 91在线观看免费高清| 三级福利片在线观看| 亚洲精品成人网| 国产又黄又猛又粗又爽| 日本一区二区视频在线观看| 三日本三级少妇三级99| 亚洲婷婷免费| 久中文字幕一区| 日本欧美韩国| 这里只有精品在线观看| 影音先锋国产在线| 亚洲欧美一区二区久久| 国产精品伦子伦| 日韩国产欧美视频| 妞干网这里只有精品| 成人h动漫精品一区二区器材| 51久久精品夜色国产麻豆| 成人在线观看一区| 欧美一区二区三区视频免费| 国产一级二级三级视频| 91麻豆免费观看| 亚洲精品成人在线播放| 亚洲第一网站| 亚洲国产精品久久久久久女王| 日韩免费一级| 国产精品av电影| 香蕉久久aⅴ一区二区三区| 亚洲欧美成人一区二区在线电影| 亚洲视频一区在线播放| 亚洲一二三四区不卡| 欧美色图亚洲激情| 国内精品伊人久久久久影院对白| 精品无码国产一区二区三区av| 欧美日韩精品在线一区| 91精品久久久久久蜜桃| 久草免费在线视频| 俺去了亚洲欧美日韩| 亚洲区小说区图片区| 91精品视频网| 男操女视频网站| 亚洲欧美日韩成人高清在线一区| www.啪啪.com| 国产一区二三区| 波多野结衣天堂| 亚洲精品裸体| 亚洲高清乱码| 里番精品3d一二三区| 91精品国产综合久久香蕉最新版| 手机在线观看av| 日韩中文字幕精品视频| 国产浮力第一页| 欧美特级限制片免费在线观看| 亚洲精品视频在线观看免费视频| 亚洲欧美一区二区三区孕妇| 手机看片日韩av| 91啦中文在线观看| 韩国一区二区三区四区| 卡一卡二国产精品| 一本久道综合色婷婷五月| 亚洲黄色av| 亚洲欧美日韩国产成人综合一二三区| 欧美日韩一区二区三区四区不卡| 亚洲www永久成人夜色| 国产欧美在线观看免费| 清纯唯美亚洲综合| sm久久捆绑调教精品一区| 九九精品在线视频| 国产日产一区二区| 久久久久www| 国产高清视频在线| 亚洲国产精品一区二区久| 高潮毛片7777777毛片| 欧美一区二区大片| 91福利在线观看视频| 欧洲av在线精品| 波多野结衣午夜| 在线免费观看不卡av| 国产精品视频123| 欧美日韩视频在线| 国产a∨精品一区二区三区仙踪林| 亚洲免费av高清| 永久看片925tv| 一区二区三区不卡在线观看 | 日韩伦理视频| 相泽南亚洲一区二区在线播放| 日韩高清影视在线观看| 久久福利电影| 美女少妇全过程你懂的久久| 久久久久久国产精品mv| 免费视频亚洲| 婷婷久久青草热一区二区| 波多野结衣在线观看一区二区三区| 国产在线欧美日韩| 盗摄系列偷拍视频精品tp| 精品毛片久久久久久| 欧美男gay| 一区二区不卡视频| 国产大片一区| 欧美人与动牲交xxxxbbbb| 狠狠综合久久| 国产中文字幕视频在线观看| 亚洲高清自拍| 国产妇女馒头高清泬20p多| 国产精品免费看| 亚洲国产高清av| 国产一区二区三区av电影| 潘金莲一级淫片aaaaaaa| 成人看片黄a免费看在线| aa片在线观看视频在线播放| 久久亚洲综合色| 国产一区二区三区四区五区六区| 国产精品无遮挡| 男的操女的网站| 午夜精品一区二区三区电影天堂| 中文字幕一区二区人妻视频| 91精品综合久久久久久| 男人的天堂a在线| 亚洲欧洲激情在线| av在线影院| 18性欧美xxxⅹ性满足| 欧美影视资讯| 9a蜜桃久久久久久免费| 蜜桃一区二区| 欧美日韩一区二区视频在线| 午夜激情久久| 黄色免费视频大全| 秋霞影院一区二区| 国产原创剧情av| 国产精品女主播av| 日本一级一片免费视频| 欧美日韩在线观看一区二区 | heyzo高清中文字幕在线| 热久久99这里有精品| 精品视频一区二区三区| 日本公妇乱淫免费视频一区三区| 66视频精品| 欧洲熟妇精品视频| 成人av电影在线网| 国精产品视频一二二区| 亚洲午夜精品网| 91精品人妻一区二区三区果冻| 亚洲福利精品在线| 国产成人在线视频免费观看| 国产a级全部精品| 国产香蕉精品| 在线一区日本视频| 午夜亚洲影视| 手机精品视频在线| 久久蜜桃av一区精品变态类天堂| 在线观看成人毛片| 欧美私人免费视频| 欧美日本韩国一区二区| 久久久久www| 在线观看特色大片免费视频| 欧美激情网友自拍| 久久电影天堂| 视频一区二区三| 免费成人小视频| 黑人と日本人の交わりビデオ| 色噜噜狠狠成人网p站| 免费观看成年在线视频网站| 国产999精品视频| 精品理论电影在线| 亚洲精品怡红院| 欧美国产一区二区| 国产91av在线播放| 中国china体内裑精亚洲片| 国产激情久久| 超碰在线免费观看97| 国产老肥熟一区二区三区| 五月天丁香激情| 欧美精品一区二区三区一线天视频 | 欧美精品久久久久久久久久久| 成人午夜电影久久影院| 日韩精品一区二区av| 亚洲毛片在线免费观看| 日韩电影免费观| 一区视频二区视频| 国产自产v一区二区三区c| 美国黄色小视频| 精品国产sm最大网站| 九色porny丨国产首页在线| 久久精品二区| 蜜臀va亚洲va欧美va天堂 | 国产二区视频在线观看| 国产精品美女久久久久久免费 | 久久久久久久久久久91| 欧美日韩一区二区三区不卡视频| 日本精品www| 国产精品欧美精品| 亚洲国产精品无码久久| 欧美一区二区三区免费视| 精品一区电影| 麻豆网站免费观看| 精品久久久在线观看| 日韩成人影视| 国产一区二区三区黄| 久久字幕精品一区| 中文字幕在线观看2018| 亚洲国产欧美自拍| 中文字幕系列一区| 老司机午夜免费福利视频| 99麻豆久久久国产精品免费| 伊人久久国产精品| 欧美精品久久久久久久久久| 亚洲尤物av| 国产精品二区视频| 色94色欧美sute亚洲线路一久| 国产传媒在线播放| 免费精品视频一区二区三区| 精品在线播放免费| 特黄视频免费看| 欧美伦理91i| 久久99精品久久久久久园产越南| 激情成人在线观看| 一本大道av伊人久久综合| 欧洲精品二区| 在线观看免费91| 91免费视频大全|