Bir kuyrukta “kafa” hangi sondur?


18

Her zaman bir kuyruğun "başının" okunacak bir sonraki unsur olduğunu düşünmüştüm ve bu kullanımı asla gerçekten sorgulamamıştım. Bu yüzden, kuyrukları korumak için kullanılan, bağlantılı bir liste kitaplığı bu terminolojiyi kodladı: list1_headilk öğeyi alan bir makro var; bu kitaplığı kuyrukta kullanırken, bu kaldırılacak ilk öğe olacaktır.

Ancak ekipte yeni bir geliştirici, kuyrukların başka bir şekilde uygulanmasına alışıktı. Bir kuyruğu köpek gibi davranıyor olarak nitelendirdi: kafasına sokuyorsun ve kuyruğundan çıkarıyorsun. Bu, kullanımının daha yaygın olması gerektiğini düşündüğüm yeterince akıllı bir açıklama ve tercih edilen kullanımımın benzer şekilde uyarıcı bir açıklamasına sahip değilim.

Yani, sanırım, ilgili iki soru var: 1, bir kuyruğun "başı" sizin için ne ifade ediyor? ve 2, bu kavramı tanımlamak için neden "kafa" kelimesini kullanıyoruz?


1
"Bir kuyruğu köpek gibi davranmak olarak nitelendirdi" ... Kulağa eğlenceli bir adam gibi geliyor - Müşteriye yakın olmasına izin vermeyin.
NoChance

1
Bilmiyorum, ama uygulamanızı tahmin ederdim, köpek olanı değil.
Nisan'da Izkata

QUEUE ve STACK arasındaki fark hakkında bir başka iyi açıklama: http://pages.cs.wisc.edu/~mcw/cs367/lectures/stacks.html
Ythalo Rossy 15:18

Ayrıca, ders kitaplarında (tekli) bağlantılı liste genellikle yığın ve kuyruk gibi diğer veri yapılarından önce eklenir ve daha sonra bunlar bağlantılı liste yapısının üstüne inşa edilir (bu, bugün bu veri yapılarını oluşturmak için tercih edilen yol değildir çünkü önbellek özledim). Bağlantılı bir listenin genellikle bir baş işaretçisi (ilk öğeyi ifade eder) ve bir kuyruk işaretçisi (sonuncuya) bulunur; bu düzenlemede, kuyruk ucuna kafadan çıkarmak kolaydır - böylece, böyle bir FIFO kuyruğunda önden çıkarırsınız. Ancak bunun gerçekten bir iç uygulama detayı olduğuna dikkat edin.
Filip Milovanović

BTW, bunun kısmen dil ile ilgili bir şey olduğunu düşünün, ama aynı zamanda bir kuyruğun ne yaptığını nasıl kavramsallaştırdığımızla da ilgili. "Kuyruk" kelimesinin anlamını bilen veya bu metaforla (sırada bekleyen) kavramla tanışan çoğu insan için çıkış kısmı ön / kafadadır; Arkadaşınızın daha çok boru hattı gibi bir şey gibi kavramsallaştırdığından şüpheleniyorum, burada bir ucunda nesneleri itiyorsunuz (başlangıçta ya da bir anlamda "kafa") ve diğer uçta çıkıyorlar.
Filip Milovanović

Yanıtlar:


29

Kuyruğun arkasına girersiniz ve önden ayrılırsınız. Çoğu toplumda bu, başın ön olduğu anlamına gelir ve öğeler kafadan çıkarılır.

Kuyruk Javadoc (orijinal birini yani) klasik tanımına yaramış:

Kullanılan sipariş ne olursa olsun, sıranın başı, remove () veya poll () çağrısı ile kaldırılacak öğedir. Bir FIFO kuyruğunda, tüm yeni elemanlar kuyruğun kuyruğuna eklenir.


4
C ++ STL de aynı fikirde.
Fabio Ceconello

Ayrıca FIFO / LIFO için yaygın terminoloji, Kuyruk / Yığın'ın üst kısmından çıkarılmasıdır. Köpeğin üstü kuyruk değil baştır. :-D
Spencer Kormos

Görünüşe göre ilk soruyu cevapladınız, anladığım kullanımın geleneksel olduğu gerçekten de ... Referanslar için teşekkür ederim. Ama bana sıranın ön kısmına neden "kafa" denildiği demir kaplı değil ...
Aidan Cully

... peki köpeğin hangi ağzında eşyaları sıkıyoruz? ;)
ell

1
Bir köpeğin kuyruğu kuyruğun başıdır.
Caleb

8

Amerika Birleşik Devletleri'ndeki insanların yaygın olarak bir çizgi dediği şey, postanede durduğunuzda olduğu gibi, İngilizce konuşulan diğer ülkelerdeki insanlar da kuyruk derler. Dolayısıyla, "sıra" yerine "satır" koyarsanız Amerikalılar için terminolojiyi düz tutmak daha kolaydır. Başka bir deyişle, hattın başında veya önünde olduğunuzda, aranacak sonrakisiniz.


Belki bu daha çok İngilizce ile ilgili bir sorudur, çünkü ortaya çıkmış gibi görünen bir konu "neden cepheye kafa diyoruz?"
Aidan Cully

3
@AidanCully: çünkü bir vücuttaki kafa (dörtlü ve yatay olarak yönlendirilmiş diğer hayvanlarda) öne dönük veya ön taraftadır.
outis

Bu bizim Amerikalılar için mümkün olan en iyi açıklama.
andDevW

4

Her iki sözleşme de yaygın olarak kullanılmaktadır. Deneyimlerime göre, genel olarak kuyruklar hakkında konuşurken, başlık elemanı sıradan çıkan bir sonraki elemandır ve kuyruk, elemanların sıraya girdiği yerdir. Bu, günlük İngilizce kullanımıyla tutarlıdır; arkada sıraya gireriz ve sunulacak bir sonraki ön tarafta veya kafadadır. (Ve eğer kesersen, bu senin için çizginin arkasına!)

Bununla birlikte, bir kuyruk (aka FIFO) bir halka tamponu olarak uygulandığında , terimler tipik olarak tersine çevrilir, çünkü halka tamponunun kullanılan kısmı bir daire içinde dolaşan bir yılanı andırır. Yılanın ileri doğru hareket ettiği varsayılarak, kafa doğal olarak harekete önderlik eden sondur ve aynı zamanda gelen öğelerin yerleştirildiği sondur.


Linux çekirdeğinde , başların üzerine eklenen ve kuyrukta kaldırılan konvansiyonu kullanan dairesel tamponlardan bahsetmeye değer .
Craig McQueen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.