[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üş]