1 00:00:00,000 --> 00:00:02,730 [Powered by Google Translate] [Bölmə 6: az Rahat] 2 00:00:02,730 --> 00:00:05,040 [Nate Hardison] [Harvard Universiteti] 3 00:00:05,040 --> 00:00:07,320 [Bu CS50 edir.] [CS50.TV] 4 00:00:07,320 --> 00:00:11,840 Bütün hüquqlar. Bölmə 6 xoş gəlmisiniz. 5 00:00:11,840 --> 00:00:14,690 Bu həftə biz bölməsində data strukturları söhbət etmək olacaq 6 00:00:14,690 --> 00:00:19,780 bu həftə problem spellr müəyyən əsasən çünki 7 00:00:19,780 --> 00:00:24,410 müxtəlif data struktur kəşfiyyat bütün dəstə edir. 8 00:00:24,410 --> 00:00:26,520 Siz problem dəsti ilə getmək olar müxtəlif yollarla bir dəstə var 9 00:00:26,520 --> 00:00:31,570 və haqqında bilmək daha data strukturları edə bilərsiniz daha sərin şeylər. 10 00:00:31,570 --> 00:00:34,990 >> Belə in başlamaq bildirin. Birinci biz blokları haqqında danışmaq olacaq 11 00:00:34,990 --> 00:00:37,530 biz danışmaq olacaq ki, yığın və növbə data strukturlar. 12 00:00:37,530 --> 00:00:40,560 Biz qrafik söhbət başlattığınızda Depo və sıralarında, həqiqətən faydalıdır 13 00:00:40,560 --> 00:00:44,390 İndi sağ qədər etmək fikrində deyilik edir. 14 00:00:44,390 --> 00:00:52,820 Lakin onlar CS böyük fundamental data qurumlarından biri anlamaq həqiqətən yaxşı deyilik. 15 00:00:52,820 --> 00:00:54,880 Problem set dəqiqləşdirilməsi ilə təsviri, 16 00:00:54,880 --> 00:00:59,260 yaxın kimi blokları haqqında siz qoparmaq, əgər danışıqlar 17 00:00:59,260 --> 00:01:05,239 Siz yemək zalı olan yeməkxana var ki, yemək qablar və xovlu 18 00:01:05,239 --> 00:01:09,680 yemək heyəti gəlir və onlar təmizlənmiş sonra, yemək qablar həyata qoyur Ü zaman 19 00:01:09,680 --> 00:01:12,000 onlar digər üst bir yığın. 20 00:01:12,000 --> 00:01:15,050 Və sonra uşaqlar, ərzaq almaq üçün gələndə 21 00:01:15,050 --> 00:01:19,490 onlar ilk üst biri qablar qoparmaq, o, aşağıdakı bir, o aşağıdakı biri. 22 00:01:19,490 --> 00:01:25,190 Belə ki, faktiki olaraq, yemək heyəti yazmaq ki, ilk tray off qəbul olur ki, son biridir. 23 00:01:25,190 --> 00:01:32,330 Yemək kadr qoymaq ki, son bir nahar üçün off qəbul olur ki, ilk biridir. 24 00:01:32,330 --> 00:01:38,100 Əgər siz artıq yoxdur, əgər problem set-nin Spec, siz, hansı yükləyə bilərsiniz 25 00:01:38,100 --> 00:01:46,730 biz bu cür struct istifadə yığını data stucture modelləşdirilməsi haqqında danışmaq. 26 00:01:46,730 --> 00:01:51,070 >> Beləliklə, biz burada var, nə bu, mühazirə təqdim nə kimi 27 00:01:51,070 --> 00:01:58,120 mühazirə istisna olmaqla, biz char * s fərqli olaraq ints bu təqdim etdi. 28 00:01:58,120 --> 00:02:06,250 Bu mağaza nə bir yığın olacaq? 29 00:02:06,250 --> 00:02:09,009 Daniel? Biz bu yığını hansı saxlanılması olunur? 30 00:02:09,009 --> 00:02:15,260 [Daniel] Strings? >> Biz məhz bu yığını ilə strings saxlanılması olunur. 31 00:02:15,260 --> 00:02:20,950 Siz bir yığın yaratmaq üçün lazımdır Bütün bir sıra edir 32 00:02:20,950 --> 00:02:23,920 xüsusi qabiliyyəti, bu halda ki, 33 00:02:23,920 --> 00:02:28,020 gücü bir daimi çünki bütün caps ilə olacaq. 34 00:02:28,020 --> 00:02:36,340 Və sonra sıra əlavə, biz izlemek üçün lazım olan bütün array cari ölçüsü. 35 00:02:36,340 --> 00:02:38,980 Sərin növü var burada qeyd bir şey 36 00:02:38,980 --> 00:02:47,060 biz başqa data strukturu, serialın üst dizilir data structure oluşturuyorsanız edir. 37 00:02:47,060 --> 00:02:50,110 Bacalar həyata müxtəlif yolları var. 38 00:02:50,110 --> 00:02:54,250 Biz, lakin ümid bağlı siyahısı problemləri məşğul sonra, olduqca hələ bunu deyil 39 00:02:54,250 --> 00:03:00,520 Siz asanlıqla həmçinin bağlı siyahı üst bir yığın həyata necə görürsünüz. 40 00:03:00,520 --> 00:03:02,640 Amma indi, biz serialların qalmaq lazımdır. 41 00:03:02,640 --> 00:03:06,350 Belə ki, daha, biz lazım olan bütün bir sıra və biz yalnız serialın ölçüsü izlemek üçün lazımdır. 42 00:03:06,350 --> 00:03:09,850 [Sam] Bağışlayın, niyə siz yığını strings üst var deyib ki? 43 00:03:09,850 --> 00:03:13,440 Strings yığını ərzində kimi mənə görünür. 44 00:03:13,440 --> 00:03:16,790 [Hardison] Bəli. Biz array data quruluşu qəbul edirik, oluşturuyorsanız - 45 00:03:16,790 --> 00:03:22,130 böyük bir sual var. Belə ki, sual, bu online seyr edən insanlar üçün nə 46 00:03:22,130 --> 00:03:24,140 niyə biz yığını strings üst olduğunu söyləyərək 47 00:03:24,140 --> 00:03:27,990 burada strings yığını daxilində kimi görünür? çünki 48 00:03:27,990 --> 00:03:31,050 Hansı tamamilə belədir. 49 00:03:31,050 --> 00:03:34,660 Mən istinad biz bir sıra data quruluşu var idi. 50 00:03:34,660 --> 00:03:39,290 Biz char * s bir sıra, simlər bu dizi, var 51 00:03:39,290 --> 00:03:45,300 və biz dizilir data strukturu yaratmaq üçün ki, əlavə edir. 52 00:03:45,300 --> 00:03:48,620 >> Belə ki, bir yığın bir sıra biraz daha mürəkkəbdir. 53 00:03:48,620 --> 00:03:51,890 Biz bir yığın yaratmaq üçün bir sıra istifadə edə bilərsiniz. 54 00:03:51,890 --> 00:03:55,810 Biz yığını bir sıra üst inşa edilir ki, harada ki var. 55 00:03:55,810 --> 00:04:02,510 Eyni zamanda, mən əvvəllər bildirib kimi, biz bağlıdır siyahısı üst bir yığın inşa edə bilərsiniz. 56 00:04:02,510 --> 00:04:04,960 Əvəzində bizim elementlərinin keçirilməsi üçün bir sıra istifadə edərək, 57 00:04:04,960 --> 00:04:10,070 biz elementləri saxlamaq və ətrafında yığını qurmaq üçün bağlı siyahı istifadə edə bilər. 58 00:04:10,070 --> 00:04:12,420 Bəzi kodu baxaraq nin nümunələri bir neçə ilə gəzmək edək 59 00:04:12,420 --> 00:04:14,960 əslində burada nə görmək. 60 00:04:14,960 --> 00:04:23,400 Sol, mən ki yığını struct yaddaş kimi baxmaq nə aşağı atılan sonra 61 00:04:23,400 --> 00:04:28,330 tutumu # dörd müəyyən edilmişdir. 62 00:04:28,330 --> 00:04:33,490 Biz dörd element char * array var. 63 00:04:33,490 --> 00:04:38,110 Biz strings [0] strings [1], strings [2] strings [3], var 64 00:04:38,110 --> 00:04:43,800 və sonra ölçüsü tam ki, ötən sahəsi. 65 00:04:43,800 --> 00:04:46,270 Bu mənada edirmi? Okay. 66 00:04:46,270 --> 00:04:48,790 Bu hüququ nə varsa, nə olur ki, 67 00:04:48,790 --> 00:04:55,790 mənim kodu olacaq, yalnız bir struct, s adlı dizilir struct bəyan edir. 68 00:04:55,790 --> 00:05:01,270 Bu almaq nə. Bu yaddaş bu iz edir. 69 00:05:01,270 --> 00:05:05,590 Burada ilk sual bu yığını struct məzmunu nə edir? 70 00:05:05,590 --> 00:05:09,250 Hal-hazırda onlar heç bir şey istəyirik, lakin onlar tamamilə heç bir şey deyilik. 71 00:05:09,250 --> 00:05:13,300 Onlar zibil bu cür edirik. Biz heç bir fikir onlara nə var. 72 00:05:13,300 --> 00:05:17,000 Biz yığını s bəyan zaman, biz yalnız yaddaş üst ki, aşağı atma edirik. 73 00:05:17,000 --> 00:05:19,840 Bu int i elan və başlatılıyor deyil kimi növ var. 74 00:05:19,840 --> 00:05:21,730 Siz orada nə bilmirəm. Siz orada nə oxuya bilərsiniz 75 00:05:21,730 --> 00:05:27,690 lakin faydalı super ola bilər. 76 00:05:27,690 --> 00:05:32,680 Həmişə bunu xatırlamaq istəyirəm bir şey başlatılmış lazımdır nə başlamaq deyil. 77 00:05:32,680 --> 00:05:35,820 Bu halda, biz sıfır olmaq ölçüsü başlamaq olacaq 78 00:05:35,820 --> 00:05:39,960 bizim üçün çox əhəmiyyətli ola olacaq çünki. 79 00:05:39,960 --> 00:05:43,450 Biz irəli getmək və göstəricilər bütün, bütün char * s, başlamaq bilər 80 00:05:43,450 --> 00:05:49,670 yəqin null bəzi aydın dəyəri olmalıdır. 81 00:05:49,670 --> 00:05:58,270 Amma biz bunu tamamilə lazım deyil. 82 00:05:58,270 --> 00:06:04,200 >> İndi, bacalar iki əsas əməliyyatlar var? 83 00:06:04,200 --> 00:06:07,610 Kimse Yok Mu siz baca ilə nə mühazirə dən saxla? Bəli? 84 00:06:07,610 --> 00:06:09,700 [Stella] basaraq və yaratma? Məhz >>. 85 00:06:09,700 --> 00:06:13,810 Basaraq və yaratma bacalar iki əsas əməliyyatlar var. 86 00:06:13,810 --> 00:06:17,060 Və təkan nə edir? >> Bu üst üzərinə bir şey qoyur 87 00:06:17,060 --> 00:06:19,300 yığını, və sonra yaratma onu edir. 88 00:06:19,300 --> 00:06:23,150 [Hardison] Exactly. Belə basmaqla yığını üst bir şey itələyir. 89 00:06:23,150 --> 00:06:27,700 Bu counter bir yemək tray aşağı qoyaraq yemək kadr kimi. 90 00:06:27,700 --> 00:06:33,630 Və yaratma yığını bir yemək tray off edir. 91 00:06:33,630 --> 00:06:36,460 Gəlin nə nümunələri bir neçə ilə gəzmək 92 00:06:36,460 --> 00:06:39,720 biz yığını daxil şeylər təkan zaman. 93 00:06:39,720 --> 00:06:45,110 Biz yığını üzərinə string 'salam' təkan olsaydı, 94 00:06:45,110 --> 00:06:49,760 bu diaqram indi kimi görünür edir. 95 00:06:49,760 --> 00:06:53,410 Nə görmək? 96 00:06:53,410 --> 00:06:56,530 Biz strings serialın ilk element daxil basdı 97 00:06:56,530 --> 00:07:01,420 və biz 1 olmaq üçün ölçüsü sayı upped. 98 00:07:01,420 --> 00:07:05,340 Biz iki slaydlar arasında fərq baxmaq əgər, burada 0 idi, burada təkan əvvəl var. 99 00:07:05,340 --> 00:07:08,690 Burada təkan sonra. 100 00:07:08,690 --> 00:07:13,460 Təkan əvvəl təkan sonra. 101 00:07:13,460 --> 00:07:16,860 İndi biz yığını bir element var. 102 00:07:16,860 --> 00:07:20,970 Bu string "salam" var ki, bu. 103 00:07:20,970 --> 00:07:24,440 Serialın başqa hər şey bizim strings sıra hələ də zibil deyil. 104 00:07:24,440 --> 00:07:27,070 Biz başlatılmış deyil. 105 00:07:27,070 --> 00:07:29,410 Gəlin biz yığını üzərinə başqa simli təkan deyirlər. 106 00:07:29,410 --> 00:07:32,210 Biz bu dəfə də "dünya" təkan olacaq. 107 00:07:32,210 --> 00:07:35,160 Belə ki, "dünya" burada "salam" üst davam edə bilərsiniz 108 00:07:35,160 --> 00:07:40,040 və ölçüsü sayı 2-ə qədər gedir. 109 00:07:40,040 --> 00:07:44,520 İndi biz "CS50" və daha üst gedəcəyəm basa bilərsiniz. 110 00:07:44,520 --> 00:07:51,110 Biz geri varsa, biz yığını üst şeyi basmaqla görmek bilər. 111 00:07:51,110 --> 00:07:53,320 İndi biz pop almaq. 112 00:07:53,320 --> 00:07:58,910 Biz yığını bir şey off atdı zaman, nə oldu? 113 00:07:58,910 --> 00:08:01,540 Kimse Yok Mu fərq görmək? Bu olduqca ağıllı deyil. 114 00:08:01,540 --> 00:08:05,810 [Tələbə] ölçüsü. >> Bəli, ölçüsü dəyişib. 115 00:08:05,810 --> 00:08:09,040 >> Başqa nə dəyişiklik gözlənilir olardı? 116 00:08:09,040 --> 00:08:14,280 Çox [Tələbə] The strings. >> Hüququ. Çox strings. 117 00:08:14,280 --> 00:08:17,110 Bu çıxır ki, siz bu yolu edirik zaman, 118 00:08:17,110 --> 00:08:21,960 biz yığını daxil elementləri çıxarmaq deyilik, çünki 119 00:08:21,960 --> 00:08:24,670 biz, həqiqətən, heç bir şey yoxdur, biz yalnız ölçüsü istifadə edə bilərsiniz 120 00:08:24,670 --> 00:08:28,630 bizim array şeyi sayı takip 121 00:08:28,630 --> 00:08:33,780 belə ki, biz yenidən açılır zaman, yenə biz yalnız 1 bizim ölçüsü aşağı azalma. 122 00:08:33,780 --> 00:08:39,440 Həqiqətən getmək və bir şey yazmaq üçün heç bir ehtiyac yoxdur. 123 00:08:39,440 --> 00:08:41,710 Funky şərti. 124 00:08:41,710 --> 00:08:46,520 Bu, bizə nə üçün az iş, çünki biz adətən yalnız tək şeyi tərk çıxır ki. 125 00:08:46,520 --> 00:08:50,060 Biz geri getmək və bir şey yazmaq üçün yoxdur, onda niyə bunu? 126 00:08:50,060 --> 00:08:54,150 Beləliklə, biz yığını iki dəfə off pop zaman ki bütün həcmi bir neçə dəfə azalma var. 127 00:08:54,150 --> 00:08:59,120 Və yenə bu bizim yığını daxil şeylər çıxarmaq deyilik yalnız çünki. 128 00:08:59,120 --> 00:09:01,320 Bəli? Durmayın. 129 00:09:01,320 --> 00:09:04,460 [Tələbə, anlaşılmaz] >> sonra siz yenə bir şey təkan zaman nə olar? 130 00:09:04,460 --> 00:09:08,570 Yenə bir şey basmaq zaman, hara edir? 131 00:09:08,570 --> 00:09:12,390 Harada ki, Basil getmək edir? Strings [1] Into >>? >> Hüququ. 132 00:09:12,390 --> 00:09:14,530 Nə strings [3] daxil deyil? 133 00:09:14,530 --> 00:09:19,410 [Basil] bir şey strings var idi ki, unuttum Çünki [1] və [2]? 134 00:09:19,410 --> 00:09:24,040 [Hardison] Exactly. Bizim yığını mahiyyətcə bu, bir şey üçün olmuşdur ki, "unuttum" 135 00:09:24,040 --> 00:09:29,480 strings ildə [1] və ya strings [2], biz "WOOT" təkan belə zaman, 136 00:09:29,480 --> 00:09:36,670 yalnız strings [1] olan element o qoyur. 137 00:09:36,670 --> 00:09:41,590 Əsas səviyyədə, necə bu işlər haqqında suallarınız var? 138 00:09:41,590 --> 00:09:45,160 [Sam] Beləliklə, bu məbləğ baxımından hər hansı bir şəkildə dinamik deyil 139 00:09:45,160 --> 00:09:47,620 və ya yığını həcmi baxımından? 140 00:09:47,620 --> 00:09:56,750 [Hardison] Exactly. Bu - baxımından bu dinamik growning yığını deyil idi. 141 00:09:56,750 --> 00:10:02,850 Bu ən çox dörd şeyi, ən çox dörd char * s təşkil edə bilər ki, bir yığın edir. 142 00:10:02,850 --> 00:10:07,580 Biz beşinci şey cəhd və təkan olsaydı, siz olmalıdır nə düşünürsünüz? 143 00:10:07,580 --> 00:10:11,870 [Tələbələr, anlaşılmaz] 144 00:10:11,870 --> 00:10:14,600 [Hardison] Exactly. Ola bilər ki, hər şeyi bir sıra var. 145 00:10:14,600 --> 00:10:19,330 Bu bəlkə biz nə asılı olaraq, günah seg bilər - 146 00:10:19,330 --> 00:10:22,530 necə məhz biz geri sonuna həyata edilmişdir. 147 00:10:22,530 --> 00:10:31,740 Bu üzerine bilər. Bu sinif danışdıq ki, bufer daşqın ola bilər. 148 00:10:31,740 --> 00:10:35,240 Nə üzerine ola bilər ki, ən bariz şey olacaq 149 00:10:35,240 --> 00:10:42,370 biz yığını bir əlavə şey təkan cəhd əgər? 150 00:10:42,370 --> 00:10:44,550 Belə bir bufer daşqın bildirdi. 151 00:10:44,550 --> 00:10:47,870 Üzərində yazılı və ya stomped almaq ki, bir şey ola bilər nə 152 00:10:47,870 --> 00:10:52,320 biz əlavə şey təkan çalışır tərəfindən təsadüfən daşdı? əgər 153 00:10:52,320 --> 00:10:54,730 [Daniel, anlaşılmaz] >> mümkündür. 154 00:10:54,730 --> 00:10:58,440 Amma əvvəlcə nə ola bilər? Biz dördüncü şey təkan cəhd nə olur? 155 00:10:58,440 --> 00:11:06,220 Bu, ən azı biz var ki, bu yaddaş diaqram ilə, ölçüsü üzerine bilər. 156 00:11:06,220 --> 00:11:10,880 >> Problem set dəqiqləşdirilməsi, bu da, biz bu gün həyata üçün olacaq nə 157 00:11:10,880 --> 00:11:16,030 nə biz istəyirik yalnız yalan qayıtmaq olunur. 158 00:11:16,030 --> 00:11:20,030 Bizim təkan metodu, bir boolean dəyər qayıtmaq üçün gedir 159 00:11:20,030 --> 00:11:22,920 təkan nail əgər və boolean dəyər doğru olacaq 160 00:11:22,920 --> 00:11:29,730 və yalan yığını tam çünki biz daha bir təkan deyil bilər. 161 00:11:29,730 --> 00:11:33,620 Hüququ indi kodu bir az vasitəsilə gəzmək edək. 162 00:11:33,620 --> 00:11:36,400 Burada təkan funksiyası var. 163 00:11:36,400 --> 00:11:40,380 Bir yığın üçün təkan funksiyası yığını qoymaq üçün simli etmək niyyətindədir. 164 00:11:40,380 --> 00:11:45,820 Simli uğurla sövq edildi Doğrudur qayıtmaq olacaq 165 00:11:45,820 --> 00:11:51,820 yığını və saxta başqa haqqında. 166 00:11:51,820 --> 00:11:59,740 Nə hər hansı təkliflər burada yaxşı bir ilk şey ola bilər? 167 00:11:59,740 --> 00:12:20,630 Ölçüsü gücü təşkil edin [Sam] sonra saxta qayıtmaq? 168 00:12:20,630 --> 00:12:23,320 [Hardison] Bingo. Nice iş. 169 00:12:23,320 --> 00:12:26,310 Ölçüsü qabiliyyəti varsa, biz saxta geri olacaq. 170 00:12:26,310 --> 00:12:29,270 Biz yığını daha çox bir şey qoymaq bilməz. 171 00:12:29,270 --> 00:12:36,900 Əks halda, biz yığını üst bir şey qoymaq istəyirəm. 172 00:12:36,900 --> 00:12:41,670 Ilkin "yığını üst," nədir? 173 00:12:41,670 --> 00:12:43,650 [Daniel] Ölçüsü 0? >> Ölçü 0. 174 00:12:43,650 --> 00:12:49,990 Yığını bir şey var sonra yığını üst nədir? Missy, siz bilirsiniz? 175 00:12:49,990 --> 00:12:52,720 [Missy] biri. >> Size tam biridir. Siz ölçüsü əlavə saxlamaq 176 00:12:52,720 --> 00:13:01,690 və sıra indeksi ölçüsü yeni element qoyulması olduğunuz hər vaxt. 177 00:13:01,690 --> 00:13:05,470 Bu mənada edir, biz, bir-liner bu cür ilə bunu edə bilərsiniz. 178 00:13:05,470 --> 00:13:11,910 Biz strings sıra var, belə ki, biz, ölçüsü index da daxil olacaq 179 00:13:11,910 --> 00:13:14,780 və biz orada öz char * saxlamaq olacaq. 180 00:13:14,780 --> 00:13:19,340 Heç bir string çıxarmaq burada orada gedən necə edək, 181 00:13:19,340 --> 00:13:29,680 yaddaş heç dinamik ayrılması? 182 00:13:29,680 --> 00:13:34,440 Və sonra Missy, biz indi nə gətirdi 183 00:13:34,440 --> 00:13:40,570 biz array müvafiq yerdə simli saxlanılır etdik, çünki 184 00:13:40,570 --> 00:13:49,230 və o, biz növbəti push üçün hazır ki, bir ölçüsü arttırmayı olduğunu bildirib. 185 00:13:49,230 --> 00:13:53,950 Beləliklə, biz s.size ilə edə bilər + +. 186 00:13:53,950 --> 00:13:59,330 Bu nöqtədə, biz massivinə sövq etdik. Biz nə üçün son şey nədir? 187 00:13:59,330 --> 00:14:10,110 [Tələbə] doğru qayıdın. >> Doğru qayıdın. 188 00:14:10,110 --> 00:14:14,690 Belə ki, bir olduqca sadə kodu olduqca sadə. Deyil, çox çox. 189 00:14:14,690 --> 00:14:17,070 Sonra, yığını necə ətrafında baş bükülmüş sonra 190 00:14:17,070 --> 00:14:21,910 bu həyata keçirilməsi üçün olduqca sadədir. 191 00:14:21,910 --> 00:14:26,390 >> İndi bu növbəti hissəsi yığını bir simli off yaratma olunur. 192 00:14:26,390 --> 00:14:29,410 Mən sizə uşaqlar bu bir az işləmək üçün bir vaxt vermək gedirəm. 193 00:14:29,410 --> 00:14:34,320 Demək olar ki, mahiyyətcə biz burada təkan görülən sonra nə əks edir. 194 00:14:34,320 --> 00:14:38,510 Mən etdik əslində - oops. 195 00:14:38,510 --> 00:14:48,160 Mən burada və cihaz bir cihaz qədər ayaqqabılı sonra 196 00:14:48,160 --> 00:14:53,600 Mən problem 5 dəqiqləşdirilməsi müəyyən qədər çıxardı etdik. 197 00:14:53,600 --> 00:15:02,560 Biz burada zoom varsa, mən cdn.cs50.net/2012/fall/psets/pset5.pdf da deyiləm bilərsiniz. 198 00:15:02,560 --> 00:15:08,590 Uşaqlar, burada section6.zip yerləşir ki, bu kodu nazil? 199 00:15:08,590 --> 00:15:15,030 Bütün hüquqlar. Həqiqətən tez, hazırda bunu ki, yapmadıysanız. 200 00:15:15,030 --> 00:15:22,130 Mən terminal pəncərə bunu edəcəyik. 201 00:15:22,130 --> 00:15:25,090 Mən, həqiqətən, burada bu qədər idi. Bəli. 202 00:15:25,090 --> 00:15:34,730 Bəli, Sam? >> Mən niyə = küç ölçüsü s.string 's Mötərizədə dediniz haqqında bir sual var? 203 00:15:34,730 --> 00:15:42,910 Str nədir? Əvvəl haradasa müəyyən və ya - Oh, char * küç? 204 00:15:42,910 --> 00:15:47,160 [Hardison] Bəli, dəqiq. Bu arqument idi. >> Oh, tamam. Bağışlayın. 205 00:15:47,160 --> 00:15:49,470 [Hardison] Biz içəri basmaq üçün simli ifadə edirik 206 00:15:49,470 --> 00:15:55,220 Biz həqiqətən burada danışmaq olmadığını ortaya bilər ki, digər sual 207 00:15:55,220 --> 00:15:58,810 biz s adlı dəyişən ki, təqdim üçün biz etdi 208 00:15:58,810 --> 00:16:02,710 ki, həcmi və bizə əlçatan idi. 209 00:16:02,710 --> 00:16:06,960 Bu yığını struct olduğunu verilmiş Biz etmişdir. 210 00:16:06,960 --> 00:16:08,930 Belə ki, bu təkan kodu geri axtarır 211 00:16:08,930 --> 00:16:13,450 biz qəbul olmuşdur ki, bu simli ilə stuff edirik görə bilərsiniz 212 00:16:13,450 --> 00:16:19,210 lakin sonra qəflətən, biz kimi s.size daxil, s haradan gəldi? edirik 213 00:16:19,210 --> 00:16:23,020 Biz bölməsində arxivində baxmaq olacaq ki, kodu 214 00:16:23,020 --> 00:16:27,100 və sonra sizin problem etdiyini olacaq ki, məhsulları, müəyyən 215 00:16:27,100 --> 00:16:32,440 biz yığını qlobal dəyişən struct etdik 216 00:16:32,440 --> 00:16:36,380 biz bütün müxtəlif funksiyaları üçün istifadə edə bilərlər ki, 217 00:16:36,380 --> 00:16:40,630 özünüz ətrafında keçə və istinad onu keçə olmadan, 218 00:16:40,630 --> 00:16:44,870 bu məhsulları bütün növ yoxdur. 219 00:16:44,870 --> 00:16:52,280 Biz yalnız gözəl şeylər etmək üçün Siz bir az aldadıcı edirik. 220 00:16:52,280 --> 00:16:57,430 Və ki, əyləncə üçün, çünki biz burada edirik bir şey, bu daha asandır. 221 00:16:57,430 --> 00:17:02,800 Onlar bir böyük data structure varsa Tez-tez, insanların bunu görürsünüz 222 00:17:02,800 --> 00:17:07,750 öz proqramı çərçivəsində fəaliyyət keçirilir edir. 223 00:17:07,750 --> 00:17:09,560 >> Nin cihaz üzərində geri edək. 224 00:17:09,560 --> 00:17:15,240 Hamı uğurla section6.zip almaq mı? 225 00:17:15,240 --> 00:17:20,440 Hamı unzip section6.zip istifadə edərək, açın? 226 00:17:20,440 --> 00:17:27,200 , Bölüm 6 dizine getmək varsa - 227 00:17:27,200 --> 00:17:29,220 Aah, bütün yer üzərində - 228 00:17:29,220 --> 00:17:32,840 və burada nə siyahısını, siz üç müxtəlif. c fayllar var olduğunu görürük. 229 00:17:32,840 --> 00:17:38,350 Siz story bağlı siyahı olan bir sıra, bir sll və bir yığın var. 230 00:17:38,350 --> 00:17:44,600 Siz stack.c açmaq varsa, 231 00:17:44,600 --> 00:17:47,330 Siz, bizim üçün müəyyən bu struct var görə bilərsiniz 232 00:17:47,330 --> 00:17:51,330 biz yalnız slaydlar haqqında söhbət dəqiq struct. 233 00:17:51,330 --> 00:17:56,340 Biz yığını üçün qlobal dəyişən var 234 00:17:56,340 --> 00:18:00,110 biz təkan funksiyası var 235 00:18:00,110 --> 00:18:04,230 və sonra biz pop funksiyası var. 236 00:18:04,230 --> 00:18:08,320 Burada Slayd üzərində geri itələmək üçün mən, kodu qoymaq lazımdır 237 00:18:08,320 --> 00:18:10,660 lakin nə Mən sizə uşaqlar etmək istəyirsinizsə, sizin qabiliyyəti yaxşı ki, 238 00:18:10,660 --> 00:18:13,790 getmək və pop funksiyasını həyata keçirir. 239 00:18:13,790 --> 00:18:18,480 Sonra həyata sonra, siz yığını etmək ilə tərtib edə bilərsiniz 240 00:18:18,480 --> 00:18:22,540 və sonra çıxan yığını yürütülebilir run 241 00:18:22,540 --> 00:18:28,390 və aşağı burada əsas var ki, bu test bütün kodu davam edəcək. 242 00:18:28,390 --> 00:18:31,060 Və əsas həqiqətən təkan və pop zəng qayğı 243 00:18:31,060 --> 00:18:33,220 və hər şey doğru keçir əmin edir. 244 00:18:33,220 --> 00:18:36,820 O, həmçinin burada yığını ölçüsü initializes 245 00:18:36,820 --> 00:18:39,780 belə ki başlatılıyor narahat yoxdur. 246 00:18:39,780 --> 00:18:42,310 Siz düzgün başlatılmış edilmişdir ki kəsb edə bilər 247 00:18:42,310 --> 00:18:48,000 siz pop funksiyası daxil olan zaman. 248 00:18:48,000 --> 00:18:53,530 Bu mənada edirmi? 249 00:18:53,530 --> 00:19:00,100 Belə ki, burada biz gedin. Təkan kodu var. 250 00:19:00,100 --> 00:19:13,210 Mən sizə uşaqlar 5 və ya 10 dəqiqə verəcəyik. 251 00:19:13,210 --> 00:19:15,690 Və kodlaşdırma etdiyiniz zaman siz aralıq hər hansı sualınız varsa, 252 00:19:15,690 --> 00:19:17,710 onlara yüksək səslə isteyin. 253 00:19:17,710 --> 00:19:23,080 Bir yapışma nöqtəsi almaq əgər, yalnız xahiş edirik. 254 00:19:23,080 --> 00:19:26,030 Başqa hər kəs bildirin, mənə bildirin. 255 00:19:26,030 --> 00:19:28,160 Çox qonşu çalışın. 256 00:19:28,160 --> 00:19:30,360 [Daniel] Biz yalnız indi pop həyata mi? >> Just pop. 257 00:19:30,360 --> 00:19:34,200 Isterseniz siz push həyata köçürə bilərsiniz baxmayaraq, 258 00:19:34,200 --> 00:19:37,780 test iş ki. 259 00:19:37,780 --> 00:19:41,940 Onu əldə şeyi test çətindir çünki - 260 00:19:41,940 --> 00:19:49,030 və ya, bu başlamaq üçün yığını bir şey yoxdur, əgər yığınının yaratma şeyi test üçün çətindir. 261 00:19:49,030 --> 00:19:55,250 >> Qaytarılması nəzərdə pop nədir? Yığını üst element. 262 00:19:55,250 --> 00:20:01,260 Bu yığın üst element off almaq üçün ehtimal edir 263 00:20:01,260 --> 00:20:05,780 və sonra stack həcmi azalma 264 00:20:05,780 --> 00:20:07,810 və indi üst element kaybettim. 265 00:20:07,810 --> 00:20:11,420 Və sonra üst element qaytarın. 266 00:20:11,420 --> 00:20:20,080 [Tələbə, anlaşılmaz] 267 00:20:20,080 --> 00:20:28,810 [Hardison] Belə ki, əgər nə olar? [Tələbə, anlaşılmaz] 268 00:20:28,810 --> 00:20:34,000 Qədər olur bitir muhtemelen ya daxil etdiyiniz 269 00:20:34,000 --> 00:20:37,350 bir element hələ başlatılmadı deyil, belə ki, sizin hesablanması 270 00:20:37,350 --> 00:20:39,990 da ötən element off harada. 271 00:20:39,990 --> 00:20:46,260 Fark Belə ki, burada, push, biz s.size element da strings daxil etdiyiniz 272 00:20:46,260 --> 00:20:48,560 yeni index çünki. 273 00:20:48,560 --> 00:20:51,460 Bu yığını yeni üst edir. 274 00:20:51,460 --> 00:21:01,100 Pop isə, s.size, növbəti kosmik olacaq 275 00:21:01,100 --> 00:21:05,210 sizin yığını olan bütün elementlər üst olan yer. 276 00:21:05,210 --> 00:21:10,050 Belə ki, üst-ən element, s.size da deyil 277 00:21:10,050 --> 00:21:14,930 əksinə, o, altında var. 278 00:21:14,930 --> 00:21:19,640 >> Zaman siz digər şey - pop-ci ildə, 279 00:21:19,640 --> 00:21:22,030 Siz ölçüsü azalma etmək lazımdır olunur. 280 00:21:22,030 --> 00:21:28,750 Siz burada bizim az diaqram geri Xatırlayırsınızsa, 281 00:21:28,750 --> 00:21:30,980 həqiqətən, biz baş gördüm ki, yalnız odur ki, biz pop çağıranda 282 00:21:30,980 --> 00:21:36,150 bu ölçüdə sonra 1, ilk 2, düşmüşdür idi. 283 00:21:36,150 --> 00:21:42,620 Sonra yeni bir element sövq zaman, müvafiq spot da getmək olardı. 284 00:21:42,620 --> 00:21:49,610 [Basil] Bu s.size 2, onda element 2 getmək deyil, 285 00:21:49,610 --> 00:21:54,400 və sonra siz element off pop istəyirəm? 286 00:21:54,400 --> 00:21:59,510 Biz getdi əgər - >> Beləliklə, bir daha bu baxaq. 287 00:21:59,510 --> 00:22:07,730 Bu nöqtədə bizim yığını deyil 288 00:22:07,730 --> 00:22:12,130 və biz, pop zəng 289 00:22:12,130 --> 00:22:16,150 olan index üst ən element var? 290 00:22:16,150 --> 00:22:19,300 [Basil] 2-hazırda, lakin 3 pop olacaq. >> Hüququ. 291 00:22:19,300 --> 00:22:24,220 Belə ki, bizim ölçüsü 3 harada ki, ancaq index 2 element pop istəyirəm. 292 00:22:24,220 --> 00:22:29,900 Bu seriallarda və sıfır indeksləşdirilməsi ilə ki, bir off ki, tipik növü var. 293 00:22:29,900 --> 00:22:36,430 Beləliklə, siz üçüncü element pop istəyirsiniz, lakin üçüncü element index 3 deyil. 294 00:22:36,430 --> 00:22:39,430 Və biz məcbur edirik ki minus 1 etmək yoxdur səbəb 295 00:22:39,430 --> 00:22:44,120 İndi, çünki siz görürsünüz ki, üst-ən element, 296 00:22:44,120 --> 00:22:47,600 biz bu nöqtədə yığını üzərinə başqa bir şey təkan olsaydı, 297 00:22:47,600 --> 00:22:50,360 biz index 3 çıxarmaq istəyirəm. 298 00:22:50,360 --> 00:23:03,550 Və yalnız belə basmaqla etdiyiniz zaman ölçüsü və indeksləri sıralamaq ki, baş verir. 299 00:23:03,550 --> 00:23:06,960 >> Kim bir iş yığını həyata var? 300 00:23:06,960 --> 00:23:09,690 Siz iş yığını bir var. Pop hələ iş varmı? 301 00:23:09,690 --> 00:23:11,890 [Daniel] Bəli. Mən belə hesab edirəm. 302 00:23:11,890 --> 00:23:14,610 >> Proqramı çalışan və faulting seg deyil, onu çap olub? 303 00:23:14,610 --> 00:23:17,520 Siz çalıştırdığınızda "uğur" çap varmı? 304 00:23:17,520 --> 00:23:22,630 Bəli. Bu "müvəffəqiyyət" çap və bumu getmək deyilsə, qalaq etmək run, 305 00:23:22,630 --> 00:23:26,000 sonra bütün yaxşı. 306 00:23:26,000 --> 00:23:34,070 Bütün hüquqlar. Nin həqiqətən tez cihaz üzərində gedək, 307 00:23:34,070 --> 00:23:46,100 və biz bu yolu getmək lazımdır. 308 00:23:46,100 --> 00:23:51,110 Biz pop burada neler baxmaq Əgər 309 00:23:51,110 --> 00:23:55,220 Daniel, siz ki, ilk şey nə idi? 310 00:23:55,220 --> 00:23:58,850 [Daniel] s.size 0 daha çox olur. 311 00:23:58,850 --> 00:24:03,120 [Hardison] Okay. Və niyə bunu etdi? 312 00:24:03,120 --> 00:24:05,610 [Daniel] yığını içərisində bir şey var idi ki, əmin etmək. 313 00:24:05,610 --> 00:24:10,950 [Hardison] Sağ. Siz s.size 0 daha əmin etmək üçün test etmək istəyirəm; 314 00:24:10,950 --> 00:24:13,280 Əks halda, nə üçün nə istəyirsiniz? 315 00:24:13,280 --> 00:24:16,630 [Daniel] qayıt null? >> Qayıt null, dəqiq. 316 00:24:16,630 --> 00:24:20,740 Belə ki, əgər s.size 0 çoxdur. Biz sonra nə edəcəyik? 317 00:24:20,740 --> 00:24:25,890 Yığını boş deyilsə, biz nə etməliyəm? 318 00:24:25,890 --> 00:24:31,210 [Stella] Siz ölçüsü azalma? Siz tamam, ölçüsü azalma >>. 319 00:24:31,210 --> 00:24:34,440 Belə ki, necə ki, bunu etdiniz? >> S.size -. 320 00:24:34,440 --> 00:24:37,030 [Hardison] Böyük. Və sonra nə oldu? 321 00:24:37,030 --> 00:24:44,140 [Stella] Və sonra geri s.string bildirib [s.size]. 322 00:24:44,140 --> 00:24:48,560 [Hardison] Böyük. 323 00:24:48,560 --> 00:24:51,940 Əks halda siz null qaytarın. Bəli, Sam? 324 00:24:51,940 --> 00:24:55,510 [Sam] Nə + 1 s.size lazım deyil? 325 00:24:55,510 --> 00:24:58,430 [Hardison] Plus 1? >> Bəli. >> O var. 326 00:24:58,430 --> 00:25:00,980 Siz 1 həyata alaraq edirik, çünki [Sam] Mən düşündüm 327 00:25:00,980 --> 00:25:04,290 sonra siz onlar üçün xahiş bir qaytarılması üçün olacaq. 328 00:25:04,290 --> 00:25:09,400 [Hardison] Bu biz 0 indeksləri bu bütün məsələ ilə bağlı söhbət yalnız idi. 329 00:25:09,400 --> 00:25:11,380 Belə ki, burada artıq geri zoom əgər. 330 00:25:11,380 --> 00:25:15,650 Biz burada bu oğlan baxsanız, sizi pop zaman görə bilərsiniz 331 00:25:15,650 --> 00:25:19,340 biz index 2 element yaratma edirik. 332 00:25:19,340 --> 00:25:25,200 >> Belə ki, biz sonra ölçüsü bizim index oyunları, ilk bizim ölçüsü azaldır. 333 00:25:25,200 --> 00:25:39,650 Biz ilk ölçüsü azalma yoxdur, onda biz -1 və sonra azalma ölçüsü var. 334 00:25:39,650 --> 00:25:45,270 Böyük. Bütün yaxşı? 335 00:25:45,270 --> 00:25:47,530 Bu barədə hər hansı suallar? 336 00:25:47,530 --> 00:25:54,050 Bu həmçinin yazmaq üçün müxtəlif yollar bir sıra var. 337 00:25:54,050 --> 00:26:03,290 Əslində, biz belə bir şey edə bilərsiniz - biz bir-liner edə bilərsiniz. 338 00:26:03,290 --> 00:26:05,770 Biz bir-line geri edə bilərsiniz. 339 00:26:05,770 --> 00:26:12,980 Ki etməklə qayıtmaq əvvəl Belə ki, biz, həqiqətən, azalma edə bilərsiniz. 340 00:26:12,980 --> 00:26:18,320 Beləliklə qoyulması - bu s.size əvvəl. 341 00:26:18,320 --> 00:26:22,060 Bu xətt həqiqətən sıx edir. 342 00:26:22,060 --> 00:26:30,940 Harada arasında fərq -. S ölçüsü və s.size - 343 00:26:30,940 --> 00:26:40,130 ki, bu postfix - səbəbiylə onlar postfix zəng - gəlir sonra s.size - 344 00:26:40,130 --> 00:26:47,430 s.size indeksi tapmaq məqsədləri üçün qiymətləndirilir o deməkdir ki, 345 00:26:47,430 --> 00:26:50,410 bu xətt yürütüldüğünde hazırda kimi, 346 00:26:50,410 --> 00:26:54,290 və bu - xətti icra olur sonra baş verir. 347 00:26:54,290 --> 00:27:00,340 Index s.size olan element əldə edilir. 348 00:27:00,340 --> 00:27:07,260 Biz azalma ilk baş istəyirəm, çünki, biz istədiyiniz nə deyil. 349 00:27:07,260 --> 00:27:10,990 Othewise, biz array daxil etmək olacaq, səmərəli, həddi həyata. 350 00:27:10,990 --> 00:27:16,850 Biz həqiqətən daxil olmaq üçün istədiyiniz bir yuxarıda element daxil etmək olacaq. 351 00:27:16,850 --> 00:27:23,840 Bəli, Sam? >> Daha sürətli və ya bir xətt və ya etmək üçün daha az RAM istifadə mı? 352 00:27:23,840 --> 00:27:29,620 [Hardison] Dürüst, həqiqətən asılıdır. 353 00:27:29,620 --> 00:27:34,220 [Sam, anlaşılmaz] >> Bəli, bu asılıdır. Siz compiler tövsiyələr edə bilər 354 00:27:34,220 --> 00:27:41,580 ki, tanımaq üçün compiler almaq üçün, adətən, mən təsəvvür. 355 00:27:41,580 --> 00:27:44,840 >> Beləliklə, biz bu compiler optimallaşdırma məhsulları haqqında bir az qeyd etdik 356 00:27:44,840 --> 00:27:47,400 siz tərtib edə 357 00:27:47,400 --> 00:27:50,580 və ki, bir compiler həyata rəqəm edə bilər ki şey növü 358 00:27:50,580 --> 00:27:54,710 oh kimi, hey, bəlkə, bir əməliyyat bu bütün edə bilərsiniz 359 00:27:54,710 --> 00:27:59,420 kimi RAM dan ölçüsü dəyişən yükləmə qarşı, 360 00:27:59,420 --> 00:28:03,770 , bu decrementing geri həyata saxlanılması, və sonra yenidən geri yükləmə 361 00:28:03,770 --> 00:28:08,000 Bu əməliyyat qalan emal. 362 00:28:08,000 --> 00:28:10,710 Amma adətən, yox, bu şey sort deyil 363 00:28:10,710 --> 00:28:20,770 ki, əhəmiyyətli dərəcədə daha sürətli proqram etmək olacaq. 364 00:28:20,770 --> 00:28:26,000 Bacalar hər hansı daha suallar? 365 00:28:26,000 --> 00:28:31,360 >> Belə təzyiq və yaratma. Siz uşaqlar, hacker nəşr cəhd istəyirsinizsə 366 00:28:31,360 --> 00:28:33,660 biz hacker redaksiyada etdik həqiqətən getdi 367 00:28:33,660 --> 00:28:37,670 və bu yığını dinamik inkişaf etmişdir. 368 00:28:37,670 --> 00:28:43,190 Qədər burada təkan funksiyası əsasən var çağırış, 369 00:28:43,190 --> 00:28:48,820 ki array inkişaf etmək üçün necə anlamaq üçün 370 00:28:48,820 --> 00:28:52,450 Siz yığını üçün daha çox elementləri basmaqla saxlamaq kimi. 371 00:28:52,450 --> 00:28:56,000 Bu, həqiqətən çox əlavə kod deyil. 372 00:28:56,000 --> 00:29:00,080 Düzgün orada malloc üçün zənglər üçün yadda var - yalnız bir zəng 373 00:29:00,080 --> 00:29:03,310 siz realloc zəng olacaq zaman sonra həyata rəqəm. 374 00:29:03,310 --> 00:29:06,090 Siz istəyirsinizsə ki, bir əyləncə problem var. 375 00:29:06,090 --> 00:29:11,550 >> Lakin hazırda, üzrə hərəkət edək və queues haqqında danışmaq edək. 376 00:29:11,550 --> 00:29:15,680 Burada vasitəsilə gedin. 377 00:29:15,680 --> 00:29:19,340 Növbədə yığını ən yaxın qardaş edir. 378 00:29:19,340 --> 00:29:25,380 Belə ki, yığın ki, hər şeyi son qoyuldu 379 00:29:25,380 --> 00:29:28,810 sonra Retrieved üçün ilk şey idi. 380 00:29:28,810 --> 00:29:33,600 Biz sifariş, bu, ötən həyata ilk və ya LIFO var. 381 00:29:33,600 --> 00:29:38,390 Növbədə isə, siz line duran etdiyiniz zaman beklediğiniz kimi, 382 00:29:38,390 --> 00:29:41,980 line olmaq üçün ilk şəxs sıra daxil olmaq üçün ilk şey, 383 00:29:41,980 --> 00:29:47,630 Növbədə alınan olur ki, ilk şeydir. 384 00:29:47,630 --> 00:29:51,490 Biz qrafik ilə məşğul olduğunuz zaman Queues də tez-tez istifadə olunur 385 00:29:51,490 --> 00:29:55,560 biz blokları ilə qısa danışdıq kimi 386 00:29:55,560 --> 00:30:00,260 və queues digər şeyi bir dəstə üçün də lazımlı edir. 387 00:30:00,260 --> 00:30:06,180 Tez-tez gəlir ki, bir şey, misal üçün, qorumaq üçün çalışır 388 00:30:06,180 --> 00:30:12,310 elementlərin sıralanır siyahısı. 389 00:30:12,310 --> 00:30:17,650 Və bir sıra ilə bunu edə bilərsiniz. Siz, bir sıra şeylər sıralanır siyahısı təmin edə bilər 390 00:30:17,650 --> 00:30:20,650 lakin çətin olur sonra olduğu həmişə tapmaq 391 00:30:20,650 --> 00:30:26,160 də növbəti şey daxil etmək üçün müvafiq yer. 392 00:30:26,160 --> 00:30:28,250 10 vasitəsilə ədəd bir sıra, 1 varsa, 393 00:30:28,250 --> 00:30:31,630 və sonra, 100 ilə bütün nömrələri 1 ki genişləndirmək istəyirik 394 00:30:31,630 --> 00:30:33,670 və təsadüfi üçün bu nömrələri almaq və hər şey saxlamaq çalışdığınız 395 00:30:33,670 --> 00:30:40,650 Siz getmək kimi sıralanır, siz keçid bir çox olan son. 396 00:30:40,650 --> 00:30:43,910 Queues və əsas data strukturları müəyyən növləri müəyyən növləri ilə, 397 00:30:43,910 --> 00:30:46,670 siz həqiqətən olduqca sadə saxlaya bilərsiniz. 398 00:30:46,670 --> 00:30:50,640 Siz bir şey əlavə və sonra bütün şey hər vaxt qarışdırmaq yoxdur. 399 00:30:50,640 --> 00:30:56,770 Eləcə də siz ətrafında daxili elementlərinin dəyişkən bir çox etmək var. 400 00:30:56,770 --> 00:31:02,990 Biz bir sıra baxdığımızda, bu bax - də queue.c olan bölmə kodu - 401 00:31:02,990 --> 00:31:10,950 sizə təqdim etdik ki, struct biz bir yığın üçün sizə verdiyim struct həqiqətən kimi. 402 00:31:10,950 --> 00:31:13,770 >> Bu bir istisna var ki, bir istisna 403 00:31:13,770 --> 00:31:21,700 Biz baş adlanan bu əlavə tam var ki, 404 00:31:21,700 --> 00:31:28,120 və burada rəhbəri, növbə rəisi takip saxlanılması üçün 405 00:31:28,120 --> 00:31:32,160 Növbədə və ya ilk element. 406 00:31:32,160 --> 00:31:37,470 Bir yığın, biz, biz almaq haqqında olan element takip edə 407 00:31:37,470 --> 00:31:40,800 yalnız ölçüsü istifadə yığını və ya üst, 408 00:31:40,800 --> 00:31:44,220 növbə ilə isə biz əks ucu ilə məşğul olan edirik. 409 00:31:44,220 --> 00:31:49,000 Biz tack sonunda şeyi etməyə çalışırıq, lakin sonra ön şeyi qayıtmaq edirik. 410 00:31:49,000 --> 00:31:54,640 Belə ki, səmərəli, baş ilə, biz, sıra əvvəlində və indeksi 411 00:31:54,640 --> 00:31:58,920 və ölçüsü bizə queue sonuna indeksi verir 412 00:31:58,920 --> 00:32:03,730 Biz baş şeylər almaq və quyruq üçün şeyi əlavə edə bilərsiniz ki. 413 00:32:03,730 --> 00:32:06,890 Yığını ilə Halbuki biz yalnız heç yığın üst ilə məşğul idi. 414 00:32:06,890 --> 00:32:08,900 Biz yığını altında daxil olmaq üçün heç vaxt. 415 00:32:08,900 --> 00:32:12,220 Biz yalnız üst şeylər əlavə və üst əşyalarını qarət 416 00:32:12,220 --> 00:32:17,470 belə biz struct daxili ki, əlavə sahəsində lazım deyildi. 417 00:32:17,470 --> 00:32:20,590 Ki, ümumiyyətlə hissi edirmi? 418 00:32:20,590 --> 00:32:27,670 Bütün hüquqlar. Bəli, Charlotte? [Charlotte, anlaşılmaz] 419 00:32:27,670 --> 00:32:32,660 [Hardison] Bu böyük sual və mühazirə qədər gələn biri idi. 420 00:32:32,660 --> 00:32:36,290 Bəlkə bir neçə nümunə ilə gəzinti nümayiş edəcək 421 00:32:36,290 --> 00:32:41,400 biz strings sıraya rəhbəri [0] istifadə etmək istəmirik. 422 00:32:41,400 --> 00:32:46,770 >> Belə ki, biz növbə var ki, təsəvvür, biz növbə zəng olacaq. 423 00:32:46,770 --> 00:32:49,210 Əvvəlində, biz yalnız instantiated olduğunuz zaman, 424 00:32:49,210 --> 00:32:53,330 biz yalnız bəyan etdik zaman, biz bir şey başlatılmış deyil. 425 00:32:53,330 --> 00:32:56,790 Bu, bütün zibil var. Belə ki, əlbəttə, biz başlamaq əmin etmək istəyirəm 426 00:32:56,790 --> 00:33:00,950 ölçüsü və baş sahələrində əsaslı 0, bir şey olacaq. 427 00:33:00,950 --> 00:33:05,770 Biz də davam və növbə elementləri həyata null bilər. 428 00:33:05,770 --> 00:33:09,930 Bu diaqram uyğun etmək, indi növbə yalnız üç elementdən tuta bilən bildiriş; 429 00:33:09,930 --> 00:33:13,150 bizim yığını dörd keçirilməsi bilər, halbuki bizim queue yalnız üç aça bilər. 430 00:33:13,150 --> 00:33:18,680 Və bu diaqram uyğun etmək yalnız var. 431 00:33:18,680 --> 00:33:26,150 Burada olur ki, ilk şey biz "hi" simli enqueue edir. 432 00:33:26,150 --> 00:33:30,380 Və kimi biz yığını ilə etdi, burada olduqca fərqli bir şey, 433 00:33:30,380 --> 00:33:39,230 biz strings da [0] və 1 bizim ölçüsü arttırmayı üzrə string atmaq. 434 00:33:39,230 --> 00:33:42,720 Biz "bye" enqueue, bu qoymaq olur. 435 00:33:42,720 --> 00:33:45,870 Beləliklə, bu hissəsi bir yığın kimi görünür. 436 00:33:45,870 --> 00:33:53,230 Biz burada yeni element yeni element başladı, ölçüsü qədər davam edir. 437 00:33:53,230 --> 00:33:56,330 Biz bir şey dequeue istədiyiniz zaman nə bu nöqtədə olur? 438 00:33:56,330 --> 00:34:01,280 Biz dequeue istədiyiniz zaman, hansı biz dequeue istədiyiniz element var? 439 00:34:01,280 --> 00:34:04,110 [Basil] Strings [0]. >> Zero. Məhz hüququ, Basil. 440 00:34:04,110 --> 00:34:10,960 Biz ilk simli, bu, "hi" qurtarmaq istəyirəm. 441 00:34:10,960 --> 00:34:13,170 Belə dəyişib başqa şey nə idi? 442 00:34:13,170 --> 00:34:17,010 Biz yığını bir şey off atdı zaman edək, biz yalnız, ölçüsü dəyişib 443 00:34:17,010 --> 00:34:22,080 lakin burada, biz dəyişiklik şeyi bir neçə var. 444 00:34:22,080 --> 00:34:27,440 Ölçüsü dəyişiklik, lakin baş dəyişikliklər deyil yalnız. 445 00:34:27,440 --> 00:34:31,020 Bu əvvəllər Charlotte baxımından geri gedir: 446 00:34:31,020 --> 00:34:38,699 niyə biz bu baş var? 447 00:34:38,699 --> 00:34:42,110 Ki, indi Charlotte mənada edirmi? Haqqında >> Kind. 448 00:34:42,110 --> 00:34:47,500 Və [Hardison] Kind? Biz dequeued Belə ki, nə oldu? 449 00:34:47,500 --> 00:34:54,340 Rəhbəri indi Maraqlıdır ki, nə idi? 450 00:34:54,340 --> 00:34:56,449 Dəyişdirilə [Charlotte] Oh, çünki - tamam. Görürəm. 451 00:34:56,449 --> 00:35:02,090 Çünki rəhbəri - baş yeri baxımından dəyişikliklər işarə yerləşir. 452 00:35:02,090 --> 00:35:07,200 Bu artıq həmişə sıfır index biri. >> Bəli, dəqiq. 453 00:35:07,200 --> 00:35:17,660 Yüksək element dequeueing əgər nə idi 454 00:35:17,660 --> 00:35:20,590 edildiyini və bu baş sahədə yox idi 455 00:35:20,590 --> 00:35:26,880 biz həmişə 0 index bizim növbə rəisi bu simli zəng çünki, 456 00:35:26,880 --> 00:35:30,170 sonra biz queue qalan aşağı keçmək istiyorum. 457 00:35:30,170 --> 00:35:36,010 Biz strings dən "bye" [1] keçmək üçün [0] strings var ediyorum. 458 00:35:36,010 --> 00:35:38,760 Və strings [2] aşağı strings [1]. 459 00:35:38,760 --> 00:35:43,050 Biz elementlərinin bütün siyahısı üçün bunu istiyorum 460 00:35:43,050 --> 00:35:45,110 elementləri bütün array. 461 00:35:45,110 --> 00:35:50,490 Və biz bir sıra ilə bunu etdiyiniz zaman ki, həqiqətən bahalı olur. 462 00:35:50,490 --> 00:35:53,340 Belə ki, burada, bu böyük deyil. Biz yalnız bizim sıra üç element var. 463 00:35:53,340 --> 00:35:57,230 Amma min elementlərin sıra və ya bir milyon elementləri olsa, 464 00:35:57,230 --> 00:36:00,060 və sonra birdən-birə, biz dequeue bir dəstə edilməsi başlamaq, bir döngü bütün çağırır 465 00:36:00,060 --> 00:36:03,930 şeylər həqiqətən daim hər şey aşağı keçid kimi aşağı yavaş gedir. 466 00:36:03,930 --> 00:36:07,320 Bilirsiniz, 1-shift, 1, 1 shift ilə, 1 shift shift. 467 00:36:07,320 --> 00:36:13,650 Həqiqətən bir göstərici deyil, baxmayaraq Əksinə, biz bu baş istifadə, biz bunu bir "göstərici" zəng 468 00:36:13,650 --> 00:36:16,430 ciddi mənada, bu bir pointer növü deyil. 469 00:36:16,430 --> 00:36:19,410 Bu int * və ya bir char * və ya bu kimi bir şey deyil. 470 00:36:19,410 --> 00:36:28,930 Amma bu işarə və ya növbə rəisi ifadə edir. Evet? 471 00:36:28,930 --> 00:36:38,800 >> [Tələbə] yalnız baş nə off pop Necə dequeue bilir? 472 00:36:38,800 --> 00:36:43,620 [Hardison] Necə dequeue rəhbərlik var nə off pop necə bilir? >> Hüququ, evet. 473 00:36:43,620 --> 00:36:49,050 >> Nə də axtarır müəyyən edilir yalnız nə baş sahədir. 474 00:36:49,050 --> 00:36:52,710 Biz burada baxmaq Beləliklə, bu ilk halda, əgər, 475 00:36:52,710 --> 00:36:55,690 baş 0, index 0-dir. >> Hüququ. 476 00:36:55,690 --> 00:37:00,500 [Hardison], yalnız tamam, yaxşı, kataloq 0 element olan string "hi" deyir Belə 477 00:37:00,500 --> 00:37:03,050 bizim növbə rəisi olan element var. 478 00:37:03,050 --> 00:37:05,570 Belə ki, oğlan dequeue olacaq. 479 00:37:05,570 --> 00:37:09,800 Və zəng geri olur ki element olacaq. 480 00:37:09,800 --> 00:37:14,540 Bəli, Saad? >> Beləliklə rəhbəri əsasən müəyyən edir - siz index o olacaq harada? 481 00:37:14,540 --> 00:37:17,750 Bu başlanğıc var? >> Bəli. Okay. >> 482 00:37:17,750 --> 00:37:22,900 [Hardison] bizim array üçün yeni bir başlanğıc olmaq var. 483 00:37:22,900 --> 00:37:28,930 Belə ki, bir şey dequeue zaman, Siz bütün, kataloq q.head olan element daxil edir 484 00:37:28,930 --> 00:37:32,240 və siz dequeue istədiyiniz element olacaq. 485 00:37:32,240 --> 00:37:34,930 Ayrıca ölçüsü azalma var. 486 00:37:34,930 --> 00:37:39,430 Şey bu bir az çətin almaq Biz bir az görmək lazımdır. 487 00:37:39,430 --> 00:37:46,520 Yenə enqueue əgər Biz indi dequeue və 488 00:37:46,520 --> 00:37:51,300 biz yerləşir enqueue edirsiniz? 489 00:37:51,300 --> 00:37:55,000 Harada növbəti element bizim növbəsinə getmək edir? 490 00:37:55,000 --> 00:37:57,980 Biz string "CS" enqueue istəyirsiniz. 491 00:37:57,980 --> 00:38:02,240 O index daxil olacaq? [Tələbələr] Strings [2]. >> İki. 492 00:38:02,240 --> 00:38:04,980 2 Niyə və 0? 493 00:38:04,980 --> 00:38:13,570 [Basil] indi rəhbəri 1 Çünki siyahısı başlanğıc kimi ki? 494 00:38:13,570 --> 00:38:21,220 [Hardison] Sağ. Və nə siyahısına sonunda bildirir? 495 00:38:21,220 --> 00:38:23,290 Biz queue sonunda adlanır nə istifadə? 496 00:38:23,290 --> 00:38:25,970 Başçısı bizim növbə rəisi, bizim queue başlanğıcıdır. 497 00:38:25,970 --> 00:38:29,530 Bizim sıra sonu nədir? [Tələbələr] ölçüsü. >> Size, dəqiq. 498 00:38:29,530 --> 00:38:36,360 Belə ki, yeni elementlər ölçüsü getmək və biz tələb edən elementləri off baş off gəlir. 499 00:38:36,360 --> 00:38:45,390 Biz növbəti element enqueue zaman, ölçüsü, onu qoyulması edirik. 500 00:38:45,390 --> 00:38:48,530 [Tələbə] əvvəl olsa da, ölçüsü sağ, 1 olduğunu qoymaq? 501 00:38:48,530 --> 00:38:55,690 [Hardison] Sağ. Belə ki, tamamilə ölçüsü. Size + deyil, +1, lakin + rəhbəri. 502 00:38:55,690 --> 00:38:59,990 Biz baş məbləği hər şey dəyişdi, çünki. 503 00:38:59,990 --> 00:39:14,270 Odur ki, indi biz index 1 başlayır ölçüsü 1 növbə var. 504 00:39:14,270 --> 00:39:20,730 Quyruq index 2-dir. Bəli? 505 00:39:20,730 --> 00:39:25,780 >> [Tələbə] ne olur zaman yaddaş siz dequeue strings [0] və strings 'slots 506 00:39:25,780 --> 00:39:29,420 yalnız əsasən, boşaldılmış almaq, və ya sadəcə unutmusunuz? 507 00:39:29,420 --> 00:39:34,700 [Hardison] Bəli. Bu mənada, biz yalnız onların unutmadan edirik. 508 00:39:34,700 --> 00:39:42,640 Biz onların surətlərini saxlanılması Əgər - 509 00:39:42,640 --> 00:39:46,310 çox data strukturları tez-tez elementləri öz surətlərini saklayacaktır 510 00:39:46,310 --> 00:39:51,760 məlumat strukturu idarə edən şəxs narahat deyil, belə ki, 511 00:39:51,760 --> 00:39:53,650 Bütün bu göstəricilər gedir harada. 512 00:39:53,650 --> 00:39:56,000 Bu data structure hər şey üçün keçirir, bütün nüsxələrin haqqında keçirir 513 00:39:56,000 --> 00:39:59,580 hər şey uyğun davam əmin etmək. 514 00:39:59,580 --> 00:40:03,140 Lakin, bu halda, bu data strukturları yalnız sadəlik üçün, 515 00:40:03,140 --> 00:40:05,580 biz onların saxlanılması etdiyiniz bir şey surəti edilməsi deyil. 516 00:40:05,580 --> 00:40:08,630 [Tələbə] Beləliklə, bu davamlı array edir -? >> Bəli. 517 00:40:08,630 --> 00:40:14,350 Biz müəyyən bu qurumun nə geri baxmaq varsa, bu. 518 00:40:14,350 --> 00:40:19,110 Bu, siz gördük kimi bir standart array var 519 00:40:19,110 --> 00:40:24,280 char * s bir sıra. 520 00:40:24,280 --> 00:40:26,340 Ki mi - >> Bəli, mən yalnız merak 521 00:40:26,340 --> 00:40:29,130 siz nəhayət müəyyən dərəcədə, yaddaş run lazımdır əgər 522 00:40:29,130 --> 00:40:32,330 Siz array bütün bu boş ləkələr varsa? 523 00:40:32,330 --> 00:40:36,390 [Hardison] Bəli, yaxşı bir nöqtə var. 524 00:40:36,390 --> 00:40:41,530 >> Biz bu nöqtədə artıq olub nə baxsaq, 525 00:40:41,530 --> 00:40:46,350 biz queue doldurulur sonra, bu kimi görünür. 526 00:40:46,350 --> 00:40:50,390 Amma biz, həqiqətən, bizim queue qədər dolu deyil 527 00:40:50,390 --> 00:40:57,710 biz ölçüsü 2 ki, bir sıra var, lakin bu göstərici 1 başlayır, çünki, 528 00:40:57,710 --> 00:41:02,160 baş göstərici olduğu ki, çünki. 529 00:41:02,160 --> 00:41:08,400 Siz deyirdilər kimi, o strings da element [0], kataloq 0, həqiqətən, yoxdur. 530 00:41:08,400 --> 00:41:10,450 Bu artıq bizim növbəyə deyil. 531 00:41:10,450 --> 00:41:16,460 Biz yalnız getmək və biz bu dequeued zaman üzerine narahat etmədi. 532 00:41:16,460 --> 00:41:18,700 Beləliklə, biz yaddaş tökülmək etdiyiniz kimi görünür olsa da, biz, həqiqətən, yoxdur. 533 00:41:18,700 --> 00:41:23,270 Bookmark istifadə etmək üçün spot mövcuddur. 534 00:41:23,270 --> 00:41:29,310 Müvafiq davranış, biz dequeue bir cəhd və ilk olsaydı 535 00:41:29,310 --> 00:41:34,420 bye off pop ki, "bye" kimi. 536 00:41:34,420 --> 00:41:38,460 İndi növbə index 2 başlayır və ölçüsü 1 daşıyır. 537 00:41:38,460 --> 00:41:42,240 Biz yenidən bir cəhd və enqueue əgər indi, 50 demək 538 00:41:42,240 --> 00:41:47,880 50 index 0 Bu spot getməlidir 539 00:41:47,880 --> 00:41:51,270 hələ bizim üçün var çünki. Bəli, Saad? 540 00:41:51,270 --> 00:41:53,630 [Saad] avtomatik olaraq baş verir? 541 00:41:53,630 --> 00:41:56,150 [Hardison] Bu olduqca avtomatik olmur. Siz riyaziyyat var 542 00:41:56,150 --> 00:42:00,380 bu iş, lakin mahiyyətcə nə biz etdik biz yalnız ətrafında bükülmüş olduğunuz edir. 543 00:42:00,380 --> 00:42:04,070 Bu ortasında bir çuxur var [Saad] Və tamam? 544 00:42:04,070 --> 00:42:08,720 [Hardison] biz riyaziyyat düzgün iş edə bilər əgər edir. 545 00:42:08,720 --> 00:42:15,470 >> Və əslində MOD operator ilə ki, çətin deyil ki, çevrilir. 546 00:42:15,470 --> 00:42:20,040 Belə ki, yalnız kimi biz, Sezar və gizli məhsulları ilə etdi 547 00:42:20,040 --> 00:42:25,190 mod istifadə edərək, biz hər şeyi ətrafında paketi almaq və davam edə bilər 548 00:42:25,190 --> 00:42:28,090 bizim sıra ətrafında və ətrafında və ətrafında olan 549 00:42:28,090 --> 00:42:32,180 rəhbəri pointer hərəkət saxlamaq. 550 00:42:32,180 --> 00:42:38,840 Ki, ölçüsü edək həmişə növbə ərzində həqiqətən elementlərinin sayı hörmət edir. 551 00:42:38,840 --> 00:42:43,110 Və yalnız vasitəsilə bisiklet edir ki, baş göstərici deyil. 552 00:42:43,110 --> 00:42:49,660 Biz əvvəlinə geri getmək əgər, burada nə baxmaq Əgər 553 00:42:49,660 --> 00:42:55,020 və yalnız baş ne baxın 554 00:42:55,020 --> 00:42:58,240 biz bir şey enqueue zaman, heç bir şey baş verib. 555 00:42:58,240 --> 00:43:00,970 Biz başqa bir şey enqueued zaman, heç bir şey baş verib. 556 00:43:00,970 --> 00:43:04,130 Biz bir şey dequeued Tezliklə kimi, baş bir qədər çıxır. 557 00:43:04,130 --> 00:43:06,600 Biz bir şey enqueued, heç bir şey baş verir. 558 00:43:06,600 --> 00:43:11,060 Biz bir şey dequeue zaman qəflətən baş incremented olur. 559 00:43:11,060 --> 00:43:14,660 Biz bir şey enqueue zaman, heç bir şey baş verir. 560 00:43:14,660 --> 00:43:20,240 >> Yenə bir şey dequeue idi nə bu nöqtədə olur? 561 00:43:20,240 --> 00:43:23,240 Hər hansı bir fikir? Nə baş, nə olardı? 562 00:43:23,240 --> 00:43:27,190 Rəhbəri olmalıdır nə 563 00:43:27,190 --> 00:43:32,990 biz başqa bir şey dequeue idi əgər? 564 00:43:32,990 --> 00:43:35,400 Rəhbəri hazırda, kataloq 2 edir 565 00:43:35,400 --> 00:43:38,920 olan növbə rəisi strings [2] deməkdir. 566 00:43:38,920 --> 00:43:44,280 [Tələbə] 0 qaytarır hansı? >> Bu 0 qayıtmalıdırlar. Bu dəqiq ətrafında geri paketi olmalıdır. 567 00:43:44,280 --> 00:43:48,440 İndiyə qədər biz dequeue deyilən hər zaman, biz, baş bir əlavə etdik 568 00:43:48,440 --> 00:43:50,960 baş bir əlavə, baş bir əlavə, baş bir əlavə edin. 569 00:43:50,960 --> 00:43:58,400 Rəhbəri göstərici bizim array son index olur, kimi 570 00:43:58,400 --> 00:44:05,650 sonra biz əvvəlinə ətrafında geri kesmek üçün, 0 geri gedin. 571 00:44:05,650 --> 00:44:09,900 [Charlotte] nə bir yığın olaraq növbə potensialının müəyyən? 572 00:44:09,900 --> 00:44:13,120 [Hardison] Bu halda, biz yalnız bir # müəyyən daimi istifadə etdik. Okay. >> 573 00:44:13,120 --> 00:44:19,590 [Hardison] faktiki. C fayl, siz bir az ilə və pislik edə bilərsiniz 574 00:44:19,590 --> 00:44:21,710 və bu böyük və ya istədiyiniz kimi az kimi olun. 575 00:44:21,710 --> 00:44:25,310 [Charlotte] Belə ki, bir sıra edirik zaman kompüter bilirəm necə edə bilərəm 576 00:44:25,310 --> 00:44:29,120 Siz yığını olmaq istəyirəm necə böyük? 577 00:44:29,120 --> 00:44:31,700 [Hardison] Bu böyük bir sual var. 578 00:44:31,700 --> 00:44:34,800 Yolları bir neçə var. Bir yalnız ön qədər müəyyən edir 579 00:44:34,800 --> 00:44:42,050 və bu demək 4 elementləri və ya 50 elementləri və ya 10,000 ki, bir sıra olacaq. 580 00:44:42,050 --> 00:44:45,430 Başqa bir yolu hacker nəşr insanlar nə etmək 581 00:44:45,430 --> 00:44:52,310 və daha çox şeylər da əlavə almaq kimi növbə dinamik inkişaf var funksiyaları yaratmaq 582 00:44:52,310 --> 00:44:54,740 >> [Charlotte] Belə ki, ilk seçim getmək, nə sintaksis istifadə edirsiniz 583 00:44:54,740 --> 00:44:57,830 proqram demək sıraya həcmi nə qədərdir? 584 00:44:57,830 --> 00:45:04,780 [Hardison] Ah. Belə ki, bu çıxmaq imkan verir. 585 00:45:04,780 --> 00:45:12,650 Burada stack.c hələ Ben, mən yalnız burada üst diyirləyin gedirəm. 586 00:45:12,650 --> 00:45:17,920 Bu burada bax edə bilərəmmi? Bu # gücü 10 müəyyən edir. 587 00:45:17,920 --> 00:45:24,600 Bu biz queue üçün demək olar ki, tam olaraq eyni sintaksis edir. 588 00:45:24,600 --> 00:45:28,390 Queue istisna olmaqla, biz burada ki, əlavə struct sahəsində var. 589 00:45:28,390 --> 00:45:32,760 [Charlotte] Oh, mən gücü string üçün potensialının demək düşündüm. 590 00:45:32,760 --> 00:45:36,770 [Hardison] Ah. Bu söz maksimum uzunluğu var. >> >> O var. 591 00:45:36,770 --> 00:45:41,180 Bəli. Burada həcmi - böyük bir nöqtə var. 592 00:45:41,180 --> 00:45:44,000 Və bu çətin ki, bir şey 593 00:45:44,000 --> 00:45:49,480 nə biz burada bəyan etdiyiniz char * s bir sıra edir. 594 00:45:49,480 --> 00:45:52,770 Göstəricilər bir sıra. 595 00:45:52,770 --> 00:45:56,690 Bu chars bir sıra edir. 596 00:45:56,690 --> 00:46:01,690 Bu fayl üçün arabellekleri elan olduğunuz zaman gördüm nə ehtimalla I / O, 597 00:46:01,690 --> 00:46:06,840 Siz yığını üzərində əl strings yaradılması olduğunuz zaman. 598 00:46:06,840 --> 00:46:09,090 Lakin, nə biz burada var char * s bir sıra edir. 599 00:46:09,090 --> 00:46:13,400 Belə ki, göstəricilər bir sıra var. 600 00:46:13,400 --> 00:46:18,350 Əslində, biz geri kiçiltmək və biz burada neler baxsaq 601 00:46:18,350 --> 00:46:23,140 təqdimat, o faktiki elementləri, karakter data görmək 602 00:46:23,140 --> 00:46:26,180 serialın özü ərzində saxlanılır deyil. 603 00:46:26,180 --> 00:46:42,690 Burada bizim array ərzində saklanmaktadır karakter data göstəricilər var. 604 00:46:42,690 --> 00:46:52,560 Okay. Belə ki, biz, queue həcmi yalnız yığını ilə kimi necə gördüm 605 00:46:52,560 --> 00:46:58,670 ölçüsü həmişə queue hazırda elementlərin sayı etdirir. 606 00:46:58,670 --> 00:47:02,720 2 enqueues yaptıktan sonra, ölçüsü 2-dir. 607 00:47:02,720 --> 00:47:07,110 Bir dequeue etdikdən sonra ölçüsü indi 1-dir. 608 00:47:07,110 --> 00:47:09,330 Başqa enqueue etdikdən sonra ölçüsü 2 qədər geri edir. 609 00:47:09,330 --> 00:47:12,340 Belə ki, ölçüsü, mütləq bu sırada elementlərin sayı hörmət 610 00:47:12,340 --> 00:47:15,580 və sonra baş yalnız velosiped saxlayır. 611 00:47:15,580 --> 00:47:20,210 Bu 0-1-2, 0-1-2, 0-1-2 dən gedir. 612 00:47:20,210 --> 00:47:25,620 Və biz dequeue zəng hər zaman, baş göstərici növbəti indeksi incremented olur. 613 00:47:25,620 --> 00:47:29,930 Baş üzərində getmək haqqında varsa, geri ətrafında 0 ilmə. 614 00:47:29,930 --> 00:47:34,870 Belə ki, biz dequeue funksiyası yaza bilərsiniz. 615 00:47:34,870 --> 00:47:40,200 Biz uşaqlar əvəzinə həyata keçirilməsi üçün enqueue funksiyası tərk etmək olacaq. 616 00:47:40,200 --> 00:47:45,880 >> Biz queue bir element həyata dequeue zaman, 617 00:47:45,880 --> 00:47:55,490 biz baca üçün pop funksiyası yazılı başladı Daniel etdi ki, ilk şey nə idi? 618 00:47:55,490 --> 00:48:00,490 Mənə hələ danışıq etməyən kimsə eşitmək edək. 619 00:48:00,490 --> 00:48:06,710 , Gəlin görmək Saad edək, siz Daniel o pop yazdığı ilk şey nə xatırlayırsınız? 620 00:48:06,710 --> 00:48:08,860 [Saad], bu, var idi - O bir şey üçün test >>. 621 00:48:08,860 --> 00:48:12,140 [Saad] ölçüsü 0-dən çox olur. Məhz >>. 622 00:48:12,140 --> 00:48:14,390 Və üçün test nə idi? 623 00:48:14,390 --> 00:48:19,090 [Saad] serialın içərisində bir şey var görmek üçün test edir. 624 00:48:19,090 --> 00:48:23,210 [Hardison] Bəli. Exactly. Boş əgər Beləliklə, siz yığını həyata bir şey pop bilməz. 625 00:48:23,210 --> 00:48:26,510 Boş əgər Eyni zamanda, bir sıra bir şey dequeue bilməz. 626 00:48:26,510 --> 00:48:30,420 Burada bizim dequeue funksiyası etməlidir ilk şey nədir, sizcə? 627 00:48:30,420 --> 00:48:33,860 [Saad] ölçüsü 0-dən çox deyil? >> Bəli. 628 00:48:33,860 --> 00:48:37,710 Bu halda, mən, həqiqətən, yalnız 0 olmadığını görmek üçün test etdik. 629 00:48:37,710 --> 00:48:42,240 O 0 varsa, biz null ola bilər. 630 00:48:42,240 --> 00:48:45,280 Amma eyni məntiq. 631 00:48:45,280 --> 00:48:49,110 Və bu davam edək. 632 00:48:49,110 --> 00:48:54,600 Ölçüsü 0 deyilsə, biz dequeue istədiyiniz element haradadır? 633 00:48:54,600 --> 00:48:58,550 [Saad] rəhbəri hazırda? Məhz >>. 634 00:48:58,550 --> 00:49:01,720 Biz yalnız bizim queue ilk element çıxarmaq olar 635 00:49:01,720 --> 00:49:07,040 baş element daxil. 636 00:49:07,040 --> 00:49:14,630 Crazy Heç. 637 00:49:14,630 --> 00:49:19,620 Bundan sonra nə etmək lazımdır? Nə var? 638 00:49:19,620 --> 00:49:23,740 Biz dequeue haqqında söhbət başqa şey nə idi? 639 00:49:23,740 --> 00:49:28,130 Bizim queue dəyişib, çünki iki şey, baş var. 640 00:49:28,130 --> 00:49:35,640 [Daniel] ölçüsünü azaldır. >> Biz ölçüsü azaltmaq və baş artırmaq lazımdır? Exactly. 641 00:49:35,640 --> 00:49:40,600 Baş artırmaq üçün, biz yalnız kor-koranə xatırlayıram, baş arta bilməz. 642 00:49:40,600 --> 00:49:45,080 Biz queue.head bunu yalnız bilməz + +. 643 00:49:45,080 --> 00:49:51,630 Biz də gücü ilə bu mod daxil var. 644 00:49:51,630 --> 00:49:54,740 Və nə biz, gücü Stella Mod edirsiniz? 645 00:49:54,740 --> 00:49:58,680 [Stella] ətrafında kesmek üçün var. Məhz >>. 646 00:49:58,680 --> 00:50:04,750 Potensialının Biz mod bunu 0 ətrafında geri paketi var çünki. 647 00:50:04,750 --> 00:50:07,400 Belə ki, indi bu nöqtədə biz Daniel nə edə bilərsiniz. 648 00:50:07,400 --> 00:50:12,700 Biz ölçüsü azalma edə bilərsiniz. 649 00:50:12,700 --> 00:50:29,170 Və sonra biz yalnız queue üst olduğunu element ola bilər. 650 00:50:29,170 --> 00:50:34,000 Bu ilk gnarly cür görünür. Siz bir sual ola bilər. Bağışlayın? 651 00:50:34,000 --> 00:50:37,260 >> [Sam] Nə queue başında ilk var? Ki, hara edir? 652 00:50:37,260 --> 00:50:42,480 [Hardison] Bu alt, dördüncü xətt gəlir. 653 00:50:42,480 --> 00:50:46,060 Biz queue, boş deyil ki, əmin test sonra 654 00:50:46,060 --> 00:50:54,100 biz ilk char * çıxarmaq, biz baş index da oturan olan element çıxarmaq 655 00:50:54,100 --> 00:50:58,680 bizim array, bizim strings array >> və zəng ki, ilk? 656 00:50:58,680 --> 00:51:04,500 [Hardison] Və biz bunu ilk çağırırıq. Bəli. 657 00:51:04,500 --> 00:51:09,850 Just ki izləmək, niyə biz bunu idi düşünürsünüz? 658 00:51:09,850 --> 00:51:18,270 [Sam] Hər bir ilk yalnız q.strings qayıdır [q.head]? >> Bəli. 659 00:51:18,270 --> 00:51:23,830 >> Biz MOD funksiyası ilə q.head bu dəyişən edirik Çünki, 660 00:51:23,830 --> 00:51:27,810 və həmçinin qaytarılması xətt ərzində bunu etmək üçün heç bir yolu yoxdur. 661 00:51:27,810 --> 00:51:31,640 [Hardison] Exactly. Siz spot istəyirik. Sam tamamilə haqqında spot edir. 662 00:51:31,640 --> 00:51:36,800 Biz queue ilk element çıxarmaq və dəyişən onu saxlamaq idi səbəbi 663 00:51:36,800 --> 00:51:43,030 biz yalnız bu xətt q.head etmişdir, çünki edir 664 00:51:43,030 --> 00:51:47,030 orada MOD operator biz nə edə bilər ki, bir şey deyil ki, 665 00:51:47,030 --> 00:51:51,230 və olmadan baş qüvvəyə var - bir xətt. 666 00:51:51,230 --> 00:51:54,480 Biz əslində ilk element çıxarmaq üçün Belə ki, sonra baş tənzimləmək 667 00:51:54,480 --> 00:52:00,430 ölçüsü tənzimləmək, sonra biz çıxardı ki element qaytarın. 668 00:52:00,430 --> 00:52:02,680 Bu biz sonra ortaya görmək lazımdır ki, bir şey 669 00:52:02,680 --> 00:52:04,920 bağlı siyahıları, biz onlara ilə ətrafında oynamaq kimi. 670 00:52:04,920 --> 00:52:08,410 Siz bağlı siyahıları azad və ya atmazdan edirik tez-tez zaman 671 00:52:08,410 --> 00:52:13,500 Siz növbəti element, bir bağlı siyahı növbəti pointer xatırlamaq lazımdır 672 00:52:13,500 --> 00:52:16,330 cari atmazdan əvvəl. 673 00:52:16,330 --> 00:52:23,580 Çünki əks halda siyahısına sol nə məlumat tullamaq. 674 00:52:23,580 --> 00:52:34,160 Sizin cihaz getmək əgər İndi, siz bu queue.c-x həyata açmaq. 675 00:52:34,160 --> 00:52:39,390 Mən queue.c açmaq Belə ki, burada mənə zoom imkan 676 00:52:39,390 --> 00:52:44,970 siz oxşar görünüşlü fayl var ki, görürsünüz. 677 00:52:44,970 --> 00:52:49,200 Biz stack.c ilə əvvəllər nə oxşar görünüşlü faylı. 678 00:52:49,200 --> 00:52:54,690 Biz slaydlar gördüm kimi yalnız müəyyən queue üçün struct var. 679 00:52:54,690 --> 00:52:59,870 >> Biz nə üçün olan enqueue funksiyası var. 680 00:52:59,870 --> 00:53:04,340 Və biz burada dequeue funksiyası var. 681 00:53:04,340 --> 00:53:06,870 Fayl olan dequeue funksiyası unimplemented ki, 682 00:53:06,870 --> 00:53:13,230 isterseniz, siz onu yazın ki, amma PowerPoint geri onu qoymaq lazımdır. 683 00:53:13,230 --> 00:53:16,690 Beləliklə növbəti 5 dəqiqə və ya üçün, uşaqlar enqueue iş 684 00:53:16,690 --> 00:53:22,570 olan demək olar ki, yalnız dequeue əks edir. 685 00:53:22,570 --> 00:53:29,560 Siz enqueueing etdiyiniz zaman baş tənzimləmək üçün yoxdur, amma nə tənzimləmək üçün var? 686 00:53:29,560 --> 00:53:38,920 Size. Beləliklə, siz enqueue, baş bakir qalır zaman, ölçüsü dəyişdirilə olur. 687 00:53:38,920 --> 00:53:46,920 Amma bir az zaman alır - ki mod ilə ətrafında oynamaq olacaq 688 00:53:46,920 --> 00:53:57,560 yeni element da daxil edilməlidir nə index dəqiq anlamaq üçün. 689 00:53:57,560 --> 00:54:03,080 Mən sizə uşaqlar bir az verərəm, Slayd geri qədər dequeue qoymaq 690 00:54:03,080 --> 00:54:05,200 və uşaqlar suallar var, belə ki, biz onları həyata bağırmaq 691 00:54:05,200 --> 00:54:09,220 bir qrup kimi bütün müzakirəsi. 692 00:54:09,220 --> 00:54:13,960 Ayrıca, don't ölçüsü ilə - Siz ölçüsünü tənzimləmək zaman, həmişə yalnız bilər - 693 00:54:13,960 --> 00:54:18,720 Əgər ölçüsü MOD üçün? [Daniel] No >> Siz ölçüsü Mod hüququ yoxdur. 694 00:54:18,720 --> 00:54:24,260 You're əgər Çünki ölçüsü həmişə olacaq - fərz siz müvafiq şeyi idarə edirik 695 00:54:24,260 --> 00:54:30,840 ölçüsü həmişə 0 və 3 arasında olacaq. 696 00:54:30,840 --> 00:54:38,680 Harada siz enqueue edirik zaman Mod etmək lazımdır? 697 00:54:38,680 --> 00:54:41,060 Yalnız müdiri [Tələbə]. Yalnız müdiri >> dəqiq. 698 00:54:41,060 --> 00:54:44,620 Və niyə enqueue ilə bütün MOD üçün? 699 00:54:44,620 --> 00:54:48,830 Siz mod üçün istədiyiniz bir vəziyyət var? 700 00:54:48,830 --> 00:54:53,630 Əgər boşluq da stuff varsa [Tələbə], fəzalarında 1 və 2 kimi 701 00:54:53,630 --> 00:54:55,950 və sonra 0 şey əlavə etmək lazımdır. 702 00:54:55,950 --> 00:55:02,570 [Hardison] Bəli, dəqiq. Baş göstərici çox sonunda əgər, 703 00:55:02,570 --> 00:55:14,210 və ya ölçüsü plus başını daha böyük olduqda, daha doğrusu, sıradakı ətrafında kesmek gedir. 704 00:55:14,210 --> 00:55:17,830 >> Belə ki, biz hazırda slide burada qədər var ki, bu vəziyyət, 705 00:55:17,830 --> 00:55:24,370 Mən indi bir şey enqueue istəyirsinizsə 706 00:55:24,370 --> 00:55:31,110 biz index 0 şey enqueue istəyirəm. 707 00:55:31,110 --> 00:55:35,450 Siz 50 gedir harada baxmaq və mən enqueue 50, zəng əgər 708 00:55:35,450 --> 00:55:40,840 bu alt orada qalır. Bu indeks 0 gedir. 709 00:55:40,840 --> 00:55:44,160 Artıq dequeued ki 'hi "əvəz edir. 710 00:55:44,160 --> 00:55:46,210 [Daniel] Siz artıq dequeue ki, qayğı yoxdur? 711 00:55:46,210 --> 00:55:50,550 Nə enqueue baş ilə bir şey edir? 712 00:55:50,550 --> 00:55:55,770 [Hardison] Oh, belə ki, baş değiştirmeyle deyilik, sorry. 713 00:55:55,770 --> 00:56:02,310 Amma siz daxil etdiyiniz zaman MOD operator istifadə etmək 714 00:56:02,310 --> 00:56:04,250 siz daxil etdiyiniz zaman enqueue istədiyiniz element 715 00:56:04,250 --> 00:56:06,960 Sizin queue növbəti element. 716 00:56:06,960 --> 00:56:10,960 [Basil] Mən bunu etmədi və mən orada "uğur" var. 717 00:56:10,960 --> 00:56:13,370 [Daniel] Oh, mən sizə deyə nəyi başa düşürük. 718 00:56:13,370 --> 00:56:16,240 [Hardison] Beləliklə, siz didn't - yalnız q.size da etdi? 719 00:56:16,240 --> 00:56:20,670 [Basil] Bəli. Mən yalnız tərəflər dəyişdi, mən rəhbəri ilə bir şey etmədi. 720 00:56:20,670 --> 00:56:24,300 [Hardison] Siz, həqiqətən, heç bir şey ola rəhbəri yenidən yoxdur 721 00:56:24,300 --> 00:56:31,650 lakin strings massivinə zaman indeksi, 722 00:56:31,650 --> 00:56:39,500 həqiqətən, davam edir və növbəti element olduğu hesablamaq üçün 723 00:56:39,500 --> 00:56:44,230 yığını withe çünki yığını növbəti element həmişə 724 00:56:44,230 --> 00:56:48,740 ölçüsü müvafiq göstəricisi ilə. 725 00:56:48,740 --> 00:56:55,850 Biz bizim yığını təkan funksiyası geri baxsaq, 726 00:56:55,850 --> 00:57:03,100 biz həmişə sağ index ölçüsü yeni element ilə plunk bilər. 727 00:57:03,100 --> 00:57:06,710 Növbədə ilə Halbuki, biz bunu edə bilər 728 00:57:06,710 --> 00:57:10,340 biz bu vəziyyət olduğunuz halda, çünki, 729 00:57:10,340 --> 00:57:18,130 biz enqueued əgər 50 yeni simli strings [1] sağ gedəcəyini 730 00:57:18,130 --> 00:57:20,540 olan biz istəmirik. 731 00:57:20,540 --> 00:57:41,200 Biz yeni simli index 0 getmək olsun. 732 00:57:41,200 --> 00:57:44,320 >> Mu heç - bəli? [Tələbə] Mən bir sual var, lakin bu, həqiqətən bağlı deyil. 733 00:57:44,320 --> 00:57:48,160 Kimsə yalnız pred göstərici kimi bir şey çağırır zaman nə deməkdir? 734 00:57:48,160 --> 00:57:51,260 Ki, adı nə üçün qısa? Mən yalnız bir adı var bilirəm. 735 00:57:51,260 --> 00:57:59,110 [Hardison] Pred pointer? Bakalým. Nə baxımdan? 736 00:57:59,110 --> 00:58:01,790 [Tələbə] daxil üçün idi. Əgər siz mən sonra soruşa bilərsiniz 737 00:58:01,790 --> 00:58:03,920 həqiqətən bağlı deyil, amma yalnız çünki - 738 00:58:03,920 --> 00:58:07,300 [Hardison] mühazirə olan David insert kodu dan? 739 00:58:07,300 --> 00:58:10,860 Biz qoparmaq və bu barədə danışmaq olar. 740 00:58:10,860 --> 00:58:15,550 Biz növbəti dəfə biz bağlı siyahıları almaq haqqında danışmaq lazımdır. 741 00:58:15,550 --> 00:58:21,440 >> Belə ki, enqueue funksiyası kimi görünür nə baxmaq həqiqətən tez edək. 742 00:58:21,440 --> 00:58:26,530 Insanların enqueue istiqamətində səy ki, ilk şey nə idi? Bu sıraya daxil? 743 00:58:26,530 --> 00:58:29,960 Siz basmaqla yığını üçün nə kimi. 744 00:58:29,960 --> 00:58:32,080 Siz Stella, nə idi? 745 00:58:32,080 --> 00:58:35,050 [Stella, anlaşılmaz] 746 00:58:35,050 --> 00:58:45,700 [Hardison] Exactly. (== HƏCMİNİ q.size) varsa - 747 00:58:45,700 --> 00:58:54,720 Mən doğru yerdə mənim aşırma qoymaq lazımdır - yalan qaytarın. 748 00:58:54,720 --> 00:59:01,370 Bir az böyüdün. Okay. 749 00:59:01,370 --> 00:59:03,800 İndi nə oldu ki, növbəti şey var? 750 00:59:03,800 --> 00:59:11,370 Yalnız yığını ilə kimi və doğru yerdə daxil. 751 00:59:11,370 --> 00:59:16,010 Və belə ki daxil doğru yerdə nə idi? 752 00:59:16,010 --> 00:59:23,170 Yığını ilə deyil olduqca ki bu, kataloq ölçüsü idi. 753 00:59:23,170 --> 00:59:30,210 [Daniel] Mən q.head-ya - >> q.strings? >> Evet. 754 00:59:30,210 --> 00:59:40,470 q.strings [q.head + q.size mod HƏCMİNİ]? 755 00:59:40,470 --> 00:59:42,740 [Hardison] Biz yəqin ki, bu ətrafında parantez qoymaq istəyirik 756 00:59:42,740 --> 00:59:48,830 biz hamıya cleart var ki, müvafiq üstün almaq və edirik ki. 757 00:59:48,830 --> 00:59:55,800 Və bərabər müəyyən? Str üçün >>? Str üçün. >> Böyük. 758 00:59:55,800 --> 01:00:00,160 Və indi biz ki, son şey nədir? 759 01:00:00,160 --> 01:00:06,780 Biz yığını olduğu kimi. >> Ölçüsü artım? >> Ölçüsü artırılması. 760 01:00:06,780 --> 01:00:13,830 Boom. Və sonra başlanğıc kodu bəri yalnız default yalan geri 761 01:00:13,830 --> 01:00:27,460 biz bütün keçir və bütün yaxşı gedir əgər doğru dəyişdirə istəyirəm. 762 01:00:27,460 --> 01:00:33,050 Bütün hüquqlar. Bu bölüm üçün məlumat bir çox var. 763 01:00:33,050 --> 01:00:39,480 Biz kifayət qədər artıq deyilik. Biz story bağlı siyahıları haqqında həqiqətən tez danışmaq istəyirəm. 764 01:00:39,480 --> 01:00:44,010 Mən bu qədər qoymaq lazımdır ki, biz daha sonra geri bilərsiniz. 765 01:00:44,010 --> 01:00:50,850 Amma daha bir neçə slayd üçün təqdimat geri imkan verir. 766 01:00:50,850 --> 01:00:53,790 Belə enqueue TODO, indi biz bunu etdik. 767 01:00:53,790 --> 01:00:57,430 >> İndi story bağlı siyahıları nəzər salaq. 768 01:00:57,430 --> 01:01:00,040 Biz mühazirə Bu bir az daha çox danışdıq. 769 01:01:00,040 --> 01:01:02,540 Biz insanların olduğu nə qədər siz uşaqlar demo gördüm 770 01:01:02,540 --> 01:01:08,220 yöndəmsiz bir-birinə və keçirilməsi nömrələr işarə? >> Edirəm ki idi. 771 01:01:08,220 --> 01:01:16,620 >> Uşaqlar nə düşünürsünüz? Etdi, inşallah, bu bir az demystify? 772 01:01:16,620 --> 01:01:25,990 Siyahısı ilə, biz bir node zəng olacaq ki, bu növü ilə məşğul çıxır ki. 773 01:01:25,990 --> 01:01:32,520 Növbədə və yığını ilə Halbuki biz yığını ilə queue zəng istədiyiniz structs idi 774 01:01:32,520 --> 01:01:34,860 biz yığını növləri bu yeni queue idi 775 01:01:34,860 --> 01:01:39,240 burada siyahısı həqiqətən yalnız qovşaqlarının bir dəstə təşkil edilir. 776 01:01:39,240 --> 01:01:45,920 Strings chars bir dəstə ki, eyni şəkildə bütün birinin yanında sıralanır. 777 01:01:45,920 --> 01:01:50,650 A bağlı siyahı yalnız bir node və başqa node və başqa node və başqa node edir. 778 01:01:50,650 --> 01:01:55,080 Və daha çox birlikdə bütün qovşaqlarının əzici və contiguously onlara saxlanılması çox 779 01:01:55,080 --> 01:01:58,090 yaddaş-birinə doğru bütün növbəti, 780 01:01:58,090 --> 01:02:04,470 bu Növbəti göstərici olan bizə təsadüfi, bu qovşaqlarının yerdə saxlamaq üçün imkan verir. 781 01:02:04,470 --> 01:02:10,500 Və sonra tel cür hamısını birlikdə bir növbəti qeyd etmək. 782 01:02:10,500 --> 01:02:15,850 >> Və nə bu bir sıra artıq idi ki, böyük üstünlüyü idi? 783 01:02:15,850 --> 01:02:21,680 Saxlanılması hər şeyə contiguously yalnız bir-birinə yanında vurulmuş? 784 01:02:21,680 --> 01:02:24,190 Siz saxla? Evet? >> Dinamik yaddaş ayrılması? 785 01:02:24,190 --> 01:02:27,220 Nə mənada >> Dinamik yaddaş ayrılması? 786 01:02:27,220 --> 01:02:31,780 Əgər bu böyük və sizin bütün array hərəkət yoxdur davam edə bilər ki, ildə [Tələbə]? 787 01:02:31,780 --> 01:02:40,940 [Hardison] Exactly. Belə ki, bir sıra ilə, siz ortasında yeni bir element qoymaq istədiyiniz zaman, 788 01:02:40,940 --> 01:02:45,320 yer etmək üçün hər şeyi keçmək lazımdır. 789 01:02:45,320 --> 01:02:47,880 Və kimi biz, növbə ilə danışıb 790 01:02:47,880 --> 01:02:50,080 ki, baş göstərici saxlamaq niyə ki, 791 01:02:50,080 --> 01:02:52,050 biz daim şeyi dəyişir deyilik ki. 792 01:02:52,050 --> 01:02:54,520 Bir böyük array var ki, əgər bahalı olur, çünki 793 01:02:54,520 --> 01:02:57,130 və daim bu təsadüfi insertions edirik. 794 01:02:57,130 --> 01:03:00,820 Siyahısı ilə Halbuki siz bütün yeni node onu atmaq deyil 795 01:03:00,820 --> 01:03:06,330 bu göstəricilər tənzimləmək və tamamlayın. 796 01:03:06,330 --> 01:03:10,940 Bu barədə sucks? 797 01:03:10,940 --> 01:03:16,830 Bundan bir sıra kimi işləmək kimi asan deyil faktı? Evet? 798 01:03:16,830 --> 01:03:22,980 [Daniel] Bəli, mən bu bağlı siyahı xüsusi bir element daxil olmaq çox çətindir tahmin? 799 01:03:22,980 --> 01:03:30,470 [Hardison] Siz yalnız bağlı siyahı ortasında bir ixtiyari element üçün jump bilməz. 800 01:03:30,470 --> 01:03:33,800 Necə yerinə bunu var? Siz bütün şey gezinmek üçün var >>. 801 01:03:33,800 --> 01:03:35,660 [Hardison] Bəli. Siz bir-bir, bir-bir ilə getmək lazımdır. 802 01:03:35,660 --> 01:03:38,480 Bu böyük bir - bu bir ağrı var. 803 01:03:38,480 --> 01:03:41,550 Başqa nə var - bu başqa bir zaval yoxdur. 804 01:03:41,550 --> 01:03:45,340 [Basil] Siz irəli və geri getmək bilməz? Siz bir istiqamətdə getmək üçün var? 805 01:03:45,340 --> 01:03:48,570 [Hardison] Bəli. Belə ki, necə biz bəzən ki, həll edir? 806 01:03:48,570 --> 01:03:53,370 [Basil] siyahıları ikiqat-əlaqədardır? Məhz >>. Ikiqat-bağlı siyahıları var. 807 01:03:53,370 --> 01:03:55,540 Var - üzr? 808 01:03:55,540 --> 01:03:57,620 >> [Sam] O ki pred şey istifadə kimi eyni - 809 01:03:57,620 --> 01:04:01,090 Mən sadəcə yadda ki, pred şey üçün nə ki, deyil? 810 01:04:01,090 --> 01:04:05,850 Deyil ki, ikiqat və story arasında? 811 01:04:05,850 --> 01:04:10,020 O edirdi dəqiq nə [Hardison] edək baxın. 812 01:04:10,020 --> 01:04:15,760 Belə ki, burada biz gedin. Burada siyahı kodu var. 813 01:04:15,760 --> 01:04:25,620 Burada biz burada, predptr var. Əgər söhbət nə bu? 814 01:04:25,620 --> 01:04:30,750 Belə ki, bu idi - o siyahı azad oldu və o, bir pointer saxlamaq üçün çalışırıq. 815 01:04:30,750 --> 01:04:35,000 Bu ikiqat, story bağlı siyahıları deyil. 816 01:04:35,000 --> 01:04:40,090 Bu söhbət, çünki biz siyahısına azad haqqında sonra bu barədə daha çox danışmaq olar 817 01:04:40,090 --> 01:04:42,900 və mən ilk bəzi digər məhsulları göstərmək istəyirəm. 818 01:04:42,900 --> 01:04:51,480 lakin bu, yalnız var - bu Ptr dəyəri xatırlayaraq edir 819 01:04:51,480 --> 01:04:54,170 [Tələbə] Oh, preceeding göstərici var? >> Bəli. 820 01:04:54,170 --> 01:05:04,070 Biz sonra predptr nə biz sonra sərbəst əvvəl Ptr özü arttırmayı ki. 821 01:05:04,070 --> 01:05:09,130 Biz sonra pulsuz Ptr və zəng Ptr = Ptr növbəti, sağ? Bilməz 822 01:05:09,130 --> 01:05:11,260 Bu pis olacaq. 823 01:05:11,260 --> 01:05:20,940 Belə ki, geri bu oğlan isə görək. 824 01:05:20,940 --> 01:05:23,900 >> Siyahıları haqqında digər pis odur ki, bir sıra ilə isə 825 01:05:23,900 --> 01:05:26,520 biz yalnız özlərini birinin yanında dizilir bütün elementləri var 826 01:05:26,520 --> 01:05:29,050 burada biz də bu göstərici təqdim ediblər. 827 01:05:29,050 --> 01:05:34,060 Belə ki, biz istifadə yaşadığınızı yaddaş əlavə yığın var 828 01:05:34,060 --> 01:05:37,910 biz siyahısında saxlanılması edirik ki, hər bir element üçün. 829 01:05:37,910 --> 01:05:40,030 Biz rahatlıq almaq, ancaq bir dəyəri minir. 830 01:05:40,030 --> 01:05:42,230 O, bu dəfə dəyəri ilə gəlir 831 01:05:42,230 --> 01:05:45,270 və çox bu yaddaş dəyəri ilə gəlir. 832 01:05:45,270 --> 01:05:47,800 Indi array hər element keçmək lazımdır mənada ki, Saat 833 01:05:47,800 --> 01:05:58,670 indeksi 10 bir və ya bir sıra index 10 olardı tapmaq üçün. 834 01:05:58,670 --> 01:06:01,230 >> Yalnız həqiqətən tez zaman diagram həyata bu siyahıları, 835 01:06:01,230 --> 01:06:05,980 adətən biz siyahısına rəhbəri və ya siyahıdan ilk göstərici üzrə keçirilməsi 836 01:06:05,980 --> 01:06:08,010 və bu gerçək bir pointer unutmayın. 837 01:06:08,010 --> 01:06:11,100 Bu yalnız 4 bayt var. Bu faktiki node özü deyil. 838 01:06:11,100 --> 01:06:17,120 Belə ki, onu heç bir int dəyər ki, heç növbəti göstərici var ki, bax. 839 01:06:17,120 --> 01:06:20,790 Bu sözün yalnız bir göstərici var. 840 01:06:20,790 --> 01:06:23,550 Bu faktiki node struct ki, bir şey qeyd etmək olacaq. 841 01:06:23,550 --> 01:06:28,480 [Sam] node adlı göstərici? >> Bu - no. Bu node bir şey bir göstəricisidir. 842 01:06:28,480 --> 01:06:32,540 Bu node struct bir göstəricisidir. >> Oh, tamam. 843 01:06:32,540 --> 01:06:36,870 Sağ, sol, kod haqqında Diaqram. 844 01:06:36,870 --> 01:06:42,190 Biz başlamaq üçün yaxşı bir yoludur null, bunu edə bilərsiniz. 845 01:06:42,190 --> 01:06:49,850 Zaman diaqram ki, belə ya bu null kimi yazmaq və ya onu bir xətt qoydu. 846 01:06:49,850 --> 01:06:53,910 >> Siyahıları ilə işləmək üçün asan yollarından biri, 847 01:06:53,910 --> 01:06:57,430 və biz sizin hər başına nə soruşmaq və iki arasındakı fərqləri görmək əlavə 848 01:06:57,430 --> 01:07:01,320 lakin prepending mütləq asandır. 849 01:07:01,320 --> 01:07:05,790 Ü siz başına, bu deyil - zaman başına (7), 850 01:07:05,790 --> 01:07:10,050 Siz node struct getmək və yaratmaq 851 01:07:10,050 --> 01:07:13,870 və indi, çünki biz bu prepended bəri, o, qeyd etmək ilk təyin 852 01:07:13,870 --> 01:07:17,240 bu siyahı başında olacaq. 853 01:07:17,240 --> 01:07:22,540 Başqa bir node yaradır başına (3),, indi 3 7 əvvəl gəlir varsa. 854 01:07:22,540 --> 01:07:31,130 Belə ki, mahiyyətcə bizim siyahısına daxil şeyə məcbur edirik. 855 01:07:31,130 --> 01:07:34,720 İndi, başına, bəzən insanlar təkan zəng edə bilərsiniz 856 01:07:34,720 --> 01:07:39,600 çünki sizin siyahı üzərində yeni element məcbur edirik. 857 01:07:39,600 --> 01:07:43,270 Bu siyahının ön silmək üçün də asandır. 858 01:07:43,270 --> 01:07:45,650 Belə ki, insanlar tez-tez ki, pop zəng edəcək. 859 01:07:45,650 --> 01:07:52,200 Və bu şəkildə, bir bağlı siyahısını istifadə edərək, bir yığın emulate bilər. 860 01:07:52,200 --> 01:07:57,880 Whoops. Bağışlayın, ancaq, indi biz əlavə nəzərə alırıq. Belə ki, burada biz başına (3), indi (7) prepended. 861 01:07:57,880 --> 01:08:02,600 Əgər biz prepended əgər biz (4), bu siyahıya daxil başqa bir şey prepended, 862 01:08:02,600 --> 01:08:06,540 sonra 4 və sonra 3 və sonra 7 ediyorum. 863 01:08:06,540 --> 01:08:14,220 Beləliklə biz pop və aradan qaldırılması, 3, 4 aradan qaldırılması ola bilər, 7 çıxarın. 864 01:08:14,220 --> 01:08:16,500 Tez-tez bu barədə düşünmək daha asan şəkildə əlavə edir. 865 01:08:16,500 --> 01:08:20,310 Mən burada əlavə ilə kimi görünür nə diagrammed etdik. 866 01:08:20,310 --> 01:08:23,380 Burada, əlavə (7) hər hansı bir müxtəlif baxmaq deyil 867 01:08:23,380 --> 01:08:25,160 çünki siyahıda yalnız bir element var. 868 01:08:25,160 --> 01:08:28,620 Və eklenmesi (3) sonunda qoyur. 869 01:08:28,620 --> 01:08:31,020 Bəlkə indi əlavə ilə oyun görə bilərsiniz 870 01:08:31,020 --> 01:08:36,600 ki, siyahının başında olduğu biz yalnız bilirik ildən başlayaraq 871 01:08:36,600 --> 01:08:39,450 siz siyahısına vasitəsilə bütün yolu getmək üçün bir siyahısına əlavə etmək 872 01:08:39,450 --> 01:08:46,500 , sonunda almaq dayandırmaq, sonra node və aşağı plunk hər şey qurmaq. 873 01:08:46,500 --> 01:08:50,590 Bütün stuff qədər tel. 874 01:08:50,590 --> 01:08:55,170 Belə ki, başına ilə kimi biz yalnız, həqiqətən, tez bu vasitəsilə yarıb 875 01:08:55,170 --> 01:08:58,170 bir siyahı başına o, kifayət qədər sadə. 876 01:08:58,170 --> 01:09:02,960 >> Siz yeni node etmək, bəzi dinamik yaddaş ayrılması daxildir. 877 01:09:02,960 --> 01:09:09,830 Belə ki, burada biz malloc istifadə node struct edirik. 878 01:09:09,830 --> 01:09:14,710 Malloc Belə ki, daha sonra bizim üçün yaddaş kənara lazımdır, çünki biz istifadə etdiyiniz 879 01:09:14,710 --> 01:09:20,350 biz bu istəmirəm, çünki - biz bu yaddaş uzun müddət davam etmək istəyirəm. 880 01:09:20,350 --> 01:09:25,350 Və biz yalnız ayrılan yaddaşında yer bir göstərici almaq. 881 01:09:25,350 --> 01:09:29,260 Biz node ölçüsü istifadə, biz sahələrində yekun yoxdur. 882 01:09:29,260 --> 01:09:31,899 Biz əl bytes sayı yaratmaq deyil 883 01:09:31,899 --> 01:09:39,750 əvəzinə biz bytes müvafiq sayda alıyorsanız bilirik ki sizeof istifadə edin. 884 01:09:39,750 --> 01:09:43,660 Biz malloc zəng nail test əmin olun. 885 01:09:43,660 --> 01:09:47,939 Bu ümumi etmək istəyirəm bir şey deyil. 886 01:09:47,939 --> 01:09:52,590 Müasir maşın haqqında, yaddaşlı həyata çalışan asan bir şey deyil 887 01:09:52,590 --> 01:09:56,610 siz məhsullarının bir ton ayrılması və böyük bir siyahı edirik halda, 888 01:09:56,610 --> 01:10:02,220 lakin siz iPhone və ya Android kimi demək üçün stuff tikinti edirsinizsə, 889 01:10:02,220 --> 01:10:05,230 siz sıx bir şey yapýyorsun xüsusilə əgər, məhdud yaddaş resursları var. 890 01:10:05,230 --> 01:10:08,300 Belə ki, təcrübə almaq üçün yaxşı deyil. 891 01:10:08,300 --> 01:10:10,510 >> Mən burada bir neçə müxtəlif funksiyaları istifadə etdiyiniz üçün bildirək ki, 892 01:10:10,510 --> 01:10:12,880 yeni növ olduğunu gördüm ki. 893 01:10:12,880 --> 01:10:15,870 Belə fprintf yalnız printf nasıl 894 01:10:15,870 --> 01:10:21,320 ilk arqument istisna olmaqla siz çap istediğiniz axın edir. 895 01:10:21,320 --> 01:10:23,900 Bu halda, biz standart səhv string çap etmək istəyirəm 896 01:10:23,900 --> 01:10:29,410 olan standart outstream fərqlidir. 897 01:10:29,410 --> 01:10:31,620 Mənim cari eyni yerdə göstərir. 898 01:10:31,620 --> 01:10:34,600 Bu da terminal üçün baskı, lakin siz - 899 01:10:34,600 --> 01:10:38,790 o əmrləri istifadə edərək haqqında, yönlendirme texnika öyrənildi 900 01:10:38,790 --> 01:10:42,290 Əgər problem set 4 Tommy video haqqında öyrəndim, siz yönlendirebilir 901 01:10:42,290 --> 01:10:47,900 müxtəlif sahələrdə, sonra çıxış proqram, burada, çıxın. 902 01:10:47,900 --> 01:10:50,440 Bu, əsas dönən kimi mahiyyətcə var 903 01:10:50,440 --> 01:10:53,600 burada geri bir şey deyil, çünki biz exit istifadə istisna olmaqla. 904 01:10:53,600 --> 01:10:57,140 Biz əsas deyilik, ona qaytarılması istədiyimiz kimi proqram çıxmaq deyil. 905 01:10:57,140 --> 01:11:03,020 Beləliklə, biz çıxış funksiyasından istifadə və bu bir səhv baş kodu verir. 906 01:11:03,020 --> 01:11:11,890 Sonra burada i bərabər olmaq üçün yeni node dəyəri sahəsində, onun i sahəsində müəyyən, sonra biz onu tel. 907 01:11:11,890 --> 01:11:15,530 Biz, ilk işarə yeni node növbəti göstərici müəyyən 908 01:11:15,530 --> 01:11:20,460 və sonra birinci indi yeni node qeyd edəcək. 909 01:11:20,460 --> 01:11:25,120 Kodu Bu ilk xətləri, biz, həqiqətən, yeni node tikinti edirik. 910 01:11:25,120 --> 01:11:27,280 Bu funksiya son iki xətləri ancaq ilk deyildir. 911 01:11:27,280 --> 01:11:30,290 Siz, həqiqətən, bir köməkçi funksiyası daxil funksiyası daxil çıxarmaq olar. 912 01:11:30,290 --> 01:11:32,560 Tez-tez mən nə ki, mən bir funksiyası onu çıxarmaq 913 01:11:32,560 --> 01:11:36,040 Mən bu build node kimi bir şey, zəng 914 01:11:36,040 --> 01:11:40,410 və bu başına funksiyası olduqca kiçik saxlayır, yalnız 3 hat sonra var. 915 01:11:40,410 --> 01:11:48,710 Mən build node funksiyası zəng etmək, və sonra mən tel hər şey. 916 01:11:48,710 --> 01:11:51,970 >> Mən sizə göstərmək istəyirəm son şey, 917 01:11:51,970 --> 01:11:54,030 və mən, siz öz əlavə və bütün bunu bildirin lazımdır 918 01:11:54,030 --> 01:11:57,500 siyahısı üzərində təkrarlamaq üçün necə. 919 01:11:57,500 --> 01:12:00,780 Siyahısı üzərində təkrarlamaq üçün müxtəlif yollar bir dəstə var. 920 01:12:00,780 --> 01:12:03,140 Bu halda, biz bir siyahı uzunluğu tapmaq olacaq. 921 01:12:03,140 --> 01:12:06,570 Belə ki, uzunluğu = 0 başlar. 922 01:12:06,570 --> 01:12:11,580 Bu simli üçün strlen yazılı çox oxşardır. 923 01:12:11,580 --> 01:12:17,780 Bu burada loop üçün bu, sizə göstərmək istəyirəm nə. 924 01:12:17,780 --> 01:12:23,530 Bu kinda funky görünür; bu adi deyil int i = 0, i 01:12:34,920 Bunun əvəzinə, bu siyahının başında olmaq üçün dəyişən n başlatılıyor edir. 926 01:12:34,920 --> 01:12:40,620 Bizim iterator dəyişən null deyil isə və sonra, biz davam. 927 01:12:40,620 --> 01:12:46,340 Konvensiya ilə, bizim siyahı sonunda null olacaq, çünki bu. 928 01:12:46,340 --> 01:12:48,770 Və sonra, daha doğrusu + + bunu daha arttırmayı 929 01:12:48,770 --> 01:12:57,010 + ilə bağlı siyahı ekvivalent + n = n> yanında. 930 01:12:57,010 --> 01:13:00,410 >> Vaxt bitti çünki burada boşluqlar doldurmaq qoy edəcəyik. 931 01:13:00,410 --> 01:13:09,300 Siz spellr psets iş kimi mind bu saxlamaq. 932 01:13:09,300 --> 01:13:11,650 Əlaqəli siyahıları, bir hash table həyata edirsinizsə, 933 01:13:11,650 --> 01:13:14,010 mütləq çox lazımlı olacaq. 934 01:13:14,010 --> 01:13:21,780 Və şeyə loop üçün bu idiom olan ümid edirəm ki, bir çox asan həyat edəcək. 935 01:13:21,780 --> 01:13:25,910 Hər hansı sual, tez? 936 01:13:25,910 --> 01:13:28,920 [Sam] siz başa sll və nc göndərmək olacaq? 937 01:13:28,920 --> 01:13:38,360 [Hardison] Bəli. Mən başa slaydlar və başa sll yığını və queue.cs göndərmək lazımdır. 938 01:13:38,360 --> 01:13:41,360 [CS50.TV]