正如標題所暗示的,我有通過雙向鏈表迭代。唯一的問題是我必須遍歷「n」個元素。如何遍歷C中的雙向鏈表中的n個元素?
例如,如果我給定的列表,1 3 2 2 1 1,I必須遍歷向左或向右根據值我在這樣:
1 - > 3 - > 1 - > 1。我可以移動與列表中的值相同的值。由於我從1開始,我可以向左或向右移動1個元素(只能向右移動)。當我降落在3我可以向左或向右移動3元等
while (temp->next != NULL) {
//traverse n elements left or right
}
如果我總是剛剛穿越每次1個元素是那麼容易,因爲
temp = temp->next;
如果有人可以解釋根據節點的值遍歷'n'元素的策略,這將非常感激。
編輯:你只能去的方向,如果有在這個方向足夠的元素。所以在1 - > 3的情況下,你只能在3之後向右。
只是在另一個while循環遍歷一遍.. – Ankur
只是一個細節:在'1的情況下 - > 3 - > ...'爲你展示,你可以去合適的人來'3'。現在你可以左轉或右轉。但是如果你離開了,你會去嗎?還是你停在'1'?另外,對於雙向鏈表,每個節點需要兩個指針:「下一個」和「前一個」。根據當前節點的值,只需循環遍歷連續的「下一個」或「前一個」指針即可。 – lurker
對不起,我應該提到,如果在那個方向上有足夠的元素,你只能朝着方向前進。所以你根本不能離開,因爲沒有足夠的元素。 – Cameron