从数组中的任意位置开始读取

时间:2011-02-14 20:27:01

标签: algorithm

我想知道是否有办法从数组中的任意位置开始读取。例如。如果我有一个大小为10的数组,它开始从第4位读取。那么它应继续从位置5, 6, 7, 8, 9, 0, 1, 2, 3读取

我对标签不确定,所以如果选择了错误标签,请为我更改。

4 个答案:

答案 0 :(得分:5)

是的,您可以使用大多数语言中编写为%的{​​{3}}进行索引:

x = list[i % list.length]

当您到达列表末尾而不是尝试索引越界时,这将为您提供所需的环绕效果。

这假定从0开始编制索引。如果使用基于1的索引,则必须在模运算的结果中添加一个。

答案 1 :(得分:1)

offset = 4;
for(i=0; i<n; i++)
    cout << x[(i+offset)%n] << ' ';

答案 2 :(得分:0)

这取决于“list”的含义。传统上在计算机科学中,“列表”通常表示“链表”。在这种情况下,您必须遍历列表才能访问特定元素。

如果您需要/希望能够有效地从任意位置开始阅读,您可能希望避免使用链接列表,但您可以(轻松)获得的确切替代方案将因编程语言,库等而异。 '正在使用。

编辑:对于数组,它通常是微不足道的 - 只需直接指定起始位置,并在除以数组大小后取余数。

答案 3 :(得分:0)

一个选项是创建列表circular(就像他们在Linux内核中一样)。