如題 要存儲大量的同一種類型的數據,比如類指針。由於數組不支持動態擴展,鏈表隨機讀取效率又太低 ,感覺都不合適


瀉藥。

至少兩種方案供你選擇:(平衡的)binary search tree,以及skip list !

對,skip list,skip list,skip list,skip list

重要的事情說100遍!(這裡的100是二進位)。

當然,除此之外還有其他的選擇么?有啊,看我以後出的書:深入解析高級數據結構

好像沒提到順序遍歷?

如果確定不需要順序遍歷的話,那顯然是hash map嘛。

如果需要順序遍歷的話,有兩個方案:1:二叉樹(rbt/bst/btree……);2:帶雙鏈的hash map(可參考python/php數組、mc的帶lru的hash map等實現)。

數組的特點是快速隨機訪問

鏈表的特點是快速插入刪除

同時具有同等 訪問/插入刪除 效率的數據結構理論上是不存在的但是我看你的說法

由於數組不支持動態擴展,鏈表隨機讀取效率又太低 ,感覺都不合適

動態擴展+隨機訪問,你可能需要的是vector?


PHP的array,就是結合了數組和hash表的優點


你需要BST
HASH TABLE

哈希表,讀取操作的時間複雜度跟數組一樣是O(1),插入刪除和鏈表的時間複雜度一樣是O(1)。


推薦閱讀:
相关文章