我需要合併兩個雙鏈表,但不是按它們的值(列表不排序)。 我想獲得一個列表,其中包含兩個節點中的所有節點,但是按它們在內存中的顯示順序排列。根據內存位置對兩個鏈表進行排序
也許這個形象可以幫助更多: 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