一、數(shù)據(jù)結(jié)構(gòu)基本操作,有時(shí)用&有時(shí)不用為什么
&其實(shí)是C++中的引用操作,比如一個(gè)函數(shù)void fun(int &a),若函數(shù)里面將a的值改變的,那么主函數(shù)中a也將改變,如果不加&,fun函數(shù)里再怎么操作,主函數(shù)中a都不會(huì)改變,就好比指針傳遞與值傳遞區(qū)別。
當(dāng)要改變指針本身的值時(shí), 需要使用指針的引用(*&)或者是二維指針, 在函數(shù)InitList()中, 就是想給實(shí)參L分配空間, 也就是讓實(shí)參指針L指向一塊新的空間(改變了指針L本身的值), 所以需要一個(gè)指針的引用。。。
DestoryList()中, 不需要改變指針L本身的值, 只是知道L的地址就行, 然后把這個(gè)指針?biāo)赶虻目臻g釋放掉, 如果在free()之后有L = NULL;這樣的語句, 還是需要用指針的引用(*&)的, 因?yàn)橐淖僉本身的值了。
延伸閱讀:
二、不同存儲(chǔ)結(jié)構(gòu)
順序存儲(chǔ)結(jié)構(gòu)
把邏輯上相鄰的元素存儲(chǔ)在物理位置上也相鄰的存儲(chǔ)單元中,
元素之間的關(guān)系可由:存儲(chǔ)單元的鄰接位置體現(xiàn)
優(yōu)點(diǎn):可以實(shí)現(xiàn)隨機(jī)存取,每個(gè)元素占用最少的存儲(chǔ)空間
缺點(diǎn):只能使用相鄰的一整塊存儲(chǔ)單元,會(huì)產(chǎn)生較多的外部碎片
鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
不要求邏輯上相鄰的元素在物理位置上也相鄰,
通過指針來表示元素之間的邏輯關(guān)系
優(yōu)點(diǎn):不會(huì)出現(xiàn)碎片現(xiàn)象,充分利用存儲(chǔ)單元
缺點(diǎn):每個(gè)元素因存儲(chǔ)指針而占有額外存儲(chǔ)空間,且只能實(shí)現(xiàn)順序存取
索引存儲(chǔ)結(jié)構(gòu)
在存儲(chǔ)元素信息的同時(shí),建立附加的索引表
索引表中每項(xiàng)稱為索引項(xiàng),索引項(xiàng)的一般形式(關(guān)鍵字,地址)
優(yōu)點(diǎn):檢索速度快
缺點(diǎn):附加的索引表額外占有存儲(chǔ)空間,增加和刪除數(shù)據(jù)時(shí)要修改索引表
散列存儲(chǔ)結(jié)構(gòu)
根據(jù)元素的關(guān)鍵字直接計(jì)算出該元素存儲(chǔ)地址,又稱哈希(Hash)存儲(chǔ)
優(yōu)點(diǎn):檢索、增加、刪除節(jié)點(diǎn)操作很快
缺點(diǎn):若散列函數(shù)不好,則會(huì)出現(xiàn)元素存儲(chǔ)單元的沖突,而解決沖突增加時(shí)間和空間開銷