Как определяются push () ing и pop () ping? - PullRequest
12 голосов
/ 10 мая 2010

Я знаю, как работают методы push () и pop () в типичной реализации очереди / связанного списка, но я хочу знать, что вы на самом деле определяете как push или pop? Когда вы можете назвать метод push () / pop ()? Что делает метод insert () / add () в типичной реализации Tree не push ()?

Насколько я понимаю, push () ing означает размещение чего-либо в позиции, на которую указывает специальный указатель, а pop () ping элемента означает удаление некоторого объекта, на который указывает указатель, но это не так. четко определены. Или имя имеет значение вообще?

Ответы [ 13 ]

0 голосов
/ 10 мая 2010

Имена push и pop используются при разговоре о стеках. Стеки являются последними в первых (LIFO). Таким образом, имена указывают, что pop вернет последнее нажатие.

0 голосов
/ 10 мая 2010

Большая часть того, что вы спрашиваете, - это конвенция. Для очередей вы можете нажать или поставить в очередь. Вы увидите оба. Для стеков, вы увидите добавить или нажать. Там нет действительно жесткого и быстрого «правила» для этого. Если вы работаете на языке, который использует «push» в качестве соглашения, используйте «push». Наименование имеет значение, но только для удобства и здравого смысла. Просто убедитесь, что ваши имена соответствуют одному приложению или системе.

0 голосов
/ 10 мая 2010

Нажатие - это просто добавление элемента в начало (или конец) коллекции. Поппинг удаляет этот же элемент.

В Java интерфейс List имеет add (0, item) и remove (0). Это фактически параллели для push (item) и pop ().

Однако push и pop и стеки интересны своим специфическим поведением, и поэтому у многих есть специализированные структуры данных, которые делают push и popping особенно эффективными.

...