PHP面試常考之數據結構——鏈表的概念

你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。

本週(2019.3.18至3.22)的一三五更新的文章如下:

週一:PHP面試常考之數據結構——鏈表的概念
週三:PHP面試常考之數據結構——棧和隊列
週五:PHP面試常考之數據結構——
自己整理了一篇“PHP如何實現鏈表?”的文章,關注公衆號:“琉憶編程庫”,回覆:“鏈表”,我發給你。

一、鏈表

鏈表(Linked list)是一種常見的基礎數據結構,是一種線性表,但是並不會按線性的順序存儲數據,而是在每一個節點裏存到下一個節點的指針(Pointer)。
使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。但是鏈表失去了數組隨機讀取的優點,同時鏈表由於增加了結點的指針域,空間開銷比較大。

鏈表有很三種不同的類型:單向鏈表,雙向鏈表以及循環鏈表。

二、單向鏈表

單向鏈表包含兩個域,一個信息域和一個指針域。這個鏈接指向列表中的下一個節點,而最後一個節點則指向一個空值。
如圖:
clipboard.png


三、雙向鏈表

每個節點有兩個連接:一個指向前一個節點,(當此“連接”爲第一個“連接”時,指向空值或者空列表);而另一個指向下一個節點,(當此“連接”爲最後一個“連接”時,指向空值或者空列表)
如圖:
clipboard.png


四、循環鏈表

在一個循環鏈表中,首節點和末節點被連接在一起。這種方式在單向和雙向鏈表中皆可實現。要轉換一個循環鏈表,你開始於任意一個節點然後沿着列表的任一方向直到返回開始的節點。再來看另一種方法,循環鏈表可以被視爲“無頭無尾”。這種列表很利於節約數據存儲緩存,假定你在一個列表中有一個對象並且希望所有其他對象迭代在一個非特殊的排列下。指向整個列表的指針可以被稱作訪問指針。

clipboard.png


自己編寫的《PHP程序員面試筆試寶典》《PHP程序員面試筆試真題解析》書籍,已在各大電商平臺銷售,兩本可以幫助你更快更好的拿到offer的書。

圖片描述
更多PHP相關的面試知識、考題可以關注公衆號獲取:琉憶編程庫

clipboard.png

對本文有什麼問題或建議都可以進行留言,我將不斷完善追求極致,感謝你們的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章