配列内の任意の位置から読み取りを開始します

algorithm
配列内の任意の位置から読み取りを開始します

配列内の任意の位置から読み取りを開始する方法があるのだろうか。 E.g. サイズ10の配列があり、位置4から読み取りを開始する場合。 次に、位置「5、6、7、8、9、0、1、2、3」から読み取りを続行する必要があります

私はタグについて不確かだったので、間違ったタグを選んだ場合は、私のためにそれを変更してください。

  -1  0


ベストアンサー

はい、http://en.wikipedia.org/wiki/Modulo_operation [modulo operation]を使用してインデックスを作成できます。これは、ほとんどの言語で `%`として記述されています。

x = list[i % list.length]

これにより、範囲外のインデックスを作成するのではなく、リストの最後に到達したときに折り返すという望ましい効果が得られます。

これは、0ベースのインデックス付けを前提としています。 1ベースのインデックスを使用する場合、モジュロ演算の結果に1を追加する必要があります。

5


offset = 4;
for(i=0; i

1


「リスト」の意味によって異なります。 従来、コンピュータサイエンスでは、「リスト」は通常「リンクリスト」を意味します。 この場合、特定の要素に到達するためにリストを走査する必要があります。

任意の位置から効率的に読み取りを開始できるようにする必要がある場合は、リンクされたリストを避けたいかもしれませんが、使用している正確な代替手段は、使用しているプログラミング言語、ライブラリなどによって異なります。 。

編集:配列の場合、通常は簡単です-開始位置を直接指定するだけで、配列サイズで割った後に残りを取得します。

0


1つのオプションは、リストをhttp://isis.poly.edu/kulesh/stuff/src/klist/[circular]にすることです(Linuxカーネルで行うように)。

0


タイトルとURLをコピーしました