c - C 中的 "Circular"for 循环

标签 c for-loop circular-list

我对以这样一种方式迭代列表很感兴趣,即我可以从任何位置开始并通过上升到末尾来迭代整个列表,然后循环回到开头并迭代到起始位置.

假设我想对保证有 4 个元素的数组执行此操作: char array[4] = {'a', 'b', 'c', 'd'}

我在构造一个 for 循环时遇到困难,这样我就可以从“a”开始,然后循环 abcd,或者从“b”开始,然后循环 bcda,或者从 d 开始,然后循环 dabc,等等。

我认为 for 循环的初始部分类似于 i = startingPosition。

我认为 for 循环的递增部分类似于 i = (i+1) % 4。这样,从索引 2 开始,例如,将上升到 3,然后是 0,然后是 1,等等.

中间的“终止”条件应该是什么?

for(i = startingPosition; ???; i = (i+1)%4)

谢谢!

最佳答案

对循环控制使用正常迭代,然后调整索引模大小:

for (i = 0; i < size; i++) {
    int index = (i + startingPosition) % size;
    // Do stuff with array[index]
}

关于c - C 中的 "Circular"for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601002/

相关文章:

c - nm 实用程序输出中符号大小的输出格式是什么

C 程序每次打印 0.00000 但返回正确答案

Scala - 查找列表当前元素的确切索引

java - 在这种情况下,为什么我不能说 variable.array?

java - 单节点java链表中存储多个变量

c++ - 用C++打印循环链表?

c - 在结构错误中指向取消引用

c - 解决错误 'Address of stack memory associated with local variable returned'

JavaScript for 数组中字符串的循环

c - 带有生成的 C 代码的 DWARF DI?