c - 无指针双向圆阵算法

标签 c arrays algorithm circular-buffer

我有一个包含 26 个英文字母字符的数组。说:

char a[26] = ['a','b','c','d'.......so on till ....'z']

我需要以循环方式移动数组中的元素(可以顺时针或逆时针)。

我知道存在一种称为循环数组的数据结构,但它是单向的。

比如说,我想将数组中的每个元素向前移动 3 个元素,然后新数组应该是:

char new[26] = ['x','y','z','a','b'... and so on till 'w']

但是,我可能还想将元素向后移动 2 个元素,那么我的新数组应该是:

char new[26]=['c','d','e'....and so on... 'y','z','a','b']

所有这些都应该在不使用指针的情况下完成(因为我还没有阅读有关指针的内容)。

有没有办法实现这个?

我搜索了很多有关圆形数组的信息,但我从未意识到简单的数组可以如何用作圆形数组,并且可以向前和向后移动元素。有人可以告诉我是否有办法做到这一点?

数组大小是固定的。

我们正在用 C 进行编码

最佳答案

您只需对数组索引使用模数:

size_t index;
size_t move_index(int pos_or_neg_steps) {
    return (index + pos_or_neg_steps) % 26;
}

关于c - 无指针双向圆阵算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18688081/

相关文章:

c# - 跟踪和检测一系列缺失数据的技术(例如安全日志数据)

javascript - 如何知道javascript中的对象数组中是否有值?

c - 制作一个初学者 C 程序来根据年龄读取和排序学生

python - 矩阵乘以 numpy 矩阵数组

algorithm - 实现时间复杂度为 O(1) 的供电操作

c# - 在数组中查找升序重复对

c - 如何通读c中的文件列表

c - 如何用 C 语言编写 echo 程序?

c - 用C中的字符串重新分配会导致错误

python - 将 SWIG 与指向 C 结构中的函数的指针一起使用