[Powered by Google Translate] [Queue]
[Chris Gerber, Harvard Universiteti]
Bu CS50.TV, CS50 edir]
Elementlərinin sifariş toplanması saxlanılması üçün bir faydalı data strukturu sıra edir.
Elementləri xaric etmək lazımdır zaman istifadə olunur
onlar əlavə edildi eyni qaydada kimi.
Bu konsepsiya ilk out, ilk üçün bir kisaltmasidir olan FIFO kimi istinad edilir.
Bu görüntüləmək yardım üçün, şəkil faydalı ola bilər
bir mağaza bir checkout xətti.
Insanlar gələcək, onlar xəttin arxa gözləyin.
The kassir, sonra ön müştərilərə xidmət növbə çəkir
sonra bir anda xətt bir çıxış etdi.
Informatika, biz başçısı kimi queue qarşısında baxın
və quyruq kimi geri.
Biz bir proqram bu istifadə edə bilərsiniz zaman nümunəsi
sinif təhsil üçün waitlist edir.
Oturacaq sinfində mövcud olmaq kimi,
gözləmə siyahısına başçılıq şəxs sinif qeyd imkanı təmin edilir.
>> A sıra hər hansı bir kolleksiya istifadə edərək inşa edilir
belə bir sıra və ya əlaqəli siyahısı məqsədilə data saklar.
Növbədə olan maddələr saxlamaq üçün toplanması ilə yanaşı,
biz də növbə sonunda elementlər əlavə etmək üçün bir üsul lazımdır
olan enqueuing adlanır
və başqa sıraya rəhbəri bir maddə aradan qaldırılması üçün
olan dequeuing adlanır.
Bu sıraya cari uzunluğu qayıtmaq üçün başqa bir metodu daxil tez-tez faydalı
habelə sıra boş olub olmadığını kontrol etmək üsulu kimi.
Biz C integers bir sıra həyata necə baxaq,
elementlərin toplanması üçün bir sıra istifadə edir.
Birincisi, biz dəyişənlərin keçirilməsi queue deyilən bir quruluş yaratmaq.
Biz integers bir sabit ölçüsü 0 index array istifadə edəcək
elementləri saxlamaq üçün.
Biz də dəyişən adlı baş daxildir
ki, növbə rəisi hazırda ki element göstəricisi saklar.
Üçüncü dəyişən, uzunluğu adlanan istifadə olunacaq
serialın ilə elementlərin sayı takip.
Alternativ olaraq, bir dəyişən adlı quyruq istifadə edə bilər
serialın son sahəsində element qeyd etmək.
Biz bir daha kod yazmaq, əvvəl
Bizim dizayn cəhd edək.
Uzunluğu 0 boş bir sıra başlamaq edək
baş 0 qurmaq ilə.
İndi edək enqueue 4 dəyərlər - 6, 2, 3, 1.
Uzunluğu indi, 4 olacaq
və baş 0 qalacaq.
>> Biz bir dəyər dequeue ne olur?
Biz, 3 uzunluğu azaldır
, 1 rəhbəri təyin
və dəyəri 6 qaytarın.
Bu kodu bu kimi baxmaq bilər.
Burada biz, dequeue funksiyası var
və element üçün göstərici - q - hansı sıra bir pointer edir
hansı bir növü int edir.
Birinci biz, bu 0 çox emin olmaq üçün növbə müddəti yoxlamaq
dequeued üçün bir element olduğunu təmin etmək.
Sonra, mövqe rəhbəri, elementləri array baxmaq
və yerdə dəyəri element dəyəri müəyyən edilmişdir.
Sonra biz növbəti index olmaq rəhbəri dəyişmək
% Qabiliyyəti.
Sonra 1 sıraya müddəti azaldır.
Nəhayət, biz dequeue uğurlu olduğunu göstərir doğru qayıdın.
Yenə dequeue varsa, uzunluğu, 2 olacaq
rəhbəri həmçinin, 2 olacaq
və qaytarılması dəyəri 2 olacaq.
>> Biz belə bir 7 kimi bir dəyər enqueue ne olur?
Biz queue sonunda idi ki,
biz serialın element 0 dəyəri ətrafında kesmek və saxlamaq lazımdır.
Riyazi, bu uzunluq əlavə ilə təmsil oluna bilər
baş indeksi
və növbə gücü istifadə edərək modulus həyata.
Burada 4% 4 olan 2 +2, edir
olan 0 deyil.
Biz bu funksiya kod bu ideya tərcüməsi.
Burada biz, enqueue bölümünə bax
q - hansı sıra bir pointer edir -
və tam olan element enqueued üçün edir.
Gələn əmin olun ki, queue potensialının
Növbədə cari uzunluğu çox hələ çoxdur.
Sonra, biz elementləri sıra element saxlamaq
indeksi ilə olan baş + uzunluğu% sıraya tutumu ilə müəyyən edilir.
Biz sonra, 1 növbədə uzunluğu artırmaq
və sonra enqueue funksiyası uğurlu olduğunu göstərir doğru qayıdın.
>> Biz qeyd etdiyiniz iki funksiyaları ilə yanaşı,
iki əlavə funksiyaları var.
Birincisi, isempty funksiyası
Növbədə bir pointer götürür
və uzunluğu 0 olduğunu təsdiqləyirlər.
İkinci, uzunluğu funksiyası
da sıraya bir pointer edir
və struct cari uzunluğu qaytarır.
Bu qısa xülasə bir sıra biri mümkün həyata nümayiş etdirdi.
Bu həyata məhdudiyyətlər biri
Növbədə sabit maksimum ölçüsü var ki.
Biz queue aça bilər daha çox elementlər əlavə etmək üçün cəhd edin,
biz tələb ignore və element düşmək üçün lazım ola bilər
və ya səhv bir növü qayıtmaq tercih edə bilərsiniz.
Deyil, bir sıra daha çox bağlı siyahısını istifadə edərək,
dinamik ölçüsü queue daha asan olardı.
Lakin, biz, bir bağlı siyahı elementləri birbaşa çıxışı yoxdur bəri
biz quyruq takip yoxsa,
biz başa hər zaman almaq üçün bütün bağlı siyahı scan olardı.
Biz də başqa data type bir sıra istifadə edə bilər
structs kimi daha kompleks elementlərin sıralarında yaratmaq.
Bir sinif waitlist bizim misal geri düşüncələri
bu strukturların fərdi tələbələr təmsil bilər.
>> My name Chris Gerber və bu CS50 edir.
[CS50.TV]
Və gəlirlər - >> Daha bir zaman.
Və qeyd etmək doğru qayıdıb - növbədə uğurlu olmuşdur.
-% Sıraya tutumu -
Bu edit oyuncaq olacaq. [Gülüş]