資料結構-連結串列
資料結構-連結串列
連結串列是一系列的儲存資料元素的單元通過指標串接起來形成的,因此每個單元至少有兩個域,一個域用於資料元素的儲存,另一個或兩個域是指向其他單元的指標。這裡具有一個資料域和多個指標域的儲存單元通常稱為節點。
1.單向連結串列
單向連結串列只有一個指標域,在整個節點中資料域用來儲存資料元素,指標域用於指向下一個具有相同結構的節點
單向連結串列中,每個節點的資料域都是通過一個Object類的物件引用來指向資料元素,與陣列類似,單向連結串列中的節點也具有一個線性次序,即如果節點a1的next引用指向節點a2,則a1就是a2的直接前驅,a2是a1的直接後續。只能通過前驅節點找到後續節點,而無法從後續節點找到前驅節點。
特點:資料元素的儲存對應的是不連續的儲存空間,每個儲存節點對應一個需要儲存的資料元素。每個節點是有資料域和指標域組成。元素之間的邏輯關係通過儲存節點之間的連結關係反映出來。
邏輯上相鄰的節點物理上不必相鄰。
優點:1.插入、刪除靈活。 2.有元素才會分配結點空間,不會有閒置的結點。
缺點:1.比順序儲存結構的儲存密度小
2.查詢結點時鏈式儲存要比順序儲存慢
2.雙向連結串列
要在單向連結串列中找到某個節點的前驅節點,必須從連結串列的頭節點出發依次向後尋找,但是需要O(n)時間。為此可以擴充套件單向連結串列的節點結構,使得通過一個節點的引用,不但能夠訪問其後續節點,也訪問前驅節點。擴充套件單向連結串列節點結構的方法是,在單連結串列節點結構中新增加一個域,該域用於指向節點的直接前驅節點。該連結串列稱為雙向連結串列。雙向連結串列可以從兩個方向遍歷。
在使用雙向連結串列實現連結表時,為使程式設計更加簡潔,使用帶兩個啞元節點的雙向連結串列來實現連結表。其中一個是頭節點,另一個是尾節點,都不存放資料元素,頭節點的pre為空,尾節點的next為空。
3.連結串列和陣列的區別
3.1區別
1.陣列靜態分配記憶體,連結串列動態分配記憶體
2.陣列在記憶體中是連續的,連結串列是不連續的
3.陣列利用下標定位,查詢的時間複雜度是O(1),連結串列通過遍歷定位元素,查詢的時間複雜度是O(N)
4.陣列插入和刪除需要移動其他元素,時間複雜度是O(N),連結串列的插入或刪除不需要移動其他元素,時間複雜度是O(1)。
3.2 陣列的優點和缺點
優點:1.隨機訪問性比較強,可以通過下標進行快速定位
2.查詢速度快
缺點:1.插入和刪除的效率低,需要移動其他元素。
2.會造成記憶體浪費,因為記憶體是連續的,所以在申請陣列的時候必須規定其記憶體的大小,如果不合適,就會造成記憶體的浪費。
3.記憶體空間要求高,建立一個陣列,必須要有足夠的連續記憶體空間
4.陣列的大小是固定的,在建立陣列的時候已經規定好,不能動態擴充。
相關文章
- 資料結構 - 連結串列資料結構
- 連結串列-資料結構資料結構
- 資料結構--連結串列資料結構
- 資料結構—連結串列資料結構
- 資料結構-單連結串列、雙連結串列資料結構
- JavaScript資料結構--連結串列JavaScript資料結構
- 資料結構之「連結串列」資料結構
- 資料結構之連結串列資料結構
- Java版-資料結構-連結串列Java資料結構
- JavaScript資料結構 之 連結串列JavaScript資料結構
- 資料結構學習--連結串列資料結構
- 資料結構:跳躍連結串列資料結構
- js資料結構--連結串列(likedList)JS資料結構
- 資料結構基礎 連結串列資料結構
- 資料結構之連結串列【上】資料結構
- 資料結構之連結串列操作資料結構
- 資料結構——雙向連結串列資料結構
- 資料結構04——單連結串列資料結構
- JAVA資料結構之連結串列Java資料結構
- 資料結構之單連結串列資料結構
- 資料結構:雙向連結串列資料結構
- JS資料結構(四)——連結串列JS資料結構
- 前端資料結構--線性結構-連結串列前端資料結構
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- Redis資料結構—連結串列與字典的結構Redis資料結構
- Redis資料結構—連結串列與字典Redis資料結構
- 資料結構之迴圈連結串列資料結構
- 資料結構之雙向連結串列資料結構
- 核心中的連結串列資料結構資料結構
- 資料結構連結串列筆試題資料結構筆試
- 資料結構-線性表、連結串列資料結構
- 資料結構實驗之連結串列三:連結串列的逆置資料結構
- 資料結構實驗之連結串列五:單連結串列的拆分資料結構
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構