用兩個陣列模擬鍊錶

2021-10-06 07:44:09 字數 1057 閱讀 8679

我們知道鍊錶中的每個節點有兩個部分,分別為資料域和指標域。我們可以用兩個陣列來模擬鍊錶中每個節點所對應的部分。

我們首先可以用乙個整形陣列data來存放序列中的數字,另乙個陣列right來 存放當前序列中每個元素右邊的元素在陣列data中的位置。

如下圖所示:

例如right[1]的值為 2,就表示當前序列中1號元素右邊的元素從放在 data[2] 中; 如果是 0,例如 right[9] 的值為 0,就表示當前序列中9號元素的右邊沒有元素。

現在需要在8前面插入乙個6,只需將6直接存放在陣列data的末尾即 data[10]=6。 接下來 將right[3]改為10,表示新序列中3號元素右邊的元素存放在data[10]中。再將right[10]改為4,表示新序列中10號元素右邊的元素存放在data[4]中。這樣我們通過right陣列就可以從頭到尾遍歷整個序列了(序列中每個元素的值都存放在對應的陣列data中),如下圖。

//初始化陣列right

for(i=

1;i<=n;i++

)//直接在陣列data的末尾增加乙個數

len++

;scanf

("%d"

,&data[len]);

//從鍊錶的頭部開始遍歷

t=1;

while

(t!=0)

t=right[t];}

//輸出鍊錶中所有的數

t=1;

while

(t!=0)

getchar()

;getchar()

;return0;

}

用陣列模擬鍊錶

用陣列模擬單鏈表資料結構課本上的單鏈表演算法,在建立每個結點時都需要new乙個空間,new函式耗時長,當結點數較多時,每個結點都需要new,這樣的演算法在題中容易超時。利用陣列模擬單鏈表可以防止超時問題 826.單鏈表 實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k...

leetcode 鍊錶兩個數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

如何查詢兩個陣列表

算是一次更深一些的思考吧,對於查資料表,通常都只有乙個 如果翻看資料手冊,就會看到資料表中對應的數值只是乙個典型值,而實際情況是感測器的值必定會在某個範圍內波動,對應乙個上限值和乙個下限值。通常使用這個典型值就可以了,方法就是這篇部落格 但如果需要查詢兩個資料表,分別是上限表和下限表,那該怎麼辦呢?...