上一篇博客簡單講述了一下兩種結構的概念這一篇博客主要想講述一下他們之間的區別
順序存儲結構與鏈式存儲結構的優缺點
1、###順序存儲結構
概念官方一點來說可以使用百度百科的介紹:順序存儲結構是存儲結構類型中的一種,該結構是把邏輯上相鄰的結點存儲在物理位置上相鄰的存儲單元中,結點之間的邏輯關系由存儲單元的鄰接關系來體現。
當然不得不說一般這種官方的解釋都是不太適合我的,所以用小甲魚的方式來說這個概念的話,簡單來說就是,用一段連續的地址存放數據元素,數據間的邏輯關系和物理關系相同。
優點1:存儲密度大,空間利用度高,比鏈式存儲節約空間
優點2:存儲操作上方便操作,順序支持隨機存取,查找會比較容易
缺點1:插入或者刪除元素時不方便,花費的時間更多
往順序線性表中插入數據
見下圖往B與C之間插入一個M,在插入之前我們需要將CD整體往后移一個位置,為M空出一個位置,再見M放入。
往順序線性表中刪除元素
與上面所說的插入其實挺像的,前者在插入位置后的元素都往后移,二一處則是向左移覆蓋掉要刪除的元素,需要注意的是,要將最后一個元素進行移除,可以參考下圖
2、鏈式存儲結構
概念:鏈式存儲結構,又叫鏈接存儲結構。在計算機中用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的).它不要求邏輯上相鄰的元素在物理位置上也相鄰.因此它沒有順序存儲結構所具有的弱點,但也同時失去了順序表可隨機存取的優點
優點1:插入或刪除時方便些,空間使用靈活
缺點1:存儲密度小,空間利用度低
缺點2:查找會相較順序存儲方式復雜一些,花費的時間會更多
往鏈式線性表中插入數據
(1)往鏈表的后方添加元素
這里我們先看圖,其實就是將想要插入的元素往鏈表的尾部插入,然后更新一下為節點tail的位置即可。
(2)往鏈表的頭部插入元素
今天我們的廖老師將這個內容的時候提到怎么一句話“誰想進來,誰就去找組織”看這個圖我想你應該可以理解這句話,首先第一步需要我們的“C”去找組織中的A,第二步是頭結點接到新元素C上。
往鏈式線性表中刪除數據
要想移除單向鏈表中的一個元素,首先我們得找到被移除結點的前驅的位置,比如是pre“A”。當前移除的元素是remove“B”,讓pre->next = remove->next, 然后再執行remove->next = nil。經過上面這些步驟,B就與鏈表脫離關系了。可參考我學習時看到的一篇博客
但是在百度上面看到怎么一句話
鏈式的要比順序的方便(這句話是不能這么說的,因為插入的話順序表也很方便,問題是順序表的插入要執行更大的空間復雜度,包括一個從表頭索引以及索引后的元素后移,而鏈表是索引后,插入就完成了)