Zawsze myślałem, że „głowa” kolejki jako następny element do przeczytania, i nigdy tak naprawdę nie kwestionowałem tego użycia. Tak więc napisana przeze mnie biblioteka list połączonych, która służy do utrzymywania kolejek, skodyfikowała tę terminologię: mamy list1_head
makro, które pobiera pierwszy element; podczas korzystania z tej biblioteki w kolejce będzie to pierwszy element do usunięcia.
Ale nowy programista w zespole przyzwyczaił się do kolejkowania zaimplementowanego na odwrót. Opisał, że kolejka zachowuje się jak pies: wkładasz głowę i zdejmujesz ogon. To dość sprytny opis, który wydaje mi się, że jego użycie musi być bardziej rozpowszechnione i nie mam podobnie sugestywnego opisu mojego preferowanego użycia.
Sądzę, że są dwa powiązane pytania: 1, co oznacza dla ciebie „głowa” kolejki? i 2, dlaczego używamy słowa „głowa” do opisania tego pojęcia?
źródło
Odpowiedzi:
Wchodzisz z tyłu kolejki i wychodzisz z przodu. W większości społeczeństw oznaczałoby to, że głowa jest przodem, a przedmioty są usuwane z głowy.
Javadoc dla kolejki wydaje się zgodzić z klasycznej definicji (czyli oryginalny jeden):
źródło
To, co ludzie w Stanach Zjednoczonych zwykle nazywają linią, tak jak w przypadku poczty, ludzie w innych krajach anglojęzycznych nazywają się kolejką. Tak więc Amerykanom łatwiej jest zachować prostą terminologię, zastępując „kolejkę” „kolejką”. Innymi słowy, kiedy jesteś na czele lub z przodu linii, jesteś następnym, który zostanie wezwany.
źródło
Obie konwencje są w powszechnym użyciu. Z mojego doświadczenia, mówiąc ogólnie o kolejkach, element głowy jest kolejnym, który wychodzi z kolejki, a ogon jest miejscem, w którym elementy wchodzą do kolejki. Jest to zgodne z codziennym używaniem języka angielskiego - ustawiamy się w kolejce z tyłu, a następne, które ma zostać podane, znajduje się z przodu lub z przodu. (A jeśli tniesz, to dla ciebie jest na końcu linii!)
Jednak gdy kolejka (inaczej FIFO) jest implementowana jako bufor pierścieniowy , warunki są zwykle odwracane, ponieważ używana część bufora pierścieniowego przypomina węża krążącego po okręgu. Zakładając, że wąż porusza się do przodu, głowa jest oczywiście końcem prowadzącym ruch, który jest także końcem, na którym wkładane są przychodzące przedmioty.
źródło