我需要合并两个双链表,但不是按它们的值(列表不排序)。 我想获得一个列表,其中包含两个节点中的所有节点,但是按它们在内存中的显示顺序排列。根据内存位置对两个链表进行排序
也许这个形象可以帮助更多: http://img140.imageshack.us/i/drawing2.png/
是否有任何的算法(最好是一快一),可以做这样的合并? 也许这有点帮助:
- 列表的开始节点总是在其他节点之前。
- 一个列表最多可以有8192个节点。
- 我知道节点在内存中的位置,因为这些列表跟踪大块内存中的空闲位置(用于内存分配器)。
- 我用C++工作。
在此先感谢!
您的要求使这个声音不像一个链表。为什么节点的上限?为什么要分配大块? – 2009-06-16 15:00:55
这是内存分配器的一部分。一个内存块有32KB,这个“列表”记录了这个块的哪些位置已被释放(一个用于拥有该块的线程释放的对象,一个用于其他线程)。你说得对,这实际上并不是链表。一个“节点”是一个单独的32位数字,下半部分表示Next,上一个上一个,用距离块开始的距离表示,因为块的地址是已知的,所以我不需要存储真正的指针并保存节点的最大数量是32KB/4个字节= 8192个节点 – 2009-06-16 15:36:48