為什麼鍊錶讀取慢刪除卻很快?

時間 2021-05-11 19:39:26

1樓:Jerry銀銀

我想說的是:你的理解沒有錯!!

在學習資料結構時,我也有過這個疑惑,我相信很多同學也都有。希望我能用言簡意賅的語言消除你的這個疑惑!

我想,如果能想到以上兩層意思,那問題所描述的疑惑就不難消除了!

2樓:

首先,對於鍊錶來說,我們只存其 head 節點的位址。

在查詢時,一般函式引數會給定要查詢的節點存的值(而非節點指標)。每次都需要從 head 節點順著鏈條乙個節點乙個節點的尋過去,以比對節點存的資料是否與給定的值相等。

總結來說:

在分析乙個函式的複雜度時,一定要搞清楚函式簽名(引數和返回值)是什麼;

要理解乙個資料結構時,一定要分清哪些是淨核(payload,對於鍊錶來說,就是每個節點存的值),哪些是為了維持資料結構額外存的控制資訊(比如說每個節點中的下乙個節點的指標)。

3樓:水星記

首先要搞清楚鍊錶的特點。

在這裡假設你清楚了。

鍊錶讀取第k個元素,必須要遍歷這個鍊錶,直到找到第k個元素為止,而陣列就不同了,陣列可以直接陣列名[k-1] 就可以找到這個元素。這是讀取。

為什麼Rust寫個鍊錶都那麼難?

傳統的幻想書屋 Rust寫個使用unsafe的鍊錶還是蠻簡單的,跟C 難度差不多。鍊錶這個東西天生就跟Rust的借用規則衝突,乙個鍊錶節點在操作的時候同時被多個指標擁有和修改是很常見的事,更別說雙向鍊錶這種自帶迴圈引用的資料結構了。如果不使用unsafe和指標,會有很多不必要的開銷,而且也很難寫。所...

為什麼硬碟的寫入速度比讀取速度慢?

Iris 這事就和原理有關係,因為機械硬碟和固態硬碟的原理不一樣,這事得分開說。首先是機械硬碟。機械硬碟的原理就是乙個磁碟,上面乙個磁臂,磁臂頭上有倆磁頭,乙個讀磁頭,乙個寫磁頭,寫磁頭比讀磁頭寬。磁軌怎麼儲存資料?靠的就是磁性。磁軌裡有無數個磁粒,乙個磁粒可以儲存乙個二進位制位。扇區知道吧?一般來...

為什麼C鍊錶節點要用malloc函式動態分配大小?

程佳 用靜態陣列一樣可以做鍊錶,鍊錶的指標不一定就非要放記憶體位址,陣列下標一樣可以當指標。intnode 4 int next 4 int head 0 這也是鍊錶。 邱昊宇 並不一定要動態分配鴨 include struct node int main struct node node b st...