タイトルが示すように、二重にリンクされたリストを反復処理する必要があります。唯一の問題は、「n」個の要素を反復処理する必要があることです。
たとえば、1 3 2 2 1 1 のリストが与えられた場合、現在の値に応じて左または右に反復する必要があります。
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 しか移動できません。