Предположим, что у меня есть стек, а его элементы - [1,2,3,3,2,1,1,5,5,4,5]. Верхний указатель стека указывает на элемент 1. Теперь i хотите удалить все повторяющиеся элементы, поэтому мой последний стек будет [1,2,3,4,5]. Как я могу это сделать, есть ли какой-либо алгоритм для этой операции. Какое минимальное количество стеков требуется для этой операции.Удалить дублирующий элемент из стека
ответ
Ну, у не указан какой-либо язык, поэтому я постараюсь дать некоторые шаги, чтобы сделать эту операцию на какой-то псевдо-языке:
Stack FunctionName(Stack paramStack)
{
Stack aux1 = param;
Stack aux2;
while (aux1.size() > 0)
{
StackElement eleAux = aux1.pop();
if (NotExist(aux2,eleAux))
{
aux2.push(eleAux);
}
}
while (aux2.size() > 0)
{
StackElement eleAux = aux2.pop();
aux1.push(eleAux);
}
}
Supose Стек представляет собой структуру данных стека (извините за redundacy), а StackElement представляет собой элемент стека. Функции «NotExist» проверяют только, существует ли какой-либо элемент в некотором стеке.
Надеюсь, что это поможет. ^^
Просьба указать указанный выше псевдокод на языке C или Python. –
Вы можете преобразовать это на нужный язык. Если u использует C, я полагаю, что вы используете массив для представления scripts данных для стека. Я не знаю Фитона. – Cold
Ответ @ColdHack отправляет второй стек на каждый элемент из первого стека, который может быть дорогостоящим при больших размерах стека. Первое, что пришло мне в голову, это использовать хэш-карту и поп каждое значение из стека искать ее на карте - если она уже там ничего не делает, если не положить ее и установить ключ в хэш-карте на значение из стек и значение в хэш-карте для индекса в стеке, а затем, когда сделано, сортируйте хэш-карту по значениям и просто поместите ее в стек. Если идея не ясна, я могу попытаться опубликовать некоторый общий код.
- 1. Удалить дублирующий элемент массива
- 2. jQuery удалить элемент из стека
- 3. Удаленный дублирующий элемент из списка
- 4. Как удалить дублирующий элемент в списке?
- 5. Как удалить старый элемент из стека?
- 6. Как удалить определенный элемент из стека?
- 7. Удалить дублирующий элемент из массива, проверив определенный ключ
- 8. Добавить() дублирующий элемент списка
- 9. Удалить дублирующий алгоритм
- 10. Найти дублирующий элемент из целого числа
- 11. удалить активность из стека
- 12. Удалить из стека деятельности
- 13. Удалить действия из стека
- 14. удалить ViewControllers из стека
- 15. MouseDragElementBehavior Оставляя дублирующий элемент за
- 16. Дублирующий элемент, отображающийся в DIV
- 17. Android ListView дублирующий onclicking элемент
- 18. Дублирующий элемент в выпадающем списке
- 19. Дублирующий элемент dom в javascript
- 20. Вставить и удалить элемент из стека ADT с помощью рекурсии
- 21. Как удалить элемент из стека, построенного с использованием массива?
- 22. удалить дублирующий код в java
- 23. Как найти элемент из стека?
- 24. Невозможно выскочить элемент из стека
- 25. Рекомендации по дизайну: Дублирующий элемент в RecyclerView
- 26. Android: удалить активность из стека
- 27. Удалить постоянный UIViewController из стека
- 28. Как удалить активность из стека
- 29. Удалить контроллеры из стека UINavigationController
- 30. удалить элемент из XML
Будучи пуристом, реальный стек, являющийся FILO, не позволит вам заглянуть в то, что находится в стеке, чтобы его удалить. Возможно, более простая реализация заключалась бы в том, чтобы сохранить список обработанных файлов, чтобы вы могли игнорировать элемент, когда вы его всплываете, если он уже обработан. Я делаю этот комментарий без каких-либо реальных знаний о том, чего вы пытаетесь достичь. – Bronumski
Есть ли причина, по которой вы не можете проверить наличие дубликатов при использовании стека? Каждый раз, когда вы выталкиваете значение, проверяйте список используемых значений. Если он существует в используемом списке, нажмите снова, пока вы не нажмете определенное значение. Добавьте отдельное значение в список. – tfitzger