Терминология / соглашение об именах для операций с очередями / API? - PullRequest
6 голосов
/ 29 мая 2009

«Очередь», или FIFO, является одной из наиболее распространенных структур данных и имеет собственные реализации во многих языках и средах. Однако, кажется, что нет единого мнения относительно того, как должны называться основные операции с очередями. Опрос нескольких популярных языков показывает:

  • Python: положить / получить
  • C #, Qt: enqueue / dequeue
  • Ruby, C ++ STD: push / pop
  • Java: добавить / удалить

Если нужно реализовать очередь (скажем, на какой-то встроенной платформе, у которой уже нет собственной реализации очереди), какое соглашение об именовании будет лучшим? Enqueue / dequeue, кажется, наиболее явный, но многословный; put / get является кратким, но не дает никаких подсказок относительно характера операций FIFO; push / pop предлагает операции со стеком вместо операций с очередями.

Ответы [ 8 ]

4 голосов
/ 29 мая 2009

Я вроде педант, поэтому я бы пошел с enqueue/dequeue.

Хотя add/next имеет определенную привлекательность.

Просто для того, чтобы решить проблему немного подробнее, в Perl это push/shift. :)

2 голосов
/ 29 мая 2009

push / pop совершенно неверно для fifo, поскольку это операции стека (первый в последнем выходе).

очередь может относиться как к объекту, так и к операции, поэтому она немного перегружена, и удаление из очереди может вызвать путаницу, поскольку она обычно используется для ссылки на двустороннюю очередь.

put / get - кратко, очевидно и универсально (не предполагает реализацию и может использоваться для всех видов очередей / списков / коллекций) - что не нравится?

1 голос
/ 29 мая 2009

Я, наверное, назову его push_back и pop_front.

0 голосов
/ 25 июля 2014

Мне нравится Entail и Behead. Не для всех, хотя. Или «со старым», «со старым». И тогда для нас, юго-западных стран, есть битва и дефанг. Но мой любимый графический. Стрелка вправо для входа и затем Стрелка вправо для выхода.

0 голосов
/ 29 ноября 2013

Pop / push звучит неправильно, так как предлагает структуру данных стека вместо очереди.

Чтобы добавить что-то новое к предложениям: мои учителя всегда использовали in и out на доске.

0 голосов
/ 18 сентября 2009

Мне нравятся enqueue и dequeue, но печатать их - отстой. Поэтому в своих структурах Queue (как C ++, так и Java) я назвал функции enQ и deQ:)

0 голосов
/ 29 мая 2009

Добавление / удаление имеет то преимущество, что вы можете легко переходить из очереди в другую структуру данных.

Например, хранение состояний в очереди и в стеке определяет разницу между поиском по ширине и по глубине.

0 голосов
/ 29 мая 2009

Добавление / удаление звучит как наиболее логичный из используемых, особенно если вы намереваетесь, чтобы его мог прочитать человек, незнакомый со структурой или языком (легче понять).

Push / Pop будет следующим в моем рейтинге из-за личных предпочтений.

Сначала идут Put / Get.

Enqueue / Dequeue - последний, потому что я действительно ненавижу букву Q.

...