我想存储少量(少于 255 个)具有恒定大小(a c char
)并能够执行以下操作的项目:
将一个值附加到任意位置,并让其他项保留它们之前的顺序。
删除一个项目并让其他项目保留它们的顺序(如上)。
查找项目的下一个和上一个。
我试过使用一个数组并创建一个函数来添加一个值,方法是将它后面的所有项目向前移动一个位置。删除也会发生同样的事情,但效率太低了。当然,我不介意必须使用一个图书馆,只要它随时可用且免费。
最佳答案
- 数组 - 访问:O(1),插入:O(n)
- 双链表 - 访问 O(n),上一个/下一个:O(1),插入(*):O(1)
- 存储子节点数量的 RB 树:所有操作的复杂度为 O(log n)。
(*):需要先遍历链表才能到达位置(O(n))。
注意:不,数组并不凌乱,实现起来真的很简单。同样如您所见,根据使用情况,它可能非常高效。
根据元素的数量,以及您对数组实现的评论,您应该坚持使用数组。
关于c - 使用什么数据结构来模拟一个可以在任何位置添加数据的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257595/