Java數據結構和算法(一)線性結構

Java數據結構和算法(一)線性結構

數據結構與算法目錄(http://www.javashuo.com/article/p-qvigrlkr-da.html)html

線性表 是一種邏輯結構,相同數據類型的 n 個數據元素的有限序列,除第一個元素外,每一個元素有且僅有個直接前驅,除最後一個元素外,每一個元素有且僅有一個直接後繼。java

1、基本概念

線性表具備如下特色:面試

  • 元素個數有限
  • 邏輯上元素有前後次序
  • 數據襟型相同
  • 僅討論元素間的邏輯關係

線性表分類

(1) 數組和鏈表算法

選項 數組 鏈表
讀取 O(1) O(n)
插入 O(n) O(1)
刪除 O(n) O(1)

從上表能夠看出數組的讀取複雜度爲 O(1),插入和刪除爲 O(n),鏈表則剛好相反。即數組讀快寫慢,鏈表讀慢寫快。數組

數組的優勢:一是隨機訪問性強;二是查找速度快。
數組的缺點:一是插入和刪除效率低;二是可能浪費內存;三是內存空間要求高,必須有足夠的連續內存空間;四是數組大小固定,不能動態拓展。數據結構

鏈表的優勢:一是插入刪除速度快;二是內存利用率高,不會浪費內存;三是大小沒有固定,拓展很靈活。
鏈表的缺點:一是不能隨機查找,必須從第一個開始遍歷,查找效率低。數據結構和算法

(2) 單鏈表、雙向鏈表和循環鏈表指針

單鏈表和雙向鏈表的區別在於單鏈表的每一個節點只保存後繼節點,而雙向鏈表即保存了後繼節點也保存了前驅節點。而循環鏈表的第一個節點的指針指向最後一個節點,最後一個節點的指針指向第一個節點,循環鏈表又分爲循環單鏈表和循環雙鏈表。htm

單鏈表和雙向鏈表

基本概念:數組和鏈表的區別,單鏈表,雙向鏈表和循環鏈表單鏈表基本操做實戰之單鏈表反轉,單鏈表取中間值實戰之合併兩個有序鏈表面試真題:奇數位升序,偶數位降序鏈表排序面試真題:單鏈表實現歸併排序blog


天天用心記錄一點點。內容也許不重要,但習慣很重要!

相關文章
相關標籤/搜索