簡單鍊錶如何實現查詢隨機位置。

2021-06-25 17:16:35 字數 424 閱讀 9868

原題:簡單的鍊錶結構擁有很好的插入,刪除節點效能, 但隨機定位(獲取鍊錶第n個節點)操作效能不佳, 請你設計一種改進型的鍊錶結構優化隨機定位操作的效能, 給出設計思路及其改進後隨機定位操作的時間複雜度。

解答:可以增加乙個與之對應的陣列,裡面存放相應位置的指標。這樣就可以真正的隨機訪問。但是這樣有幾個不便:1、增加了記憶體2、刪除和插入都得維護這個陣列,而陣列的插入和刪除效率很低3、題目要求的是設計一種改進型的鍊錶結構來優化隨機操作的效能

所以,採取如下結構

在這樣的結構下,a,d,g節點都要儲存他所對應的完全二叉樹的節點數目,遍歷樹時採用前序遍歷。這樣的話,如果要訪問第n個節點的話,很快就可以知道他在哪一棵樹中,然後前序遍歷這棵樹就可以了。

通過表關聯實現查詢

建資料庫students 建立三個 分別儲存學生,教師,課程資訊 mysql create table student key student int 5 not null auto increment,student name varchar 20 not null,primary key key...

如何實現查詢附近的人

問題 給定乙個使用者a,返回與此使用者相距小於d的所有使用者。支援geo的後端儲存有mongodb,redis等。那麼如果讓我們實現,我們應該怎麼做呢?思路 圍繞此使用者生成乙個圓形,半徑是d,返回所有被此園覆蓋的使用者。方法1 先求方,再求園。如果直接求園,每乙個使用者都要計算距離值,無法利用到索...

資料結構 PHP實現查詢表

基本演算法 假設有乙個陣列,需要找出某個值在該陣列中的位置。二分查詢 function bin sch array low high k elseif k array mid else return 1 順序查詢 function seq sch array n k if i n else 測試 a...