在添加值时保持相同的数组大小

时间:2013-02-21 13:43:14

标签: c arrays

我试图想办法将命令历史记录保存在一个大小为[10]的数组中,并在保持其大小不变的情况下,始终显示最后10个命令。是否存在不涉及队列或列表的实现?也许是这样的,给阵列一些更多的空间,并填充命令,但打印不同的索引?我在Windows机器上使用C语言。

2 个答案:

答案 0 :(得分:2)

你想要一个circular buffer。有很多实现。

答案 1 :(得分:2)

只需将数组视为循环缓冲区,并将cur变量指向最近的条目。

  • 添加条目:

    cur = (cur + 1) % size;
    
  • 打印数组中的所有内容:

    printf("%d\n", cur);
    for (i = (cur + 1) % size; i != cur; i = (i + 1) % size)
        printf("%d\n", i);