Проектирование структуры данных (БД), позволяющее дублировать данные - PullRequest
0 голосов
/ 18 июня 2020

Некоторое время я гуглил и очень удивлен, узнав, что мне трудно найти DS, который я хочу.

действия просты: 'i' для вставки, 'd' для удаления, 's' для поиск в структуре данных.

Например: i 3 / i 5 / d 3 / i 5 / s 4 /

...

БД должна иметь возможность сохранять повторяющиеся данные, и когда производится удаление (дубликата), случайные данные будут удалены. Вставка НЕ ​​перекрывает, а просто добавляет.

Например. Если я использую массив,

1 2 3 3 4 5 4:

Если я хочу 'i 3', 3 можно вставить где угодно. Не имеет значения порядок.

Если я хочу 'd 4', 4 можно удалить случайным образом, и не имеет значения, станет ли результат: 1 2 3 3 5 4 или 1 2 3 3 4 5

Если я хочу «1», достаточно сказать мне, существует элемент или нет. Он не должен сообщать мне индекс. В этом случае будет показано «да».

Я построил двоичное дерево RedBlack и знал, что в дереве RB нельзя вставлять повторяющиеся данные. Array and Lists кажется, что производительность довольно низкая. А нормальное дерево, как многие знают, может быть несбалансированным.

Какие хорошие DS также могут сохранять / удалять / искать повторяющиеся данные? Я рассматриваю таблицу Ha sh, но, по крайней мере, я понимаю, когда вводятся повторяющиеся данные, старые заменяются на новые: (

И язык C.

...