線性表
順序表
順序表是在計(jì)算機(jī)內(nèi)存中以[數(shù)組]的形式保存的線性表机杜,是指用一組地址連續(xù)的[存儲單元]依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu)极颓。
線性表采用順序存儲的方式存儲就稱之為順序表。順序表是將表中的結(jié)點(diǎn)依次存放在計(jì)算機(jī)內(nèi)存中一組地址連續(xù)的[存儲單元]中涝缝。
特點(diǎn):
(1)在順序表中,各個(gè)表項(xiàng)的邏輯順序與其存儲的物理順序一致譬重,即第 i 個(gè)表項(xiàng)存儲于第 i 個(gè)物理位置(1 < i < n)
(2)對順序表中的所有表項(xiàng)拒逮,即可以進(jìn)行順序的訪問,也可以隨機(jī)的訪問臀规,也就是說滩援,既可以從表的第一個(gè)表項(xiàng)開始逐個(gè)訪問表項(xiàng)
也可以按照表項(xiàng)的序號(下標(biāo))直接的訪問。
(3)無需為表示結(jié)點(diǎn)間的邏輯關(guān)系而增加額外的存儲空間塔嬉,存儲利用率提高玩徊。
(4)可以方便的存儲表中的任一結(jié)點(diǎn),存儲速度快谨究。
鏈表
鏈表是一種物理[存儲單元]上非連續(xù)恩袱、非順序的[存儲結(jié)構(gòu)],[數(shù)據(jù)元素]的邏輯順序是通過鏈表中的[指針]鏈接次序?qū)崿F(xiàn)的胶哲。鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成畔塔,結(jié)點(diǎn)可以在運(yùn)行時(shí)動態(tài)生成。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲[數(shù)據(jù)元素]的數(shù)據(jù)域,另一個(gè)是存儲下一個(gè)結(jié)點(diǎn)地址的[指針]域澈吨。 相比于[線性表][順序結(jié)構(gòu)]把敢,操作復(fù)雜。
特點(diǎn):
(1)可以方便的進(jìn)行擴(kuò)充棚辽。
(2)可以方便的刪除和插入技竟。
由于順序表:
1)在表中插入新元素或刪除無用元素時(shí),為了保持其他元素的相對次序不變屈藐,平均需要移動一半元素榔组,運(yùn)行效率低
2)由于順序表要求占用連續(xù)的空間,如果預(yù)先進(jìn)性存儲分配联逻。則當(dāng)表長度變化較大時(shí)搓扯,難以確定合適的存儲空間帶大小,若
按可能達(dá)到的最大的長度預(yù)先分配表的空間包归,則容易造成一部分空間長期的限制而得不到充分的利用锨推,若事先對表中的空間估計(jì)不足
則插入操作可能是表長超過預(yù)先的內(nèi)存而造成內(nèi)存溢出,但如果采用指針的方式定義數(shù)組公壤,在程序運(yùn)行時(shí)動態(tài)的分配內(nèi)存换可,一旦需要
就可以分配他,這樣可以擴(kuò)充內(nèi)存厦幅,但是是時(shí)間開銷比較大
因此這就可以采用鏈表很好的解決沾鳄。