0

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

4

2 回答 2

2

你想要一个循环缓冲区。周围有很多实现。

于 2013-02-21T13:45:55.960 回答
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);
    
于 2013-02-21T13:48:55.687 回答