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