Ich hatte immer gedacht, dass der "Kopf" einer Warteschlange das nächste zu lesende Element ist, und diese Verwendung nie wirklich in Frage gestellt. Eine Bibliothek mit verknüpften Listen, die ich geschrieben habe und die zum Verwalten von Warteschlangen verwendet wird, hat diese Terminologie kodiert: Wir haben ein list1_head
Makro, das das erste Element abruft; Wenn Sie diese Bibliothek in einer Warteschlange verwenden, ist dies das erste zu entfernende Element.
Ein neuer Entwickler im Team war es jedoch gewohnt, Warteschlangen umgekehrt implementieren zu lassen. Er beschrieb eine Warteschlange als ein Hund: Sie setzen am Kopf ein und entfernen am Schwanz. Dies ist eine kluge Beschreibung, die meiner Meinung nach weiter verbreitet sein muss, und ich habe keine ähnlich aussagekräftige Beschreibung meiner bevorzugten Verwendung.
Also, ich denke, es gibt zwei verwandte Fragen: 1, was bedeutet der "Kopf" einer Warteschlange für Sie? und 2, warum verwenden wir das Wort "Kopf", um dieses Konzept zu beschreiben?
quelle
Antworten:
Sie treten hinten in die Warteschlange ein und verlassen sie von vorne. In den meisten Gesellschaften bedeutet dies, dass der Kopf die Vorderseite ist und die Gegenstände vom Kopf entfernt werden.
Der Javadoc for Queue scheint mit der klassischen Definition (dh Ihrer ursprünglichen) übereinzustimmen:
quelle
Was Leute in den Vereinigten Staaten gewöhnlich eine Leitung nennen, wie in der Sache, in der Sie bei der Post stehen, nennen Leute in anderen englischsprachigen Ländern eine Warteschlange. So ist es für Amerikaner einfacher, die Terminologie klar zu halten, wenn Sie "Warteschlange" durch "Zeile" ersetzen. Mit anderen Worten, wenn Sie sich im Kopf oder vor der Leitung befinden, sind Sie der nächste, der angerufen wird.
quelle
Beide Konventionen sind allgemein gebräuchlich. Meiner Erfahrung nach kommt bei Warteschlangen im Allgemeinen als Nächstes das Element head aus der Warteschlange, und am Ende treten Elemente in die Warteschlange ein. Dies steht im Einklang mit dem alltäglichen englischen Sprachgebrauch - wir stellen uns hinten in die Schlange und der nächste, der serviert wird, ist vorne oder am Kopf. (Und wenn Sie schneiden, ist es für Sie ganz hinten in der Zeile!)
Wenn jedoch eine Warteschlange (auch als FIFO bezeichnet) als Ringpuffer implementiert ist , werden die Begriffe normalerweise umgekehrt, da der verwendete Teil des Ringpuffers einer Schlange ähnelt, die sich in einem Kreis bewegt. Vorausgesetzt, die Schlange bewegt sich vorwärts, ist der Kopf natürlich das Ende, das die Bewegung führt, und das ist auch das Ende, an dem eingehende Gegenstände eingefügt werden.
quelle