Один из подходов к этому, чтобы выполнить поиск грубой силы.
- Для каждого элемента, который вы ищете, если повторяется в списке.
- Если это так, вы удалите его
- и переходите к следующему.
Как вы видите, эти три шага могут быть закодированы довольно просто, смысл в том, чтобы сначала понять, делают ли они то, что вы хотите.
Это псевдокод для этих трех пунктов:
forEach( Element a : inList ) do
// e is the element we want to find repeated.
forEach( Element b : inList ) do
// b is the element in the list.
if( a == b ) then // repeated
inList.remove( a )
break;
endIf
endFor
endFor
Этот подход позволит вам удалить все повторяющиеся элементы.
Просто не забудьте удалить один элемент, вы должны убедиться, что не потеряете ссылку, которая у него есть. Так что если у вас есть:
n1 -> n2 -> n3
в какой-то момент вы должны иметь n1
и n2
, указывающие на n3
(таким образом, n1 сохраняет ссылку n2)
n1 -> n3 n2 ->n3
и затем удалите n2, который оставляет вас:
n1 -> n3
Теперь, как закодировать, что с вашей конкретной структурой данных - это задача, которую вы должны выполнить;)