1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Queue] 2 00:00:02,000 --> 00:00:05,000 [Chris Gerber, Harvard Universiteti] 3 00:00:05,000 --> 00:00:07,000 Bu CS50.TV, CS50 edir] 4 00:00:07,000 --> 00:00:11,000 Elementlərinin sifariş toplanması saxlanılması üçün bir faydalı data strukturu sıra edir. 5 00:00:11,000 --> 00:00:14,000 Elementləri xaric etmək lazımdır zaman istifadə olunur 6 00:00:14,000 --> 00:00:16,000 onlar əlavə edildi eyni qaydada kimi. 7 00:00:16,000 --> 00:00:20,000 Bu konsepsiya ilk out, ilk üçün bir kisaltmasidir olan FIFO kimi istinad edilir. 8 00:00:20,000 --> 00:00:23,000 Bu görüntüləmək yardım üçün, şəkil faydalı ola bilər 9 00:00:23,000 --> 00:00:25,000 bir mağaza bir checkout xətti. 10 00:00:25,000 --> 00:00:28,000 Insanlar gələcək, onlar xəttin arxa gözləyin. 11 00:00:28,000 --> 00:00:31,000 The kassir, sonra ön müştərilərə xidmət növbə çəkir 12 00:00:31,000 --> 00:00:34,000 sonra bir anda xətt bir çıxış etdi. 13 00:00:34,000 --> 00:00:37,000 Informatika, biz başçısı kimi queue qarşısında baxın 14 00:00:37,000 --> 00:00:39,000 və quyruq kimi geri. 15 00:00:39,000 --> 00:00:41,000 Biz bir proqram bu istifadə edə bilərsiniz zaman nümunəsi 16 00:00:41,000 --> 00:00:44,000 sinif təhsil üçün waitlist edir. 17 00:00:44,000 --> 00:00:46,000 Oturacaq sinfində mövcud olmaq kimi, 18 00:00:46,000 --> 00:00:50,000 gözləmə siyahısına başçılıq şəxs sinif qeyd imkanı təmin edilir. 19 00:00:50,000 --> 00:00:53,000 >> A sıra hər hansı bir kolleksiya istifadə edərək inşa edilir 20 00:00:53,000 --> 00:00:57,000 belə bir sıra və ya əlaqəli siyahısı məqsədilə data saklar. 21 00:00:57,000 --> 00:01:00,000 Növbədə olan maddələr saxlamaq üçün toplanması ilə yanaşı, 22 00:01:00,000 --> 00:01:02,000 biz də növbə sonunda elementlər əlavə etmək üçün bir üsul lazımdır 23 00:01:02,000 --> 00:01:04,000 olan enqueuing adlanır 24 00:01:04,000 --> 00:01:07,000 və başqa sıraya rəhbəri bir maddə aradan qaldırılması üçün 25 00:01:07,000 --> 00:01:09,000 olan dequeuing adlanır. 26 00:01:09,000 --> 00:01:14,000 Bu sıraya cari uzunluğu qayıtmaq üçün başqa bir metodu daxil tez-tez faydalı 27 00:01:14,000 --> 00:01:17,000 habelə sıra boş olub olmadığını kontrol etmək üsulu kimi. 28 00:01:17,000 --> 00:01:20,000 Biz C integers bir sıra həyata necə baxaq, 29 00:01:20,000 --> 00:01:23,000 elementlərin toplanması üçün bir sıra istifadə edir. 30 00:01:23,000 --> 00:01:27,000 Birincisi, biz dəyişənlərin keçirilməsi queue deyilən bir quruluş yaratmaq. 31 00:01:27,000 --> 00:01:30,000 Biz integers bir sabit ölçüsü 0 index array istifadə edəcək 32 00:01:30,000 --> 00:01:33,000 elementləri saxlamaq üçün. 33 00:01:33,000 --> 00:01:35,000 Biz də dəyişən adlı baş daxildir 34 00:01:35,000 --> 00:01:39,000 ki, növbə rəisi hazırda ki element göstəricisi saklar. 35 00:01:39,000 --> 00:01:42,000 Üçüncü dəyişən, uzunluğu adlanan istifadə olunacaq 36 00:01:42,000 --> 00:01:45,000 serialın ilə elementlərin sayı takip. 37 00:01:45,000 --> 00:01:48,000 Alternativ olaraq, bir dəyişən adlı quyruq istifadə edə bilər 38 00:01:48,000 --> 00:01:51,000 serialın son sahəsində element qeyd etmək. 39 00:01:51,000 --> 00:01:53,000 Biz bir daha kod yazmaq, əvvəl 40 00:01:53,000 --> 00:01:55,000 Bizim dizayn cəhd edək. 41 00:01:55,000 --> 00:01:58,000 Uzunluğu 0 boş bir sıra başlamaq edək 42 00:01:58,000 --> 00:02:02,000 baş 0 qurmaq ilə. 43 00:02:02,000 --> 00:02:11,000 İndi edək enqueue 4 dəyərlər - 6, 2, 3, 1. 44 00:02:11,000 --> 00:02:14,000 Uzunluğu indi, 4 olacaq 45 00:02:14,000 --> 00:02:17,000 və baş 0 qalacaq. 46 00:02:17,000 --> 00:02:20,000 >> Biz bir dəyər dequeue ne olur? 47 00:02:20,000 --> 00:02:24,000 Biz, 3 uzunluğu azaldır 48 00:02:24,000 --> 00:02:28,000 , 1 rəhbəri təyin 49 00:02:28,000 --> 00:02:33,000 və dəyəri 6 qaytarın. 50 00:02:33,000 --> 00:02:36,000 Bu kodu bu kimi baxmaq bilər. 51 00:02:36,000 --> 00:02:38,000 Burada biz, dequeue funksiyası var 52 00:02:38,000 --> 00:02:41,000 və element üçün göstərici - q - hansı sıra bir pointer edir 53 00:02:41,000 --> 00:02:44,000 hansı bir növü int edir. 54 00:02:44,000 --> 00:02:47,000 Birinci biz, bu 0 çox emin olmaq üçün növbə müddəti yoxlamaq 55 00:02:47,000 --> 00:02:50,000 dequeued üçün bir element olduğunu təmin etmək. 56 00:02:50,000 --> 00:02:54,000 Sonra, mövqe rəhbəri, elementləri array baxmaq 57 00:02:54,000 --> 00:02:58,000 və yerdə dəyəri element dəyəri müəyyən edilmişdir. 58 00:02:58,000 --> 00:03:01,000 Sonra biz növbəti index olmaq rəhbəri dəyişmək 59 00:03:01,000 --> 00:03:04,000 % Qabiliyyəti. 60 00:03:04,000 --> 00:03:07,000 Sonra 1 sıraya müddəti azaldır. 61 00:03:07,000 --> 00:03:12,000 Nəhayət, biz dequeue uğurlu olduğunu göstərir doğru qayıdın. 62 00:03:12,000 --> 00:03:19,000 Yenə dequeue varsa, uzunluğu, 2 olacaq 63 00:03:19,000 --> 00:03:24,000 rəhbəri həmçinin, 2 olacaq 64 00:03:24,000 --> 00:03:32,000 və qaytarılması dəyəri 2 olacaq. 65 00:03:32,000 --> 00:03:35,000 >> Biz belə bir 7 kimi bir dəyər enqueue ne olur? 66 00:03:35,000 --> 00:03:37,000 Biz queue sonunda idi ki, 67 00:03:37,000 --> 00:03:47,000 biz serialın element 0 dəyəri ətrafında kesmek və saxlamaq lazımdır. 68 00:03:47,000 --> 00:03:50,000 Riyazi, bu uzunluq əlavə ilə təmsil oluna bilər 69 00:03:50,000 --> 00:03:52,000 baş indeksi 70 00:03:52,000 --> 00:03:55,000 və növbə gücü istifadə edərək modulus həyata. 71 00:03:55,000 --> 00:04:00,000 Burada 4% 4 olan 2 +2, edir 72 00:04:00,000 --> 00:04:02,000 olan 0 deyil. 73 00:04:02,000 --> 00:04:05,000 Biz bu funksiya kod bu ideya tərcüməsi. 74 00:04:05,000 --> 00:04:08,000 Burada biz, enqueue bölümünə bax 75 00:04:08,000 --> 00:04:10,000 q - hansı sıra bir pointer edir - 76 00:04:10,000 --> 00:04:14,000 və tam olan element enqueued üçün edir. 77 00:04:14,000 --> 00:04:18,000 Gələn əmin olun ki, queue potensialının 78 00:04:18,000 --> 00:04:21,000 Növbədə cari uzunluğu çox hələ çoxdur. 79 00:04:21,000 --> 00:04:24,000 Sonra, biz elementləri sıra element saxlamaq 80 00:04:24,000 --> 00:04:30,000 indeksi ilə olan baş + uzunluğu% sıraya tutumu ilə müəyyən edilir. 81 00:04:30,000 --> 00:04:33,000 Biz sonra, 1 növbədə uzunluğu artırmaq 82 00:04:33,000 --> 00:04:39,000 və sonra enqueue funksiyası uğurlu olduğunu göstərir doğru qayıdın. 83 00:04:39,000 --> 00:04:42,000 >> Biz qeyd etdiyiniz iki funksiyaları ilə yanaşı, 84 00:04:42,000 --> 00:04:44,000 iki əlavə funksiyaları var. 85 00:04:44,000 --> 00:04:46,000 Birincisi, isempty funksiyası 86 00:04:46,000 --> 00:04:48,000 Növbədə bir pointer götürür 87 00:04:48,000 --> 00:04:51,000 və uzunluğu 0 olduğunu təsdiqləyirlər. 88 00:04:51,000 --> 00:04:53,000 İkinci, uzunluğu funksiyası 89 00:04:53,000 --> 00:04:55,000 da sıraya bir pointer edir 90 00:04:55,000 --> 00:04:58,000 və struct cari uzunluğu qaytarır. 91 00:04:58,000 --> 00:05:03,000 Bu qısa xülasə bir sıra biri mümkün həyata nümayiş etdirdi. 92 00:05:03,000 --> 00:05:06,000 Bu həyata məhdudiyyətlər biri 93 00:05:06,000 --> 00:05:08,000 Növbədə sabit maksimum ölçüsü var ki. 94 00:05:08,000 --> 00:05:11,000 Biz queue aça bilər daha çox elementlər əlavə etmək üçün cəhd edin, 95 00:05:11,000 --> 00:05:14,000 biz tələb ignore və element düşmək üçün lazım ola bilər 96 00:05:14,000 --> 00:05:17,000 və ya səhv bir növü qayıtmaq tercih edə bilərsiniz. 97 00:05:17,000 --> 00:05:20,000 Deyil, bir sıra daha çox bağlı siyahısını istifadə edərək, 98 00:05:20,000 --> 00:05:22,000 dinamik ölçüsü queue daha asan olardı. 99 00:05:22,000 --> 00:05:26,000 Lakin, biz, bir bağlı siyahı elementləri birbaşa çıxışı yoxdur bəri 100 00:05:26,000 --> 00:05:28,000 biz quyruq takip yoxsa, 101 00:05:28,000 --> 00:05:32,000 biz başa hər zaman almaq üçün bütün bağlı siyahı scan olardı. 102 00:05:32,000 --> 00:05:35,000 Biz də başqa data type bir sıra istifadə edə bilər 103 00:05:35,000 --> 00:05:39,000 structs kimi daha kompleks elementlərin sıralarında yaratmaq. 104 00:05:39,000 --> 00:05:42,000 Bir sinif waitlist bizim misal geri düşüncələri 105 00:05:42,000 --> 00:05:45,000 bu strukturların fərdi tələbələr təmsil bilər. 106 00:05:45,000 --> 00:05:48,000 >> My name Chris Gerber və bu CS50 edir. 107 00:05:48,000 --> 00:05:51,000 [CS50.TV] 108 00:05:51,000 --> 00:05:55,000 Və gəlirlər - >> Daha bir zaman. 109 00:05:55,000 --> 00:06:00,000 Və qeyd etmək doğru qayıdıb - növbədə uğurlu olmuşdur. 110 00:06:00,000 --> 00:06:03,000 -% Sıraya tutumu - 111 00:06:03,000 --> 00:06:06,000 Bu edit oyuncaq olacaq. [Gülüş]