2009-05-29 2 views
6

"キュー"(FIFO)は、最も一般的なデータ構造の1つであり、多くの言語とフレームワークでネイティブな実装をしています。しかし、基本的なキュー操作の名前付け方法については、ほとんど合意が得られていないようです。いくつかの一般的な言語の調査は示していますキュー操作/ APIの用語/命名規則

  • のPython:入れ/取得
  • C#の、Qtの:エンキュー/デキュー
  • ルビー、C++ STD:プッシュ/ポップ
  • のJava:追加/
  • を削除します

キューを実装する必要がある場合(ネイティブキューインプリメンテーションを持たない組み込みプラットフォームでは)、どのような命名規則が最適でしょうか? エンキュー/デキューは最も明示的に見えますが、言葉遣いです。 put/getは簡潔ですが、操作のFIFOの性質に関するヒントは提供されません。プッシュ/ポップは、キュー操作の代わりにスタック操作を示唆しているようです。

答えて

4

を嫌うので、私はPEDANTのようなものですので、私はenqueue/dequeueで行くと思い非常に最後のものです。

add/nextには一定の魅力がありますが、

もう少し問題をクラウド化するには、Perlではpush/shiftです。 :)

+0

なぜbish()bosh()も持っていないのはなぜですか?S TAOCPは多分紛争解決の参考資料ですか? –

+1

私は一般的な選択は 'enqueue(要素:Element):void'と' dequeue():Element'です。しかし、私は 'add(element:Element)'や 'next():Element'といったものを使うことができるのと同じくらい多くのDS/Algorithmクラスを書く傾向があります。 **そのようにして、実装者はDSの内部について知る必要が少なくなり、あなたはSOLIDからLiskov Substitution Principleを簡単に採用することができます**。それ以外の場合は、アダプタが必要ですが、私はこれのための規約を変更するだけです。 – Cody

1

おそらく、push_backpop_frontという名前になります。

+0

+1または上部/下部。より密かにメモリの用語 –

0

特に、構造や言語に慣れていない人が読みやすいようにするためには、最も論理的な音を追加/削除してください(理解しやすい)。

プッシュ/ポップは個人的な好みのために私のランキングの次になります。

次はPut/Getです。

エンキュー/デキューは、私が本当に手紙Q.

+0

私はちょうどEnqueueueueとタイプしたくありません。 –

2

これらはスタック(最初に最後に出た)操作であるため、push/popは間違っています。

キューはオブジェクトと操作を参照できるため、ビットが過負荷になり、デキューがダブルエンドキューを参照するためによく使用されるため、混乱の原因となります。

put/get - 短くて明白で一般的です(実装は想定されず、あらゆる種類のキュー/リスト/コレクションに使用できます)。

+1

+1私はこれに同意します。プッシュ/ポップはほとんどいつもスタックに関連付けられていますが、FIFOはありません –

+0

"get"は通常コレクションを変更しないので、私には "peek"と同じように見えます。 – Grault

0

追加/削除は、キューから別のデータ構造に簡単に変更できるという利点があります。

たとえば、キュ​​ーに状態を格納すると、スタックを格納すると、幅優先検索と深さ優先検索が異なります。

0

私はエンキューとデキューが好きですが、それらを入力することは嫌です。だから、私のキュー構造(C++とJavaの両方)で、関数名をenQとdeQに変更しました。

0

キューの代わりにスタックのデータ構造を示唆しています。

提案に新しいものを追加する:教師は常にinoutを黒板に使用しました。

0

私は手首や頭が好きです。しかし誰もがそうではありません。あるいは「新しいものと一緒に」「古いものと一緒に」そして、私たちのために南西部には、ベルタとデパンがあります。しかし私のお気に入りはグラフィカルです。のための右の矢印、そして、右の矢印は、外に出す。