Data structures 如何设计一个数据结构来存储无限的数据你可以说无限的数据总是以递增的顺序

Data structures 如何设计一个数据结构来存储无限的数据你可以说无限的数据总是以递增的顺序,data-structures,Data Structures,我必须设计一个数据结构,支持数以十亿计的数据插入,这些数据插入总是以递增的顺序进行,确保插入、删除和搜索操作的复杂性降至最低 假设数据定义为 typedef struct data { int a; int b; }data; 其中b总是在增加 我已经将DS实现为单个块中1000个数据的动态列表,并带有下一个块指针。e、 g typedef struct block { int size; // curr element count. int

我必须设计一个数据结构,支持数以十亿计的数据插入,这些数据插入总是以递增的顺序进行,确保插入、删除和搜索操作的复杂性降至最低

假设数据定义为

typedef struct data
     {
      int a; 
      int b;
}data; 
其中b总是在增加

我已经将DS实现为单个块中1000个数据的动态列表,并带有下一个块指针。e、 g

typedef struct block
{
   int size; // curr element count.
   int capacity; //1000 elements.
   data* pArr;   // malloc 1000 data elements.
   struct block* pNext;
}block;
我的数据结构在搜索和插入方面很好,但在删除数据后它不可重用,重建成本很高


我正在寻找更好的DS实现。

这是一个非常模糊的问题,您的标题令人困惑。你应该试着把你的问题归结为一些简单的问题,这是你问题的核心,如果可能的话,解释一下你为了自己解决这个问题所做的研究和尝试。删除项目的频率是多少?如果不经常,您可以只使用数组数组,并将项目标记为已删除。插入是O(1)(只是附加到列表中)。搜索是一种二进制搜索,以确定项目所在的块,然后在该块中搜索项目。删除是搜索,然后将项目标记为已删除。如果你最后有很多空位,那么你必须不时地重建结构,以消除死角。@JimMischel谢谢,你完全理解了我的问题。为了更清晰,我对这个问题进行了编辑,但当数据量变得巨大时,重建成本会很高。正在寻找更有效的方法。我不推荐块的链接列表。有了10亿件物品,你就有了100万块1000件物品。相反,我建议使用
块的数组
结构,并为每个块添加
min
max
值。这样,您可以对块进行二进制搜索,以确定哪个块包含该项,然后对单个数组进行二进制搜索。我还建议你把你的积木弄大一些。您最好是每个项目有1000个区块,而不是每个项目有1000个区块。当然,当计数超过容量时,您必须不时重新分配区块数组,但区块数组应该相对较小。重建不需要完全重写结构。您应该能够想出一种方法,在填充率低于某个阈值时组合相邻块,并删除变为空的块。