我們使用雙鏈表數據結構來存儲一些無序數據(數據本身是無序的,但是鏈接列表中的節點順序是相關的)。此數據結構上的一個常見操作是NodeBeforeNode(節點N1,節點N2),它在列表中給出兩個節點指針,並確定它們中的哪一個在另一個之前。使用快速節點順序查詢的鏈接列表
此操作需要線性時間,因爲它需要遍歷列表以查找其他元素,這非常緩慢。爲了加快速度,我們已經緩存了節點本身中每個節點的序號,並根據需要刷新了這個緩存。但是,刷新緩存是線性的,而修改列表並訪問緩存的操作往往非常緩慢。
我在尋找加快此行爲的建議。我基本上需要一個數據結構,其允許在恆定的或對數時間所有以下操作:
- 插入(後或節點之前)
- 刪除一個節點的
- NodeBeforeNode
燦任何人都會提出一個像支持相同結構的鏈接列表?
謝謝!
謝謝你。這是我最初嘗試的 - 使用基於中序編號的next和previous指針製作AVL樹。它工作得很好,但插入一個元素列表或刪除N個元素的成本太高。 – Ujjwal