我认为您可以使用双重多链表和两个哈希表。
- 队列列表的一部分
- 按标签对节点进行分组的另一部分
- 一个用于通过键访问节点的哈希表
- 另一个通过标签访问节点的哈希表
Python 中的示例(对不起……)
插入一个元素:
items_table['item_key'] = new_item
my_queue.tail.next = new_item
new_item.previous = my_queue.tail
my_queue.tail = new_item
new_item.next_by_tag = tags_table['item_tag'] #head of tag's list
tags_table['item_tag'].previous_by_tag = new_item
tags_table['item_tag'] = new_item
按键删除元素:
item = key_table['node_key']
item.next.previous = item.previous
item.previous.next = item.next
item.next_by_tag.previous_by_tag = item.previous_by_tag
item.previous_by_tag.next_by_tag = item.next_by_tag
del item
按标签删除元素:
def remove_elements_by_tag(tag_head):
if tag_head == None:
return
else:
remove_elements_by_tag(tag_head.next_by_tag)
tag_head.next.previous = tag_head.previous
tag_head.previous.next = tag_head.next
类似的东西。希望能帮助到你。