gpt4 book ai didi

C++ - 具有下限/上限的循环数组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:21 25 4
gpt4 key购买 nike

我想创建类似于双链表(但使用数组)的东西,它适用于下限/上限。

一个典型的圆形阵列可能是这样的:

next = (current + 1) % count;
previous = (current - 1) % count;

但是将下限/上限正确地合并到其中的数学算法是什么?

  • 0(下限项1)
  • 1
  • 2(上限项1)
  • 3(下限项2)
  • 4(上限项2)

这样:

-> next on index 2 for item 1 返回 0

-> 项目 1 的索引 0 上的上一个返回 2

-> next on index 4 for item 2 返回 3

-> 项目 2 的索引 3 上的上一个返回 4

谢谢!

注意:不能使用外部库。

最佳答案

一般的数学术语:

next === current + 1 (mod count)
prev === current - 1 (mod count)

其中 === 是“一致”运算符。将其转换为模数运算符,它将是:

count = upper - lower
next = ((current + 1 - (lower%count) + count) % count) + lower
prev = ((current - 1 - (lower%count) + count) % count) + lower

您可以自行找出每个项目的上限和下限。您可以将其存储在二叉树中以便快速检索。也许我不明白你的问题。

(请注意,这假设 lower < upper,并且 lower > 0)

关于C++ - 具有下限/上限的循环数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/608097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com