2009-05-29 52 views
6

「隊列」或FIFO是最常見的數據結構之一,在許多語言和框架中都有本地實現。但是,關於如何命名基本隊列操作似乎並沒有什麼共識。幾種流行的語言進行的調查顯示:隊列操作/ API的術語/命名約定?

  • 的Python:PUT/GET
  • C#,QT:入隊/出隊
  • 紅寶石,C++ STD:PUSH/POP
  • 的Java:添加/刪除

如果需要實現一個隊列(比如說,在一些沒有本地隊列實現的嵌入式平臺中),那麼什麼樣的命名約定是最好的?入隊/出隊似乎是最明確的,但是很羅嗦; put/get簡潔明瞭,但沒有提供關於操作FIFO特性的任何提示;推/流行似乎是建議堆棧操作,而不是隊列操作。

回答

4

我是怎樣的一個學究的,所以我會用enqueue/dequeue去。

雖然add/next有一定的吸引力。

爲了更好地解決這個問題,在Perl中它是push/shift。 :)

+0

爲什麼不只是有bish()bosh():S TAOCP也許是爭議解決的參考? – 2009-05-29 17:26:00

+1

我相信流行的選擇是`enqueue(element:Element):void`和`dequeue():Element`。不過,我傾向於使用`add(element:Element)`和`next():Element`來編寫儘可能多的DS /算法類,因爲這些方法也在其他DS /算法中共享。 **這樣一來,實施者就不需要知道DS的內部結構,並且可以更容易地使用SOLID的Liskov Substitution Principle **。否則,你只需要一個適配器,但我都是爲了改變這個規範的約定。 – Cody 2018-03-07 18:51:04

1

我可能將其命名爲push_backpop_front

+0

+1或頂部/底部。更接近內存術語 – 2009-05-29 17:22:29

0

添加/刪除聽起來像是最合乎邏輯的使用,特別是如果你打算讓它可能被不熟悉結構或語言的人閱讀(更容易理解)。

由於個人喜好,推送/流行音樂將在我的排名中位列第二。

Put/Get接下來。

入隊/出隊是最後一個,因爲我真的很討厭字母Q

+0

我只是不想一直輸入Enqueueueue。 – 2009-05-29 17:23:02

2

push/pop對於fifo來說顯然是錯誤的,因爲這些是棧(先進後出)操作。

隊列可以引用對象以及操作,所以有點過載,出隊會引起混淆,因爲它通常用於引用雙端隊列。

put/get - 簡短,明顯且通用(不假定實現,可用於各種隊列/列表/集合) - 有什麼不喜歡?

0

添加/刪除的優點是您可以輕鬆地從隊列更改爲另一個數據結構。

例如,將隊列中的狀態存儲到堆棧中會導致廣度優先搜索和深度優先搜索之間的差異。

0

我喜歡入隊和出隊,但輸入他們很爛。所以在我的隊列結構(包括C++和Java)中,我命名了函數enQ和deQ :)

0

彈出/彈出聲音錯誤,因爲它表示堆棧數據結構而不是隊列。

要添加新的建議:我的老師總是在黑板上使用inout

0

我喜歡需要和斬首。不適合每個人。或者「與新的一起」,「與舊的一起」。然後對於我們南西方人來說,這裏有喧譁和折磨。但我最喜歡的是圖形。右箭頭進入,然後右箭頭進入。