1 00:00:00,000 --> 00:00:01,000 [Powered by Google Translate] [Bölmə 6] [Daha Rahat] 2 00:00:01,000 --> 00:00:04,000 [Rob Bowden] [Harvard Universiteti] 3 00:00:04,000 --> 00:00:09,000 [Bu CS50 edir.] [CS50.TV] 4 00:00:09,000 --> 00:00:11,000 >> Biz suallara bizim bölməsinə rəhbərlik edə bilər. 5 00:00:11,000 --> 00:00:17,000 Mən əvvəl yerin URL göndərdi. 6 00:00:17,000 --> 00:00:22,000 Suallar bölməsində başlanması demək- 7 00:00:22,000 --> 00:00:26,000 yəqin çox asan sual unsick-dir tamamilə deyiləm 8 00:00:26,000 --> 00:00:28,000 valgrind olunur yalnız nə? 9 00:00:28,000 --> 00:00:30,000 Valgrind nə edir? 10 00:00:30,000 --> 00:00:34,000 Hər kəs valgrind nə demək istəyirəm? 11 00:00:34,000 --> 00:00:36,000 [Tələbə] Checks yaddaş sızıntıları. 12 00:00:36,000 --> 00:00:41,000 Bəli, valgrind ümumi yaddaş checker edir. 13 00:00:41,000 --> 00:00:44,000 Əgər hər hansı bir yaddaş sızıntıları varsa, sonunda, sizə deyir 14 00:00:44,000 --> 00:00:49,000 siz istəyirsinizsə çünki üçün istifadə etdiyiniz nə çox deyil 15 00:00:49,000 --> 00:00:54,000 problem müəyyən və ya istəyirsinizsə, yaxşı 16 00:00:54,000 --> 00:00:59,000 böyük board almaq, siz heç bir yaddaş sızıntıları lazımdır 17 00:00:59,000 --> 00:01:01,000 və halda, siz tapa bilərsiniz bir yaddaş sızıntısı var 18 00:01:01,000 --> 00:01:04,000 bir fayl açmaq zaman da unutmayın 19 00:01:04,000 --> 00:01:07,000 və bunu yaxın olmayan, bir yaddaş sızıntısı var. 20 00:01:07,000 --> 00:01:10,000 >> Bir çox onlar azad deyilik ki, bəzi node axtarır 21 00:01:10,000 --> 00:01:15,000 zaman, həqiqətən, onlar ilk addım lüğət bağlamamışlar. 22 00:01:15,000 --> 00:01:19,000 Bu da, hər hansı bir yalnış varsa oxuyur sizə deyir və ya yazır 23 00:01:19,000 --> 00:01:22,000 siz cəhd və bir dəyər əgər deməkdir 24 00:01:22,000 --> 00:01:26,000 ki yığın sonunda kənarda və bu seg günah nə deyil 25 00:01:26,000 --> 00:01:30,000 lakin valgrind, həqiqətən orada yazılı edilməməlidir kimi olarsınız 26 00:01:30,000 --> 00:01:33,000 və siz mütləq o ya hər hansı olmamalıdır. 27 00:01:33,000 --> 00:01:38,000 Necə valgrind istifadə edirsiniz? 28 00:01:38,000 --> 00:01:42,000 Necə valgrind istifadə edirsiniz? 29 00:01:42,000 --> 00:01:45,000 >> Bu ümumi bir sual 30 00:01:45,000 --> 00:01:49,000 cür çalıştırın və çıxış oldu. 31 00:01:49,000 --> 00:01:51,000 Çıxış dəfə çox böyük olunur. 32 00:01:51,000 --> 00:01:54,000 Bəzi olduqca yanlış şey varsa yerləşir əyləncə səhvlər də var 33 00:01:54,000 --> 00:01:59,000 bir loop baş, o, nəhayət, "Yol çox səhvlər deyəcəklər. 34 00:01:59,000 --> 00:02:03,000 İndi sayılması dayandırmaq üçün gedirəm. " 35 00:02:03,000 --> 00:02:08,000 Bu əsasən analiz ki, mətn çıxış edir. 36 00:02:08,000 --> 00:02:13,000 Sonda, bu, siz ki, hər hansı bir yaddaş sızıntıları izah edəcək 37 00:02:13,000 --> 00:02:16,000 faydalı neçə bloklar, ola bilər, çünki 38 00:02:16,000 --> 00:02:20,000 bir blok unfreed varsa, o, tapmaq üçün adətən asandır 39 00:02:20,000 --> 00:02:23,000 1000 blokları unfreed çox. 40 00:02:23,000 --> 00:02:26,000 Unfreed 1000 blokları yəqin ki, siz azad deyilik deməkdir 41 00:02:26,000 --> 00:02:30,000 müvafiq və ya bir şey sizin bağlı siyahıları. 42 00:02:30,000 --> 00:02:32,000 Bu valgrind edir. 43 00:02:32,000 --> 00:02:35,000 >> İndi biz suallar bizim bölməsi 44 00:02:35,000 --> 00:02:38,000 hansı yükləmək lazım deyil. 45 00:02:38,000 --> 00:02:41,000 Siz mənim adını basın və kosmik onları qoparmaq bilər. 46 00:02:41,000 --> 00:02:44,000 İndi mənə basın. 47 00:02:44,000 --> 00:02:46,000 Revision 1 biz ilk edirik hansı yığını olacaq. 48 00:02:46,000 --> 00:02:55,000 Revision 2 növbə olacaq və Revision 3 story bağlı siyahı olacaq. 49 00:02:55,000 --> 00:02:58,000 Bizim yığını ilə off başlayır. 50 00:02:58,000 --> 00:03:02,000 Burada dediyi kimi, bir yığın, ən əsas biri 51 00:03:02,000 --> 00:03:07,000 informatika fundamental data strukturlar. 52 00:03:07,000 --> 00:03:11,000 Çox prototip nümunəsidir 53 00:03:11,000 --> 00:03:13,000 yemək salonunda qablar və yığını. 54 00:03:13,000 --> 00:03:16,000 Bir yığın təqdim olunur zaman ki, əsasən var 55 00:03:16,000 --> 00:03:20,000 kimsə, demək gedir "qablar bir yığın kimi, Oh". 56 00:03:20,000 --> 00:03:22,000 Siz qablar stack up. 57 00:03:22,000 --> 00:03:24,000 Sonra zaman bir tray çəkin gedin 58 00:03:24,000 --> 00:03:31,000 çıxardı əldə olan ilk tray yığını qoymaq ki, son biridir. 59 00:03:31,000 --> 00:03:34,000 Bu da-kimi yığını burada deyir 60 00:03:34,000 --> 00:03:37,000 biz yığını adlı yaddaş seqmentinin var. 61 00:03:37,000 --> 00:03:40,000 Və niyə yığını adlanır? 62 00:03:40,000 --> 00:03:42,000 >> Çünki bir yığın data strukturu kimi, 63 00:03:42,000 --> 00:03:46,000 bu yığını haqqında yığını çərçivəsində itiyor və pops 64 00:03:46,000 --> 00:03:53,000 yığını çərçivəsində bir funksiyası xüsusi bir zəng kimi burada var. 65 00:03:53,000 --> 00:03:57,000 Və bir yığın kimi, her zaman geri olacaq 66 00:03:57,000 --> 00:04:03,000 funksiyası zəng daha aşağı yığın çərçivəsində daxil aşağı almaq bilər. 67 00:04:03,000 --> 00:04:08,000 Siz əsas zəng foo zəng bar və əsas birbaşa bar geri ola bilməz. 68 00:04:08,000 --> 00:04:14,000 O, həmişə təzyiq və yaratma düzgün yığını riayət var. 69 00:04:14,000 --> 00:04:18,000 Iki əməliyyatları, dediyim kimi, push və pop edir. 70 00:04:18,000 --> 00:04:20,000 Bu universal şərtlər var. 71 00:04:20,000 --> 00:04:26,000 Siz destesi heç nə baxımından təkan və pop bilməlidir. 72 00:04:26,000 --> 00:04:28,000 Biz sıralarında müxtəlif növ var görəcəksiniz. 73 00:04:28,000 --> 00:04:32,000 Bu, həqiqətən bir universal müddəti deyil, təkan və pop baca üçün universaldır. 74 00:04:32,000 --> 00:04:34,000 Push yalnız yığını qoyulur. 75 00:04:34,000 --> 00:04:37,000 Pop yığını çıxarmaq deyil. 76 00:04:37,000 --> 00:04:43,000 Və biz, biz typedef struct yığını var burada 77 00:04:43,000 --> 00:04:46,000 biz char ** strings var. 78 00:04:46,000 --> 00:04:51,000 Hər ** tərəfindən qorxuram almaq etməyin. 79 00:04:51,000 --> 00:04:54,000 Bu strings bir sıra olan qədər başa gedir 80 00:04:54,000 --> 00:04:58,000 simvol göstəricilərinə və ya bir sıra hallarda 81 00:04:58,000 --> 00:05:00,000 simvol göstəricilərinə strings olur. 82 00:05:00,000 --> 00:05:05,000 Bu strings olmaq deyil, burada onlar strings olmaq olacaq. 83 00:05:05,000 --> 00:05:08,000 >> Biz strings bir sıra var. 84 00:05:08,000 --> 00:05:14,000 Biz yığını hazırda nə qədər çox elementləri təmsil edən bir ölçüsü var, 85 00:05:14,000 --> 00:05:19,000 və biz yığını nə çox elementləri ola bilər olan qabiliyyəti var. 86 00:05:19,000 --> 00:05:22,000 Gücü, 1-dən böyük bir şey kimi başlamaq lazımdır 87 00:05:22,000 --> 00:05:27,000 lakin ölçüsü 0 kimi başlamaq niyyətindədir. 88 00:05:27,000 --> 00:05:36,000 İndi, bir yığın hesab edə bilər üç müxtəlif yollarla əsasən var. 89 00:05:36,000 --> 00:05:39,000 Bəli, orada yəqin ki, daha çox, lakin iki əsas yolları 90 00:05:39,000 --> 00:05:43,000 bir sıra istifadə edərək həyata keçirə bilər, və ya bir bağlı siyahısını istifadə edərək həyata bilər. 91 00:05:43,000 --> 00:05:48,000 Əlaqəli siyahıları növ olan bacalar etmək mənasız edir. 92 00:05:48,000 --> 00:05:51,000 O, bağlı siyahıları istifadə edərək, bir yığın etmək çox asandır 93 00:05:51,000 --> 00:05:55,000 belə ki, burada biz, diziler istifadə yığını etmək olacaq 94 00:05:55,000 --> 00:05:59,000 və sonra seriallarda istifadə edərək, bu barədə düşünmək iki yol da var. 95 00:05:59,000 --> 00:06:01,000 Əvvəl, mən deyəndə ki, biz yığını üçün gücü 96 00:06:01,000 --> 00:06:04,000 biz yığını bir element uyğun bilər. 97 00:06:04,000 --> 00:06:09,000 >> Bu ola bilər bir yolu kimi tezliklə 10 elementlər hit, sonra Bitirdiğinizde edir. 98 00:06:09,000 --> 00:06:13,000 Siz dünyada 10 şeylər bağlı bir üst olduğunu bilirik bilər 99 00:06:13,000 --> 00:06:16,000 sizin yığını haqqında 10-dan çox şeyi heç vaxt lazımdır ki, 100 00:06:16,000 --> 00:06:20,000 Bu halda sizin yığını olan ölçüsü bağlı bir üst ola bilər. 101 00:06:20,000 --> 00:06:23,000 Yoxsa, sizin yığını ucu-bucağı olmamaq ola bilər 102 00:06:23,000 --> 00:06:27,000 bir sıra edirik amma əgər ki, hər bir zaman 10 elementlər edib o deməkdir ki, 103 00:06:27,000 --> 00:06:29,000 20 elementlər hit zaman sonra, 20 elementləri inkişaf üçün gedən və edirik 104 00:06:29,000 --> 00:06:33,000 30 elementlər və ya 40 elementlər üçün array inkişaf etmək olacaq. 105 00:06:33,000 --> 00:06:37,000 Siz burada nə olacaq nə olan gücü, artırmaq lazımdır olacaq. 106 00:06:37,000 --> 00:06:40,000 Biz yığını maksimum ölçüsü çatmaq hər bir zaman 107 00:06:40,000 --> 00:06:46,000 başqa bir şey basmaq zaman, biz artırılması lazım olacaq. 108 00:06:46,000 --> 00:06:50,000 Burada təkan bool push (char * küç) kimi bəyan etmisiniz. 109 00:06:50,000 --> 00:06:54,000 Char * küçəsi, biz yığını üzərinə basmaqla ki dizesidir 110 00:06:54,000 --> 00:06:58,000 və bool yalnız biz nail ya uğursuz olub deyir. 111 00:06:58,000 --> 00:07:00,000 >> Necə biz uğursuz ola bilər? 112 00:07:00,000 --> 00:07:04,000 Siz hesab edə bilər ki, yalnız hal nədir 113 00:07:04,000 --> 00:07:07,000 biz saxta qayıtmaq lazımdır harada? 114 00:07:07,000 --> 00:07:09,000 Bəli. 115 00:07:09,000 --> 00:07:12,000 [Tələbə] tam və biz həmsərhəddir icrası istifadə edirsinizsə. 116 00:07:12,000 --> 00:07:17,000 Bəli, belə ki, biz müəyyən-o nə cavab 117 00:07:17,000 --> 00:07:23,000 tam və biz bir Məhdud həyata kullanıyorsanız. 118 00:07:23,000 --> 00:07:26,000 Sonra biz mütləq yalan qayıdacaqlar. 119 00:07:26,000 --> 00:07:31,000 Kimi tezliklə biz serialın 10 şeylər edib, biz 11 uyğun bilməz, biz saxta qayıtmaq belə. 120 00:07:31,000 --> 00:07:32,000 Bu hədsiz ne olur? Bəli. 121 00:07:32,000 --> 00:07:38,000 Əgər nədənsə array genişləndirmək bilməz. 122 00:07:38,000 --> 00:07:43,000 Bəli, belə yaddaş, məhdud resurs deyil 123 00:07:43,000 --> 00:07:51,000 və nəhayət, biz yenidən üzərində yığını üzərinə basmaqla şeyi saxlamaq əgər, 124 00:07:51,000 --> 00:07:54,000 biz uyğun böyük bir sıra cəhd və ayrılması olacaq 125 00:07:54,000 --> 00:07:59,000 biz istifadə etdiyiniz böyük gücü və malloc və ya hər hansı saxta geri gedir. 126 00:07:59,000 --> 00:08:02,000 Yaxşı, malloc null qayıdacaqlar. 127 00:08:02,000 --> 00:08:05,000 >> Unutmayın, heç malloc zəng hər zaman, görmək yoxlanılması edilməlidir, əgər 128 00:08:05,000 --> 00:08:12,000 null qayıtdıqda və ya başqa bir düzgün çıxılmaqla edir. 129 00:08:12,000 --> 00:08:17,000 Biz qeyri-məhdud yığını olsun ildən, 130 00:08:17,000 --> 00:08:21,000 biz cəhd əgər biz yalan qaytarılması olacaq etdiyiniz yalnız halda 131 00:08:21,000 --> 00:08:26,000 gücü və malloc artırmaq və ya saxta qaytarır nə. 132 00:08:26,000 --> 00:08:30,000 Sonra pop, dəlilləri yox edir 133 00:08:30,000 --> 00:08:37,000 və yığını üst olduğunu string qaytarır. 134 00:08:37,000 --> 00:08:41,000 Nə olursa olsun ən son yığını haqqında sövq edilib, geri nə pop edir 135 00:08:41,000 --> 00:08:44,000 və bu da yığını rədd et. 136 00:08:44,000 --> 00:08:50,000 Və yığını haqqında heç bir şey yoxdur, əgər null qaytarır fark. 137 00:08:50,000 --> 00:08:53,000 Bu yığın boş olduğunu həmişə mümkündür. 138 00:08:53,000 --> 00:08:55,000 Java, siz ki, və ya digər dillərdə üçün istifadə edirsinizsə, 139 00:08:55,000 --> 00:09:01,000 boş yığını olan pop çalışır istisna və ya bir şey səbəb ola bilər. 140 00:09:01,000 --> 00:09:09,000 >> Lakin C, null biz bu problemlərin öhdəsindən necə hallarda bir çox növüdür. 141 00:09:09,000 --> 00:09:13,000 Null Geri biz yığını boş olduğunu demek olacaq necə. 142 00:09:13,000 --> 00:09:16,000 Biz, sizin yığını funksionallığı test kodu verdik 143 00:09:16,000 --> 00:09:19,000 itələmək və pop həyata keçirir. 144 00:09:19,000 --> 00:09:23,000 Bu kod çox olmayacaq. 145 00:09:23,000 --> 00:09:40,000 Mən-faktiki olaraq, biz bunu əvvəl, işarə, işarə- 146 00:09:40,000 --> 00:09:44,000 siz onu görməmişik, əgər malloc yalnız funksiyası deyil 147 00:09:44,000 --> 00:09:47,000 ki, sizin üçün yığın yaddaş ayırır. 148 00:09:47,000 --> 00:09:51,000 Alloc funksiyaları bir ailə var. 149 00:09:51,000 --> 00:09:53,000 Ilk alıştığınız olan malloc edir. 150 00:09:53,000 --> 00:09:56,000 Sonra malloc eyni şey etdiyi calloc, var 151 00:09:56,000 --> 00:09:59,000 amma bu sizin üçün hər şeyi sıfır olacaq. 152 00:09:59,000 --> 00:10:04,000 Heç bir şey mallocing sonra null hər şeyi təyin etmək istəyirdi varsa 153 00:10:04,000 --> 00:10:06,000 yalnız əvəzinə yazılı ilk növbədə calloc istifadə etməli 154 00:10:06,000 --> 00:10:09,000 yaddaş bütün məhəllə həyata sıfıra loop üçün. 155 00:10:09,000 --> 00:10:15,000 >> Realloc, malloc kimi xüsusi hallarda bir çox 156 00:10:15,000 --> 00:10:19,000 lakin əsasən realloc nə edir 157 00:10:19,000 --> 00:10:24,000 artıq ayrılıb bir pointer edir. 158 00:10:24,000 --> 00:10:27,000 Realloc burada diqqət istəyirəm funksiyasıdır. 159 00:10:27,000 --> 00:10:31,000 Artıq malloc döndü ki, bir pointer edir. 160 00:10:31,000 --> 00:10:35,000 Gəlin siz malloc dən 10 bayt göstərici tələb deyirlər. 161 00:10:35,000 --> 00:10:38,000 Sonra, siz 20 bytes istədiklərini reallaşdırmaq 162 00:10:38,000 --> 00:10:42,000 belə ki, 20 bayt ilə pointer haqqında realloc zəng 163 00:10:42,000 --> 00:10:47,000 və realloc sizin üçün avtomatik olaraq hər şey üzərində surəti olacaq. 164 00:10:47,000 --> 00:10:51,000 Yalnız 10 bytes blokunun var kimi, yenə malloc çağırıb. Əgər 165 00:10:51,000 --> 00:10:53,000 İndi 20 bayt bloku lazımdır 166 00:10:53,000 --> 00:10:58,000 Mən malloc 20 bayt, onda mən əl ilk şey olan 10 bytes üzərində surəti var 167 00:10:58,000 --> 00:11:01,000 ilk şey ikinci şey daxil və sonra pulsuz. 168 00:11:01,000 --> 00:11:04,000 Realloc sizin üçün ki, idarə edəcək. 169 00:11:04,000 --> 00:11:11,000 >> Imzası etibarsız * olacaq bildirək 170 00:11:11,000 --> 00:11:15,000 olan yalnız yaddaş blokunun bir pointer qayıdır 171 00:11:15,000 --> 00:11:17,000 sonra boşluq * Ptr. 172 00:11:17,000 --> 00:11:22,000 Siz ümumi göstərici kimi etibarsız * hesab edə bilər. 173 00:11:22,000 --> 00:11:27,000 Ümumiyyətlə, siz etibarsız * ilə məşğul heç 174 00:11:27,000 --> 00:11:30,000 lakin malloc bir boşluq * qaytarılması və sonra kimi istifadə 175 00:11:30,000 --> 00:11:34,000 Bu, həqiqətən, char * olacaq. 176 00:11:34,000 --> 00:11:37,000 Malloc geri ki Əvvəlki etibarsız * 177 00:11:37,000 --> 00:11:41,000 indi ölçüsü sonra realloc qəbul olunacaq, və 178 00:11:41,000 --> 00:11:49,000 siz ayrılması istəyirəm bayt yeni sayı üçün yeni potensialı. 179 00:11:49,000 --> 00:11:57,000 Mən sizə bir neçə dəqiqə vermək və kosmik bunu edəcəyik. 180 00:11:57,000 --> 00:12:02,000 Revision 1 ilə başlayın. 181 00:12:16,000 --> 00:12:21,000 Mən təkan həyata kifayət qədər vaxt sonra inşallah siz dayandırmaq lazımdır 182 00:12:21,000 --> 00:12:24,000 və sonra siz pop etmək üçün başqa bir fasilə vermək lazımdır. 183 00:12:24,000 --> 00:12:27,000 Amma həqiqətən bütün çox kodu deyil. 184 00:12:27,000 --> 00:12:35,000 Ən kodu potensialının genişləndirilməsi, yəqin ki, genişləndirilməsi məhsulları edir. 185 00:12:35,000 --> 00:12:39,000 OK, tamamilə edilməsi üçün heç bir təzyiq, 186 00:12:39,000 --> 00:12:47,000 lakin kimi uzun siz doğru yolda olduğunuz kimi hiss kimi, yaxşı. 187 00:12:47,000 --> 00:12:53,000 >> Hər kəs onlar məni çəkərək rahat hiss heç kodu varmı? 188 00:12:53,000 --> 00:12:59,000 Bəli, Mən, lakin hər kəs mən qoparmaq bilər hər hansı bir kodu var? 189 00:12:59,000 --> 00:13:05,000 Okay, bunu nə ki, saxlamaq başlamaq olar? 190 00:13:05,000 --> 00:13:09,000 Mən həmişə bir addım unutmayın. 191 00:13:09,000 --> 00:13:15,000 OK, push baxaraq, 192 00:13:15,000 --> 00:13:18,000 Siz kodu izah etmək istəyirsiniz? 193 00:13:18,000 --> 00:13:24,000 [Tələbə] Əvvəla, mən ölçüsü artmışdır. 194 00:13:24,000 --> 00:13:28,000 Mən bəlkə mən ki, hər halda olmalıdır tapmaq, I, ölçüsü artıb 195 00:13:28,000 --> 00:13:31,000 bu potensialın daha az varsa və görürəm. 196 00:13:31,000 --> 00:13:36,000 Və bu gücü daha az varsa, biz artıq olan array əlavə edin. 197 00:13:36,000 --> 00:13:42,000 Bu deyil, əgər, mən 2 qabiliyyəti çoxaltmaq 198 00:13:42,000 --> 00:13:50,000 və mən indi daha böyük gücü ölçüsü ilə bir şey üçün strings sıra təkrar bölüşdürə bilər. 199 00:13:50,000 --> 00:13:55,000 Ki, uğursuz və sonra, mən istifadəçi demək və saxta qayıtmaq 200 00:13:55,000 --> 00:14:04,000 gözəl varsa və sonra yeni spot simli qoydu. 201 00:14:04,000 --> 00:14:07,000 >> [Rob B.] biz burada gözəl bitwise operator istifadə Həmçinin qeyd 202 00:14:07,000 --> 00:14:09,000 2-çoxaltmaq üçün. 203 00:14:09,000 --> 00:14:11,000 Unutmayın, sol növbədə həmişə 2 vurulur olacaq. 204 00:14:11,000 --> 00:14:15,000 Siz onu deməkdir ki, yadda kimi sağ shift uzun kimi 2 bölünür 205 00:14:15,000 --> 00:14:18,000 2 bölünür bir tam kimi 2 bölmək. 206 00:14:18,000 --> 00:14:20,000 Burada ya orada 1 kəsmək bilər. 207 00:14:20,000 --> 00:14:26,000 Amma 1 buraxdığı növbədə həmişə, 2 vurulur olacaq 208 00:14:26,000 --> 00:14:32,000 siz daşqın isə tam hüdudlarından halda, sonra olmayacaq. 209 00:14:32,000 --> 00:14:34,000 A yan comment. 210 00:14:34,000 --> 00:14:39,000 Mən, do-bu heç bir şəkildə kodlaşdırma dəyişmək niyyətində deyil istəyirəm 211 00:14:39,000 --> 00:14:48,000 lakin mən bu kimi bir şey etmək istəyirəm. 212 00:14:48,000 --> 00:14:51,000 Bu, faktiki olaraq o qədər uzun etmək niyyətindədir. 213 00:15:04,000 --> 00:15:08,000 Bəlkə bu, bu göstərmək üçün mükəmməl halda deyil 214 00:15:08,000 --> 00:15:14,000 lakin mən-bu blokları daxil seqmentinə kimi 215 00:15:14,000 --> 00:15:17,000 bu halda əgər, tamam, sonra, bir şey etmək gedirəm 216 00:15:17,000 --> 00:15:19,000 və sonra funksiyanı edilir. 217 00:15:19,000 --> 00:15:22,000 Mən funksiyası aşağı gözümün bütün yol hərəkət etmək lazım deyil 218 00:15:22,000 --> 00:15:25,000 də başqa sonra nə görmək. 219 00:15:25,000 --> 00:15:27,000 Bu halda əgər bu, sonra yalnız geri. 220 00:15:27,000 --> 00:15:30,000 O, həmçinin bu kənarda hər şeyin gözəl əlavə fayda var 221 00:15:30,000 --> 00:15:33,000 indi bir dəfə tərk keçdikdə. 222 00:15:33,000 --> 00:15:40,000 Mən artıq üçün, əgər heç ridiculously uzun xətləri yaxınlığında lazımdır 223 00:15:40,000 --> 00:15:45,000 , həmin 4 bayt kömək edə bilər, həm də daha sol şey 224 00:15:45,000 --> 00:15:48,000 az kimi-tamam, mən xatırlayıram varsa hiss overwhelmed 225 00:15:48,000 --> 00:15:53,000 Mən loop üçün bir başqa daxilində daxilində isə loop hazırda edirəm. 226 00:15:53,000 --> 00:15:58,000 Yerdə Mən növ kimi, dərhal bu geri edə bilərsiniz. 227 00:15:58,000 --> 00:16:05,000 Bu tamamilə isteğe və hər hansı bir şəkildə gözlənilir. 228 00:16:05,000 --> 00:16:12,000 >> [Tələbə] bir ölçüsü olmalıdır - bu uğursuzluqla vəziyyətdə? 229 00:16:12,000 --> 00:16:19,000 Burada uğursuzluqla vəziyyətdə biz, bəli, realloc bilmədi olunur. 230 00:16:19,000 --> 00:16:22,000 , Güman ki, uğursuzluqla vəziyyəti necə edək 231 00:16:22,000 --> 00:16:26,000 biz pulsuz stuff sonra halda, biz həmişə uğursuz olacaq 232 00:16:26,000 --> 00:16:29,000 biz bir təkan cəhd neçə dəfə asılı olmayaraq. 233 00:16:29,000 --> 00:16:32,000 Biz basmaqla saxlamaq, biz, incrementing ölçüsü saxlamaq 234 00:16:32,000 --> 00:16:36,000 biz yığını üzərinə bir şey qoyaraq deyil, baxmayaraq. 235 00:16:36,000 --> 00:16:39,000 Adətən biz qədər ölçüsü arttırmayı yoxdur 236 00:16:39,000 --> 00:16:43,000 biz uğurla yığını qoyun sonra. 237 00:16:43,000 --> 00:16:50,000 Biz ya burada və burada, demək, bunu edərdi. 238 00:16:50,000 --> 00:16:56,000 Əvəzinə ≤ gücü s.size deyən və sonra, o, gücü az deyil 239 00:16:56,000 --> 00:17:01,000 hər şey olduğu biz köçürülüb yalnız çünki. 240 00:17:01,000 --> 00:17:07,000 >> Ve unutmayın, biz bəlkə yalan yalnız yer qayıtmaq bilər 241 00:17:07,000 --> 00:17:14,000 realloc null geri yerləşir, burada 242 00:17:14,000 --> 00:17:19,000 və standart səhv xatırlayıram nə varsa, 243 00:17:19,000 --> 00:17:22,000 bir standart səhv çap istədiyiniz bəlkə, bu halda düşünebilirsiniz 244 00:17:22,000 --> 00:17:26,000 yerine standart həyata birbaşa çap belə fprintf stderr. 245 00:17:26,000 --> 00:17:31,000 Yenə, bir gözləmə deyil, bir səhv varsa 246 00:17:31,000 --> 00:17:41,000 printf yazın, sonra yerine standart həyata standart səhv çap etmək istəyirik bilər. 247 00:17:41,000 --> 00:17:44,000 >> Hər kəs qeyd etmək başqa bir şey var? Bəli. 248 00:17:44,000 --> 00:17:47,000 [Tələbə] siz [işitilemez] üzərində getmək olarmı? 249 00:17:47,000 --> 00:17:55,000 [Rob B.] Bəli, faktiki bu binariness ya nə deyil? 250 00:17:55,000 --> 00:17:57,000 [Tələbə] Belə ki, 2 ilə çoxaltmaq? 251 00:17:57,000 --> 00:17:59,000 [Rob B.] Bəli, əsasən. 252 00:17:59,000 --> 00:18:11,000 Binar torpaq, biz həmişə rəqəm bizim dəsti var. 253 00:18:11,000 --> 00:18:22,000 Sağ burada əsasən edər 1 Bu sol keçid. 254 00:18:22,000 --> 00:18:25,000 Geri bu, yalnız ikili hər şeyi xatırlayaraq 255 00:18:25,000 --> 00:18:28,000 , 2 elektrik, belə ki, bu 0 2 təmsil 256 00:18:28,000 --> 00:18:30,000 1-Bu 2, bu 2 2. 257 00:18:30,000 --> 00:18:33,000 İndi sağ üçün 0 daxil, biz yalnız hər şeyə tutulub. 258 00:18:33,000 --> 00:18:38,000 Nə 0 2 olmaq üçün istifadə 2, artıq 2 1 2 edilir. 259 00:18:38,000 --> 00:18:41,000 Biz daxil olan sağ 260 00:18:41,000 --> 00:18:44,000 mütləq 0 olacaq, 261 00:18:44,000 --> 00:18:46,000 olan hissi verir. 262 00:18:46,000 --> 00:18:49,000 Əgər 2-bir sıra çoxaltmaq varsa, bu, tək başa gedən deyil 263 00:18:49,000 --> 00:18:54,000 belə 0 yerə 2, 0 olmalıdır 264 00:18:54,000 --> 00:18:59,000 Siz shift başına əgər bu mən yarım əvvəl xəbərdarlıq nə 265 00:18:59,000 --> 00:19:01,000 bir tamsayı ildə bit sayı kənarda, 266 00:19:01,000 --> 00:19:04,000 sonra bu 1 gediş sonuna qədər davam edir. 267 00:19:04,000 --> 00:19:10,000 Həqiqətən böyük imkanları ilə məşğul olmaq üçün baş, əgər ki, yalnız narahat deyil. 268 00:19:10,000 --> 00:19:15,000 Amma bu nöqtədə, sonra, hər şeyi milyardlarla bir sıra ilə məşğul olduğunuz 269 00:19:15,000 --> 00:19:25,000 hər halda yaddaş uyğun deyil bilər. 270 00:19:25,000 --> 00:19:31,000 >> İndi daha asan olan pop, əldə edə bilərsiniz. 271 00:19:31,000 --> 00:19:36,000 Bir bütün dəstə pop baş əgər Siz bunu nə bilər 272 00:19:36,000 --> 00:19:38,000 və indi yenidən yarım gücü ilə edirik. 273 00:19:38,000 --> 00:19:42,000 Siz, sizin yaddaş məbləği shrink realloc bilər 274 00:19:42,000 --> 00:19:47,000 amma siz narahat yoxdur, belə ki, yalnız realloc halda olacaq 275 00:19:47,000 --> 00:19:50,000 , yaddaşlı daralır, heç vaxt, yaddaş artan 276 00:19:50,000 --> 00:19:59,000 olan pop super asan etmək üçün gedir. 277 00:19:59,000 --> 00:20:02,000 Destesi kimi olacaq indi sıralarında, 278 00:20:02,000 --> 00:20:06,000 lakin şeyi almaq qaydada ləğv edilir. 279 00:20:06,000 --> 00:20:10,000 Bir sıra olan prototip Məsələn, bir xətt 280 00:20:10,000 --> 00:20:12,000 Mən İngilis dili, əgər tahmin, mən demişəm ki, 281 00:20:12,000 --> 00:20:17,000 bir sıra bir prototip Məsələn bir sıra edir. 282 00:20:17,000 --> 00:20:22,000 Belə bir xətt kimi, uyğun olaraq ilk şəxs danışırsınızsa, 283 00:20:22,000 --> 00:20:24,000 Siz line həyata ilk şəxs ola gözləyirik. 284 00:20:24,000 --> 00:20:31,000 Siz line son şəxs danışırsınızsa, siz xidmət keçən şəxs olacaq. 285 00:20:31,000 --> 00:20:35,000 Yığını LIFO model idi Biz ki, FIFO model adlandırırlar. 286 00:20:35,000 --> 00:20:40,000 Bu sözləri olduqca universaldır. 287 00:20:40,000 --> 00:20:46,000 >> Destesi kimi seriallarda fərqli olaraq, sıralarında adətən ortasında elementləri imkanı yoxdur. 288 00:20:46,000 --> 00:20:50,000 Burada, bir yığın, biz təkan və pop var. 289 00:20:50,000 --> 00:20:54,000 Burada biz onlara enqueue və dequeue çağırıb başına. 290 00:20:54,000 --> 00:20:58,000 Mən də onlara shift və unshift adlı eşitmişəm. 291 00:20:58,000 --> 00:21:02,000 Mən insanların təkan və pop sıralarında də tətbiq deyə eşitdim. 292 00:21:02,000 --> 00:21:05,000 I, aradan qaldırılması, daxil eşitmişəm 293 00:21:05,000 --> 00:21:11,000 belə təkan və bacalar gedir, əgər təzyiq və yaratma olunur, açılır. 294 00:21:11,000 --> 00:21:16,000 Siz sıralarında bəhs edirsinizsə, siz istifadə etmək istədiyiniz sözləri seçin bilər 295 00:21:16,000 --> 00:21:23,000 durub və aradan qaldırılması üçün, bu adlanır nə heç bir fikir birliyi yoxdur. 296 00:21:23,000 --> 00:21:27,000 Amma burada, biz enqueue və dequeue var. 297 00:21:27,000 --> 00:21:37,000 İndi, struct yığını struct demək olar ki, eyni görünür. 298 00:21:37,000 --> 00:21:40,000 Amma baş takip var. 299 00:21:40,000 --> 00:21:44,000 Mən onu burada deyir tahmin, ancaq nə baş lazımdır? 300 00:21:53,000 --> 00:21:57,000 Bu prototipləri təkan və pop əsasən eynidir. 301 00:21:57,000 --> 00:21:59,000 Siz push və pop kimi hesab edə bilər. 302 00:21:59,000 --> 00:22:08,000 Yeganə fərq pop edir qayıtdıqdan-əvəzinə son, ilk qaytarılması edir. 303 00:22:08,000 --> 00:22:12,000 2, 1, 3, 4, və ya bir şey. 304 00:22:12,000 --> 00:22:14,000 Burada başlanğıc var. 305 00:22:14,000 --> 00:22:17,000 Bizim queue tam deyil, belə ki, dörd elementləri var. 306 00:22:17,000 --> 00:22:21,000 Bizim sıra sonu, hazırda 2 307 00:22:21,000 --> 00:22:24,000 və indi biz başqa bir şey daxil gedin. 308 00:22:24,000 --> 00:22:29,000 >> Biz yığını versiyası üçün biz nə başqa bir şey, daxil istədiyiniz zaman 309 00:22:29,000 --> 00:22:36,000 biz yaddaş bizim blok uzadılır. 310 00:22:36,000 --> 00:22:40,000 Bu problemi nədir? 311 00:22:40,000 --> 00:22:45,000 [Tələbə] Siz 2 hərəkət. 312 00:22:45,000 --> 00:22:51,000 Mən queue sonuna haqqında əvvəl bildirib ki, nə 313 00:22:51,000 --> 00:22:57,000 Bu, 1 biz başlamaq mənada etmir 314 00:22:57,000 --> 00:23:01,000 sonra sonra dequeue 3, dequeue 4, dequeue 1 istəyirəm 315 00:23:01,000 --> 00:23:05,000 sonra dequeue 2, sonra bu dequeue. 316 00:23:05,000 --> 00:23:08,000 Biz indi realloc istifadə edə 317 00:23:08,000 --> 00:23:11,000 və ya ən azı, siz fərqli bir şəkildə realloc istifadə etmək lazımdır. 318 00:23:11,000 --> 00:23:15,000 Amma yəqin ki, yalnız realloc istifadə etməməlidir. 319 00:23:15,000 --> 00:23:18,000 Siz özünüz yaddaş surəti üçün gedir. 320 00:23:18,000 --> 00:23:21,000 >> Yaddaş surəti iki funksiyaları var. 321 00:23:21,000 --> 00:23:25,000 Memcopy və memmove var. 322 00:23:25,000 --> 00:23:29,000 Hal-hazırda istifadə etmək istədiyiniz olacaq bir görmək man pages oxu alıram. 323 00:23:29,000 --> 00:23:35,000 OK, memcopy, fərq 324 00:23:35,000 --> 00:23:38,000 memcopy və memmove, bir düzgün halda emal 325 00:23:38,000 --> 00:23:41,000 siz regionda üst-üstə olur ki, regiona çıxarmaq olduğunuz 326 00:23:41,000 --> 00:23:46,000 Sizi çıxarmaq edirik. 327 00:23:46,000 --> 00:23:50,000 Memcopy onu idarə etmir. Memmove edir. 328 00:23:50,000 --> 00:23:59,000 Siz kimi problem hesab edə bilər 329 00:23:59,000 --> 00:24:09,000 Gəlin, bu oğlan surəti istəyirsiniz 330 00:24:09,000 --> 00:24:13,000 artıq bu adam bu dörd. 331 00:24:13,000 --> 00:24:16,000 Sonunda serialın kimi nə olmalıdır 332 00:24:16,000 --> 00:24:26,000 surəti sonra 2, 1, 2, 1, 3, 4, və sonunda bəzi stuff sonra. 333 00:24:26,000 --> 00:24:29,000 Lakin bu, biz həqiqətən surəti sıraya asılıdır 334 00:24:29,000 --> 00:24:32,000 biz regionda biz daxil çıxarmaq edirik ki, hesab etmirəm əgər bəri 335 00:24:32,000 --> 00:24:35,000 üst-üstə düşür biz çıxarmaq olduğunuz biri, 336 00:24:35,000 --> 00:24:46,000 sonra biz burada başlanğıc kimi bunu getmək istədiyiniz yerə 2 surəti bilər 337 00:24:46,000 --> 00:24:52,000 sonra irəli göstəricilərinə hərəkət. 338 00:24:52,000 --> 00:24:56,000 >> İndi biz burada və burada olacaq, indi biz kopyalamak etmək istəyirsinizsə 339 00:24:56,000 --> 00:25:04,000 bu oğlan artıq oğlan və irəli göstəricilərinə hərəkət. 340 00:25:04,000 --> 00:25:07,000 Biz əldə qədər olacaq, 1, 2, 1, 2, 1 2 341 00:25:07,000 --> 00:25:10,000 əvəzinə uyğun 2, 1, 2, 1, 3, 4, çünki 342 00:25:10,000 --> 00:25:15,000 2, 1 orijinal, 3, 4 overrode. 343 00:25:15,000 --> 00:25:19,000 Memmove doğru yapar. 344 00:25:19,000 --> 00:25:23,000 Bu halda, əsasən yalnız həmişə memmove istifadə 345 00:25:23,000 --> 00:25:26,000 bu düzgün emal çünki. 346 00:25:26,000 --> 00:25:29,000 Bu, ümumiyyətlə heç bir pis ifa deyil. 347 00:25:29,000 --> 00:25:32,000 Ideyası əvəzinə əvvəlindən başlayan və bu yolla çıxarmaq deyil 348 00:25:32,000 --> 00:25:35,000 biz yalnız burada olduğu kimi, bu, son başlayır və nüsxə 349 00:25:35,000 --> 00:25:38,000 və bu halda, bir problem heç bilər. 350 00:25:38,000 --> 00:25:40,000 Heç bir performans var itirilir. 351 00:25:40,000 --> 00:25:47,000 Həmişə memmove istifadə edin. Memcopy narahat etməyin. 352 00:25:47,000 --> 00:25:51,000 Ayrıca memmove üçün gidiyorsun harada və ki 353 00:25:51,000 --> 00:26:01,000 Sizin növbə ilə sarılı-ətrafında hissəsi. 354 00:26:01,000 --> 00:26:04,000 Heç bir narahatlıq tamamilə həyata əgər. 355 00:26:04,000 --> 00:26:10,000 Bu yığını push, və pop daha çətindir. 356 00:26:10,000 --> 00:26:15,000 >> Hər kəs biz işləmək bilər hər hansı bir kodu var? 357 00:26:15,000 --> 00:26:21,000 Hətta tamamilə natamam əgər? 358 00:26:21,000 --> 00:26:23,000 [Tələbə] Bəli, baxmayaraq ki, tamamilə natamam var. 359 00:26:23,000 --> 00:26:27,000 Biz bilər yenidən qazanc kimi tamamilə natamam uzun kimi gözəl var? 360 00:26:27,000 --> 00:26:32,000 Hesab edirəm ki, hər bir zaman unutmayın. 361 00:26:32,000 --> 00:26:39,000 Biz şeyi ölçüsünü lazım Okay, nə məhəl olur. 362 00:26:39,000 --> 00:26:42,000 Tamamilə ölçüsünü bilməz. 363 00:26:42,000 --> 00:26:49,000 Bu kodu izah edir. 364 00:26:49,000 --> 00:26:54,000 Ölçüsü, ilk növbədə surəti az, mən ilk növbədə yoxlanılması alıram 365 00:26:54,000 --> 00:27:01,000 və sonra sonra, mən daxil Mən baş + ölçüsü, almaq 366 00:27:01,000 --> 00:27:05,000 və mən bu serialın gücü ətrafında wraps əmin olun 367 00:27:05,000 --> 00:27:08,000 və mən o mövqedə olan yeni simli daxil edin. 368 00:27:08,000 --> 00:27:12,000 Sonra ölçüsü artırmaq və doğru geri. 369 00:27:12,000 --> 00:27:22,000 >> [Rob B.] Bu mütləq sizə mod istifadə etmək istəyirəm olacaq hallarda biridir. 370 00:27:22,000 --> 00:27:25,000 Əgər ətrafında wrapping düşünürəm əgər, ətrafında wrapping olduğu halda hər cür 371 00:27:25,000 --> 00:27:29,000 dərhal fikir mod olmalıdır. 372 00:27:29,000 --> 00:27:36,000 Tez optimallaşdırma kimi /, kodu bir line qısa etmək 373 00:27:36,000 --> 00:27:42,000 Siz line dərhal bu aşağıdakı qeyd 374 00:27:42,000 --> 00:27:53,000 yalnız ölçüsü + +, belə ki, daxil olan bu xəttə, ölçüsü + +. 375 00:27:53,000 --> 00:27:58,000 Aşağı burada İndi vəziyyət var 376 00:27:58,000 --> 00:28:01,000 biz kifayət qədər yaddaş yoxdur 377 00:28:01,000 --> 00:28:05,000 biz 2-bizim gücü artır. 378 00:28:05,000 --> 00:28:09,000 , Mən burada eyni problem ola bilər tahmin, ancaq indi iqnor edə bilər 379 00:28:09,000 --> 00:28:13,000 Siz artırılması üçün uğursuz olduğu təqdirdə, 380 00:28:13,000 --> 00:28:18,000 sonra yenə 2 ilə gücü azaltmaq istəyirəm olacaq. 381 00:28:18,000 --> 00:28:24,000 Digər qısa qeyd edə bilərsiniz yalnız kimi + = 382 00:28:24,000 --> 00:28:30,000 siz də << = edə bilərsiniz. 383 00:28:30,000 --> 00:28:43,000 Bərabərdir əvvəl demək olar ki, bir şey edə bilərsiniz, + = | = & = << =. 384 00:28:43,000 --> 00:28:52,000 Char * Yeni yaddaş yeni blokdur. 385 00:28:52,000 --> 00:28:55,000 Oh, burada. 386 00:28:55,000 --> 00:29:02,000 >> Insanların yaddaş yeni blokunun növü haqqında nə düşünürsünüz? 387 00:29:02,000 --> 00:29:06,000 [Tələbə] Bu char ** olmalıdır. 388 00:29:06,000 --> 00:29:12,000 Qədər burada struct geri düşüncələri, 389 00:29:12,000 --> 00:29:14,000 strings biz reallocating nə. 390 00:29:14,000 --> 00:29:21,000 Biz növbəyə elementləri üçün bütün yeni dinamik storage edirik. 391 00:29:21,000 --> 00:29:25,000 Biz sizin strings təyin etmək olacaq, biz indi mallocing ne edir 392 00:29:25,000 --> 00:29:30,000 və belə yeni bir char ** olacaq. 393 00:29:30,000 --> 00:29:34,000 Bu strings bir sıra olacaq. 394 00:29:34,000 --> 00:29:38,000 Sonra yalan qayıtmaq olacaq altında işi nədir? 395 00:29:38,000 --> 00:29:41,000 [Tələbə] biz char * etdiyini lazımdır? 396 00:29:41,000 --> 00:29:44,000 [Rob B.] Bəli, yaxşı deyirik. 397 00:29:44,000 --> 00:29:46,000 [Tələbə] nə idi? 398 00:29:46,000 --> 00:29:49,000 [Rob B.] Biz heç bir çünki char * ölçüsü etmək istəyirdi uzun 399 00:29:49,000 --> 00:29:53,000 sizeof (char) 1 olardı, çünki bu, həqiqətən çox böyük bir problem olardı. 400 00:29:53,000 --> 00:29:55,000 Sizeof char *, 4 olacaq 401 00:29:55,000 --> 00:29:58,000 belə ints ilə məşğul olduğunuz zaman bir çox 402 00:29:58,000 --> 00:30:01,000 siz ilə üz əldə edirlər, çünki int * və int və ölçüsü ölçüsü 403 00:30:01,000 --> 00:30:04,000 bir 32-bit sistem eyni şey olacaq. 404 00:30:04,000 --> 00:30:09,000 Amma burada, sizeof (char) və sizeof (char *) artıq eyni şey olacaq. 405 00:30:09,000 --> 00:30:15,000 >> Biz saxta qayıtmaq olduğu halda nədir? 406 00:30:15,000 --> 00:30:17,000 [Tələbə] Yeni null edir. 407 00:30:17,000 --> 00:30:23,000 Yeni null əgər Bəli, biz, saxta qayıtmaq 408 00:30:23,000 --> 00:30:34,000 və mən aşağı atmaq gedirəm burada 409 00:30:34,000 --> 00:30:37,000 [Tələbə] [işitilemez] 410 00:30:37,000 --> 00:30:39,000 [Rob B.] Bəli, bu yaxşıdır. 411 00:30:39,000 --> 00:30:46,000 Siz ya 2 dəfə qabiliyyəti və ya gücü shift 1 və sonra yalnız burada və ya hər hansı aşağı müəyyən edə bilər. 412 00:30:46,000 --> 00:30:52,000 Biz bu idi Biz bunu edəcəyik. 413 00:30:52,000 --> 00:30:56,000 Tutum >> = 1. 414 00:30:56,000 --> 00:31:08,000 Və 1 yeri itirmək barədə narahat gedən heç etdiyiniz 415 00:31:08,000 --> 00:31:12,000 siz 1 keçdikdə tərk çünki, belə ki, 1-in yeri, mütləq 0 deyil 416 00:31:12,000 --> 00:31:16,000 belə sağ 1 keçid, hələ də gözəl olacaq. 417 00:31:16,000 --> 00:31:19,000 [Tələbə] Siz qaytarılması əvvəl buna ehtiyac varmı? 418 00:31:19,000 --> 00:31:29,000 [Rob B.] Bəli, bu, tamamilə heç bir əhəmiyyət kəsb edir. 419 00:31:29,000 --> 00:31:36,000 >> Biz sonuna doğru qaytarılması başa olacaq İndi daşımır. 420 00:31:36,000 --> 00:31:39,000 Bu memmoves nə olacaq yolu, 421 00:31:39,000 --> 00:31:45,000 biz onlara necə diqqətli olmaq lazımdır. 422 00:31:45,000 --> 00:31:50,000 Hər kəs biz onlara necə üçün heç bir təklif varmı? 423 00:32:17,000 --> 00:32:21,000 Burada başlanğıc. 424 00:32:21,000 --> 00:32:28,000 Qaçılmaz, biz yenə əvvəlində başlamaq istəyirəm 425 00:32:28,000 --> 00:32:35,000 oradan və surəti əşyalar, 1, 3, 4, 2. 426 00:32:35,000 --> 00:32:41,000 Necə ki, etməliyəm? 427 00:32:41,000 --> 00:32:52,000 Birincisi, mən yenə memmove üçün adam səhifə baxmaq var. 428 00:32:52,000 --> 00:32:57,000 Memmove, arqumentləri üçün həmişə vacibdir. 429 00:32:57,000 --> 00:33:01,000 Biz mənbə ikinci, ölçüsü üçüncü, ilk bizim təyinat istəyirəm. 430 00:33:01,000 --> 00:33:06,000 Mənbə və təyinat ləğv hansı funksiyaları var. 431 00:33:06,000 --> 00:33:11,000 Hedef, mənbə qədər ardıcıl olmağa çalışır. 432 00:33:17,000 --> 00:33:21,000 Move, nə qayıdır? 433 00:33:21,000 --> 00:33:27,000 Bu istəyirik ki, ola bilər hər hansı səbəbdən, hedef bir pointer qaytarır. 434 00:33:27,000 --> 00:33:32,000 Mən bunu oxuya bilərsiniz şəkil, lakin biz təyinat hərəkət etmək istəyirəm. 435 00:33:32,000 --> 00:33:35,000 >> Bizim təyinat nə olacaq? 436 00:33:35,000 --> 00:33:37,000 [Tələbə] Yeni. 437 00:33:37,000 --> 00:33:39,000 [Rob B.] Bəli, və burada biz çıxarmaq olunur? 438 00:33:39,000 --> 00:33:43,000 Biz çıxarmaq edilir ilk şey bu 1, 3, 4. 439 00:33:43,000 --> 00:33:50,000 , 4 3-bu 1 nədir. 440 00:33:50,000 --> 00:33:55,000 Bu 1-ünvan nədir? 441 00:33:55,000 --> 00:33:58,000 Ki, 1-ünvan nədir? 442 00:33:58,000 --> 00:34:01,000 [Tələbə] [işitilemez] 443 00:34:01,000 --> 00:34:03,000 [Rob B.] rəhbəri + ilk element və ünvanı. 444 00:34:03,000 --> 00:34:05,000 Necə biz serialın ilk element alıram? 445 00:34:05,000 --> 00:34:10,000 [Tələbə] Queue. 446 00:34:10,000 --> 00:34:15,000 [Rob B.] Bəli, q.strings. 447 00:34:15,000 --> 00:34:20,000 Unutmayın, burada, bizim baş 1-dir. 448 00:34:20,000 --> 00:34:24,000 Bu darn. Mən yalnız hesab magically- 449 00:34:24,000 --> 00:34:29,000 Burada bizim baş 1-dir. Mən də mənim rəngini gedirəm. 450 00:34:29,000 --> 00:34:36,000 Burada strings edir. 451 00:34:36,000 --> 00:34:41,000 Biz burada etdiyi kimi, bu, biz onu yaza bilərsiniz 452 00:34:41,000 --> 00:34:43,000 ilə başçılarının + q.strings. 453 00:34:43,000 --> 00:34:51,000 Bir çox adam da yazmaq və q.strings [baş]. 454 00:34:51,000 --> 00:34:55,000 Bu, həqiqətən, heç bir az səmərəli deyil. 455 00:34:55,000 --> 00:34:58,000 Siz dereferencing və sonra ünvanı əldə kimi, bu hesab bilər 456 00:34:58,000 --> 00:35:04,000 lakin compiler q.strings + rəhbəri, hər halda biz əvvəl nə üçün tərcümə edir. 457 00:35:04,000 --> 00:35:06,000 Siz düşünün istəyirəm Ya bir yol. 458 00:35:06,000 --> 00:35:11,000 >> Və neçə bayt biz surəti istəyirsiniz? 459 00:35:11,000 --> 00:35:15,000 [Tələbə] Tutum - baş. 460 00:35:15,000 --> 00:35:18,000 Tutum - baş. 461 00:35:18,000 --> 00:35:21,000 Və sonra həmişə nümunə yazmaq bilər 462 00:35:21,000 --> 00:35:23,000 ki, doğru əgər anlamaq üçün. 463 00:35:23,000 --> 00:35:26,000 [Tələbə] O 2 bölünür lazımdır. 464 00:35:26,000 --> 00:35:30,000 Bəli, belə ki, biz ölçüsü istifadə edə bilər danışarlar. 465 00:35:30,000 --> 00:35:35,000 Biz hələ ölçüsü olan- 466 00:35:35,000 --> 00:35:39,000 ölçüsü istifadə edərək, biz 4 bərabər ölçüsü var. 467 00:35:39,000 --> 00:35:42,000 Bizim ölçüsü 4. Bizim baş 1-dir. 468 00:35:42,000 --> 00:35:46,000 Biz bu 3 elementləri köçürmək üçün istəyirəm. 469 00:35:46,000 --> 00:35:54,000 Bu ağlı başında olma ki, ölçüsü yoxlamaq var - baş düzgün 3. 470 00:35:54,000 --> 00:35:58,000 Biz əvvəlki kimi, burada geri gələn 471 00:35:58,000 --> 00:36:00,000 biz gücü istifadə, onda biz 2 bölmək istiyorum 472 00:36:00,000 --> 00:36:04,000 biz artıq tutumu artıb etdik, çünki əvəzinə, biz ölçüsü istifadə olacaq. 473 00:36:11,000 --> 00:36:13,000 Bu surətləri həmin hissəsi. 474 00:36:13,000 --> 00:36:18,000 İndi biz digər hissəsi başlanması qalan hissəsinin surəti lazımdır. 475 00:36:18,000 --> 00:36:28,000 >> Bu nə mövqeyi memmove olacaq? 476 00:36:28,000 --> 00:36:32,000 [Tələbə] Plus ölçüsü - baş. 477 00:36:32,000 --> 00:36:38,000 Bəli, biz artıq ölçüsü kopyaladığınız - baş bayt, 478 00:36:38,000 --> 00:36:43,000 və biz qalan bytes surəti istədiyiniz yeni 479 00:36:43,000 --> 00:36:48,000 və sonra ölçüsü minus-də bytes sayı artıq daxil sitemizi sonra 480 00:36:48,000 --> 00:36:52,000 Və sonra yerləşir biz çıxarmaq olunur? 481 00:36:52,000 --> 00:36:54,000 [Tələbə] Q.strings [0]. 482 00:36:54,000 --> 00:36:56,000 [Rob B.] Bəli, q.strings. 483 00:36:56,000 --> 00:37:02,000 Biz ya nə & q.strings [0]. Bilər 484 00:37:02,000 --> 00:37:05,000 Bu çox daha az yayılmışdır. 485 00:37:05,000 --> 00:37:14,000 Yalnız 0 olacaq, onda q.strings görmək edirlər lazımdır. 486 00:37:14,000 --> 00:37:16,000 Biz çıxarmaq etdiyiniz harada. 487 00:37:16,000 --> 00:37:18,000 Biz surəti neçə bayt yazmayıblar bilərəm? >> [Tələbə] 10. 488 00:37:18,000 --> 00:37:20,000 Sağ. 489 00:37:20,000 --> 00:37:25,000 [Tələbə] biz 5 çoxaltmaq üçün var - 10 dəfə bayt və ya bir şey ölçüsü? 490 00:37:25,000 --> 00:37:30,000 Bəli, bu Ü-nə məhz biz çıxarmaq olunur? 491 00:37:30,000 --> 00:37:32,000 [Tələbə] [işitilemez] 492 00:37:32,000 --> 00:37:34,000 Biz çıxarmaq etdiyiniz şey növü nədir? 493 00:37:34,000 --> 00:37:36,000 [Tələbə] [işitilemez] 494 00:37:36,000 --> 00:37:41,000 O gələn yerləşir Bəli, char * s biz çıxarmaq edirik ki, biz bilmirik. 495 00:37:41,000 --> 00:37:47,000 Bəli, onlar işarə etdiyiniz olduğu strings kimi, biz növbə üzərinə basmaqla başa 496 00:37:47,000 --> 00:37:49,000 və ya queue daxil enqueuing. 497 00:37:49,000 --> 00:37:51,000 O gələn hallarda, biz heç bir fikrim yoxdur. 498 00:37:51,000 --> 00:37:56,000 Biz yalnız char * s özləri takip lazımdır. 499 00:37:56,000 --> 00:38:00,000 Baş bytes - Biz ölçüsü surəti istəmirəm. 500 00:38:00,000 --> 00:38:03,000 Baş char * s, - Biz ölçüsü kopyalamak etmək istəyirsinizsə 501 00:38:03,000 --> 00:38:11,000 biz sizeof (char *) bu çoxaltmaq olacaq. 502 00:38:11,000 --> 00:38:17,000 Eyni aşağı burada, head * sizeof (char *). 503 00:38:17,000 --> 00:38:24,000 >> [Tələbə] nə [işitilemez]? 504 00:38:24,000 --> 00:38:26,000 Burada Bu hüquq? 505 00:38:26,000 --> 00:38:28,000 [Tələbə] Xeyr, aşağıda, ölçüsü - baş. 506 00:38:28,000 --> 00:38:30,000 [Rob B.] burada Bu hüquq? 507 00:38:30,000 --> 00:38:32,000 Pointer hesab. 508 00:38:32,000 --> 00:38:35,000 Göstərici hesab iş gedir necə 509 00:38:35,000 --> 00:38:40,000 avtomatik olaraq biz məşğul olduğunuz növü ölçüsü multiplies. 510 00:38:40,000 --> 00:38:46,000 Sadəcə, burada kimi yeni + (ölçüsü - rəhbəri) 511 00:38:46,000 --> 00:38:56,000 və yeni [- baş size] tam bərabər 512 00:38:56,000 --> 00:39:00,000 ki, düzgün iş gözləyirik qədər 513 00:39:00,000 --> 00:39:04,000 biz int dizi ilə məşğul edirsinizsə-ci ildən sonra biz int-index deyil 514 00:39:04,000 --> 00:39:07,000 daxil və ya 5 ölçüsü var və 4-cü element istəyirsinizsə, onda biz index 515 00:39:07,000 --> 00:39:10,000 int array [4]. 516 00:39:10,000 --> 00:39:14,000 Siz don't-[4] int of * ölçüsü. 517 00:39:14,000 --> 00:39:21,000 Yəni bu halda avtomatik olaraq emal və 518 00:39:21,000 --> 00:39:29,000 sözün bərabərdir, belə ki, bracket sintaksis 519 00:39:29,000 --> 00:39:34,000 yalnız tez tərtib kimi bu valyutaya çevrilmişdir olacaq. 520 00:39:34,000 --> 00:39:38,000 Yəni ki, ehtiyatlı olmaq lazımdır şey 521 00:39:38,000 --> 00:39:42,000 Siz ölçüsü əlavə zaman - baş 522 00:39:42,000 --> 00:39:45,000 bir byte deyil əlavə olunur. 523 00:39:45,000 --> 00:39:53,000 Siz bir bayt və ya hər hansı ola bilər, bir char * əlavə edirik. 524 00:39:53,000 --> 00:39:56,000 >> Digər suallar? 525 00:39:56,000 --> 00:40:04,000 OK, dequeue daha asan olacaq. 526 00:40:04,000 --> 00:40:11,000 Mən sizə yerinə yetirmək üçün bir dəqiqə verəcəyik. 527 00:40:11,000 --> 00:40:18,000 Oh, və bu eyni vəziyyət tapmaq yerləşir 528 00:40:18,000 --> 00:40:21,000 nə enqueue halda, biz null enqueuing edirsinizsə, 529 00:40:21,000 --> 00:40:24,000 bəlkə biz onu idarə etmək istəyirəm, bəlkə biz deyil. 530 00:40:24,000 --> 00:40:27,000 Biz burada daha, lakin bizim yığını hal kimi eyni deyil. 531 00:40:27,000 --> 00:40:34,000 Biz null enqueue varsa, biz bunu göz ardı edə bilərsiniz. 532 00:40:34,000 --> 00:40:40,000 Hər kəs mən qoparmaq bilər bir kodu var? 533 00:40:40,000 --> 00:40:45,000 [Tələbə] Mən yalnız dequeue var. 534 00:40:45,000 --> 00:40:56,000 Version 2 ki, tamam. 535 00:40:56,000 --> 00:40:59,000 Siz izah etmək istəyirsiniz? 536 00:40:59,000 --> 00:41:01,000 [Tələbə] Birincisi, siz növbə bir şey var əmin olun 537 00:41:01,000 --> 00:41:07,000 və ölçüsü 1 aşağı gedir. 538 00:41:07,000 --> 00:41:11,000 Siz nə etmək lazımdır, sonra baş qayıtmaq 539 00:41:11,000 --> 00:41:13,000 və sonra 1-dək baş keçin. 540 00:41:13,000 --> 00:41:19,000 OK, belə ki, biz hesab üçün bir künc halda var. Bəli. 541 00:41:19,000 --> 00:41:24,000 [Tələbə] başını son element da deyil 542 00:41:24,000 --> 00:41:26,000 sonra baş serialın kənarda qeyd etmək istəmirəm. 543 00:41:26,000 --> 00:41:29,000 >> Bəli, belə tez baş kimi, bizim serialın son xit 544 00:41:29,000 --> 00:41:35,000 biz dequeue zaman baş 0 geri modded edilməlidir. 545 00:41:35,000 --> 00:41:40,000 Təəssüf ki, bir addım da bunu edə bilməz. 546 00:41:40,000 --> 00:41:44,000 Mən yəqin ki, düzeltmek istədiyiniz yol tapmaq 547 00:41:44,000 --> 00:41:52,000 Bu, biz qaytarılması ne bir char * olacaq 548 00:41:52,000 --> 00:41:55,000 sizin dəyişən adı olmaq istəyir nə. 549 00:41:55,000 --> 00:42:02,000 Sonra gücündə baş Mod istəyirəm 550 00:42:02,000 --> 00:42:10,000 və sonra islağa qoymaq qaytarın. 551 00:42:10,000 --> 00:42:14,000 Burada insanlar bir çox onlar-bilər 552 00:42:14,000 --> 00:42:19,000 bu-you'll halda insanlar nə görürsünüzsə baş 553 00:42:19,000 --> 00:42:29,000 potensialın daha böyük, baş etmək - gücü. 554 00:42:29,000 --> 00:42:36,000 Və yalnız mod nə ətrafında çalışır. 555 00:42:36,000 --> 00:42:41,000 Baş mod = tutumu çox təmiz 556 00:42:41,000 --> 00:42:51,000 həcmi -. ətrafında tutumu rəhbəri çox baş daha əgər daha wrapping və 557 00:42:51,000 --> 00:42:56,000 >> Suallar? 558 00:42:56,000 --> 00:43:02,000 OK, biz yazmayıblar son şey bizim bağlı siyahısı. 559 00:43:02,000 --> 00:43:07,000 Siz əgər Siz bağlı siyahı davranış bəzi istifadə edilə bilər 560 00:43:07,000 --> 00:43:11,000 bir hash table Əgər sizin hash cədvəllərdə siyahıları bağlıdır. 561 00:43:11,000 --> 00:43:15,000 Mən qəti bir hash table etdiyini gəlir. 562 00:43:15,000 --> 00:43:17,000 Siz artıq bir trie görmüşük bilər 563 00:43:17,000 --> 00:43:23,000 lakin çalışır daha çətindir. 564 00:43:23,000 --> 00:43:27,000 Nəzəriyyə, onlar asimptotik daha yaxşı deyilik. 565 00:43:27,000 --> 00:43:30,000 Lakin, böyük board baxmaq 566 00:43:30,000 --> 00:43:35,000 və daha heç vaxt çalışır, və daha çox yaddaş tutur. 567 00:43:35,000 --> 00:43:43,000 Hər şey haqqında daha çox iş üçün pis olan bitir çalışır. 568 00:43:43,000 --> 00:43:49,000 Bu David Malan həlli həmişə nə edir 569 00:43:49,000 --> 00:43:56,000 o həmişə ismarışları onun trie həlli və o, hal-hazırda harada görmək bildirin. 570 00:43:56,000 --> 00:44:00,000 O David J, altında nə idi? 571 00:44:00,000 --> 00:44:06,000 O, 18 saylı var ki, olduqca pis deyil, belə 572 00:44:06,000 --> 00:44:09,000 və ən yaxşı biri olacaq ki, siz hesab edə bilər çalışır 573 00:44:09,000 --> 00:44:17,000 və ya yaxşı bir trie ilə çalışır. 574 00:44:17,000 --> 00:44:23,000 Onun orijinal həll belə deyilmi? 575 00:44:23,000 --> 00:44:29,000 Trie həllər RAM istifadə bu intervalında daha çox meyl kimi hiss edirəm. 576 00:44:29,000 --> 00:44:33,000 >> Çox top Go down və RAM istifadə bir rəqəm deyil. 577 00:44:33,000 --> 00:44:36,000 Alt tərəf aşağı gedin və sonra çalışır görmeye başlamaq 578 00:44:36,000 --> 00:44:41,000 Siz tamamilə kütləvi RAM istifadə aldığı, 579 00:44:41,000 --> 00:44:45,000 və çalışır daha çətindir. 580 00:44:45,000 --> 00:44:53,000 Not tamamilə ancaq təhsil təcrübəsi dəyər bir əgər. 581 00:44:53,000 --> 00:44:56,000 Son şey, bizim bağlı siyahısı 582 00:44:56,000 --> 00:45:04,000 və bu üç şeyə, bacalar, sıralarında və bağlı siyahıları, 583 00:45:04,000 --> 00:45:09,000 Əgər kompüter nə hər hansı gələcək şey 584 00:45:09,000 --> 00:45:12,000 Bu şeyi ilə tanışlıq var daşımayacaq. 585 00:45:12,000 --> 00:45:19,000 Onlar hər şey yalnız belə əsas var. 586 00:45:19,000 --> 00:45:25,000 >> Siyahıları bağlıdır və burada bir story bağlı siyahı bizim həyata olacaq etmişdir. 587 00:45:25,000 --> 00:45:34,000 Story nə bağlı deyil kimi ikiqat bağlı fərqli deməkdir? Bəli. 588 00:45:34,000 --> 00:45:37,000 [Tələbə] Bu yalnız, növbəti pointer üçün çox göstəricilərinə işarə 589 00:45:37,000 --> 00:45:39,000 onu sonra bir əvvəlki kimi. 590 00:45:39,000 --> 00:45:44,000 Bəli, belə şəkil formatında, yalnız nə idi? 591 00:45:44,000 --> 00:45:48,000 Mən iki şey var. Mən şəkil və şəkil var. 592 00:45:48,000 --> 00:45:51,000 Şəkil formatında, bizim story bağlı siyahıları, 593 00:45:51,000 --> 00:45:57,000 qaçılmaz, biz siyahı rəhbəri göstərici bir növ 594 00:45:57,000 --> 00:46:02,000 və sonra siyahı ərzində biz yalnız göstəricilərinə malik 595 00:46:02,000 --> 00:46:05,000 və bəlkə bu bal null üçün. 596 00:46:05,000 --> 00:46:08,000 Bu story bağlı siyahı sizin tipik rəsm olacaq. 597 00:46:08,000 --> 00:46:14,000 A ikiqat bağlı siyahısı, siz geri bilərsiniz. 598 00:46:14,000 --> 00:46:19,000 Mən sizə siyahıda hər hansı bir node vermək, onda siz mütləq əldə edə bilərsiniz 599 00:46:19,000 --> 00:46:23,000 hər hansı digər node siyahısına bir ikiqat bağlı siyahısı əgər. 600 00:46:23,000 --> 00:46:27,000 Amma siz siyahısına üçüncü node almaq və bir story bağlı siyahı varsa, 601 00:46:27,000 --> 00:46:30,000 Əgər birinci və ikinci qovşaqlarının almaq olacaq. heç bir yol 602 00:46:30,000 --> 00:46:34,000 Və müavinət və detriments və bir aşkar bir var 603 00:46:34,000 --> 00:46:42,000 daha çox ölçüsü qədər, və bunlar indi işarə olduğu takip var. 604 00:46:42,000 --> 00:46:49,000 Amma biz yalnız story bağlı qayğı. 605 00:46:49,000 --> 00:46:53,000 >> Biz həyata malik olacaq bir neçə şeylər. 606 00:46:53,000 --> 00:47:00,000 Sizin typedef struct node, int i: struct node * Növbəti; node. 607 00:47:00,000 --> 00:47:09,000 Bu typedef ürəyinizdə daxil yandırılmış edilməlidir. 608 00:47:09,000 --> 00:47:14,000 Quiz 1, bağlı siyahı node bir typedef vermək istəyirəm olmalıdır 609 00:47:14,000 --> 00:47:18,000 və dərhal aşağı cızmaq lazımdır 610 00:47:18,000 --> 00:47:22,000 hətta bu barədə düşünmədən. 611 00:47:22,000 --> 00:47:27,000 Mən bir neçə sual tapmaq, niyə biz burada struct lazımdır? 612 00:47:27,000 --> 00:47:32,000 Niyə biz node * deyə bilər? 613 00:47:32,000 --> 00:47:35,000 [Tələbə] [işitilemez] 614 00:47:35,000 --> 00:47:38,000 Bəli. 615 00:47:38,000 --> 00:47:44,000 Bir şey kimi bir node müəyyən edən yeganə şey 616 00:47:44,000 --> 00:47:47,000 özü typedef edir. 617 00:47:47,000 --> 00:47:55,000 Amma bu baxımdan, biz bu struct node definition vasitəsilə təhlil cür olduğunuzda 618 00:47:55,000 --> 00:48:01,000 biz typedef bitmiş deyil belə bəri, hələ bizim typedef başa deyil 619 00:48:01,000 --> 00:48:05,000 node yoxdur. 620 00:48:05,000 --> 00:48:12,000 Amma struct node edir və bu node burada, 621 00:48:12,000 --> 00:48:14,000 Bu da başqa bir şey adlandırmaq olar. 622 00:48:14,000 --> 00:48:16,000 Bu n adlandırmaq olar. 623 00:48:16,000 --> 00:48:19,000 Bu bağlı siyahı node adlandırmaq olar. 624 00:48:19,000 --> 00:48:21,000 Bu bir şey adlandırmaq olar. 625 00:48:21,000 --> 00:48:26,000 Amma bu struct node bu struct node eyni şey deyilir lazımdır. 626 00:48:26,000 --> 00:48:29,000 Bu da burada olmalıdır zəng nə, 627 00:48:29,000 --> 00:48:32,000 və belə də məsələnin ikinci nöqtə cavab 628 00:48:32,000 --> 00:48:37,000 niyə bir siz structs və structs və typedefs gördükdə dəfə çox olan 629 00:48:37,000 --> 00:48:42,000 yalnız typedef struct görmək lazımdır, siz anonim structs görürsünüz 630 00:48:42,000 --> 00:48:47,000 struct, lüğət, və ya hər həyata keçirilməsi. 631 00:48:47,000 --> 00:48:51,000 >> Niyə biz burada node demək lazımdır? 632 00:48:51,000 --> 00:48:54,000 Nə anonim struct ola bilər? 633 00:48:54,000 --> 00:48:56,000 Demək olar ki, eyni cavabı var. 634 00:48:56,000 --> 00:48:58,000 [Tələbə] Siz struct ərzində müraciət etmək lazımdır. 635 00:48:58,000 --> 00:49:04,000 Bəli, struct ərzində, siz struct özü müraciət etmək lazımdır. 636 00:49:04,000 --> 00:49:10,000 Siz struct adı vermir Əgər anonim struct varsa, siz ona istinad edə bilməz. 637 00:49:10,000 --> 00:49:17,000 Və son lakin ən-bu bütün olmalıdır qədər sadə deyil, 638 00:49:17,000 --> 00:49:20,000 Bu aşağı yazılı edirsinizsə və onlar həyata kömək etməlidir 639 00:49:20,000 --> 00:49:24,000 şeyləri bu cür mənası yoxdur Əgər səhv bir şey edirik ki,. 640 00:49:24,000 --> 00:49:28,000 Ən son deyil, niyə bu struct node * olmaq var? 641 00:49:28,000 --> 00:49:34,000 Niyə yalnız sonrakı node struct bilməz? 642 00:49:34,000 --> 00:49:37,000 Növbəti struct üçün [Tələbə] Pointer. 643 00:49:37,000 --> 00:49:39,000 Yəni biz istədiyiniz nə qaçılmaz edir. 644 00:49:39,000 --> 00:49:42,000 Nə üçün növbəti struct node heç vaxt ola bilər? 645 00:49:42,000 --> 00:49:50,000 Niyə * Növbəti struct node olmaq var? Bəli. 646 00:49:50,000 --> 00:49:53,000 [Tələbə] Bu sonsuz loop kimi. 647 00:49:53,000 --> 00:49:55,000 Bəli. 648 00:49:55,000 --> 00:49:57,000 [Tələbə] Bu, bütün biri olacaq. 649 00:49:57,000 --> 00:50:02,000 Bəli, yalnız biz ölçüsü və ya bir şey necə düşünün. 650 00:50:02,000 --> 00:50:08,000 Bir struct ölçüsü əsasən + və ya - burada və ya orada bəzi model. 651 00:50:08,000 --> 00:50:15,000 Bu əsasən struct olan şeyi ölçüləri məbləği olacaq. 652 00:50:15,000 --> 00:50:18,000 Burada Bu doğru bir şey dəyişmədən, ölçüsü asan olacaq. 653 00:50:18,000 --> 00:50:24,000 Struct node ölçüsü növbəti i + ölçüsü ölçüsü olacaq. 654 00:50:24,000 --> 00:50:27,000 I ölçüsü 4 olacaq. Növbəti ölçüsü 4 olacaq. 655 00:50:27,000 --> 00:50:30,000 Struct node ölçüsü 8 olacaq. 656 00:50:30,000 --> 00:50:34,000 Biz * yoxsa, sizeof düşünür 657 00:50:34,000 --> 00:50:37,000 sonra sizeof (i) 4 olacaq. 658 00:50:37,000 --> 00:50:43,000 Struct node ölçüsü sonrakı struct node + ölçüsü i ölçüsü olacaq 659 00:50:43,000 --> 00:50:46,000 Növbəti struct node i + ölçüsü + ölçüsü. 660 00:50:46,000 --> 00:50:55,000 Bu qovşaqlarının sonsuz recursion olardı. 661 00:50:55,000 --> 00:51:00,000 Bu şeylər olmalıdır necə görə. 662 00:51:00,000 --> 00:51:03,000 >> Yenə, mütləq ki, yadda 663 00:51:03,000 --> 00:51:06,000 və ya ən azı siz ola bilər ki, kifayət qədər başa 664 00:51:06,000 --> 00:51:12,000 bu kimi baxmaq nə vasitəsilə səbəb. 665 00:51:12,000 --> 00:51:14,000 Biz həyata istəyirəm olacaq şeylər. 666 00:51:14,000 --> 00:51:18,000 Əgər uzunluğu siyahısı 667 00:51:18,000 --> 00:51:21,000 siz fırıldaqçı və ətrafında saxlamaq bilər 668 00:51:21,000 --> 00:51:24,000 qlobal uzunluğu və ya bir şey, ancaq bunu etmək fikrində deyilik. 669 00:51:24,000 --> 00:51:28,000 Biz siyahısı uzunluğu saymaq olacaq. 670 00:51:28,000 --> 00:51:34,000 Biz şey var ki, əsasən axtarış kimi belə 671 00:51:34,000 --> 00:51:41,000 biz bu tam da bağlı siyahısında olub olmadığını görmek üçün integers bir bağlı siyahı var. 672 00:51:41,000 --> 00:51:44,000 Başına siyahı əvvəlində daxil olur. 673 00:51:44,000 --> 00:51:46,000 Əlavə sonunda daxil edir. 674 00:51:46,000 --> 00:51:53,000 Insert_sorted listedeki sıralaması mövqe daxil edir. 675 00:51:53,000 --> 00:52:01,000 Və Insert_sorted cür siz başına istifadə və ya pis yollarla əlavə heç tutur. 676 00:52:01,000 --> 00:52:09,000 >> Siz həyata etdiyiniz zaman insert_sorted-Insert_sorted 677 00:52:09,000 --> 00:52:13,000 Gəlin biz bağlıdır siyahısı var deyirlər. 678 00:52:13,000 --> 00:52:18,000 Bu hazırda 5, 4, 2, kimi görünür. 679 00:52:18,000 --> 00:52:24,000 Mən belə uzun siyahısını özü artıq çeşidlənir kimi, 3 daxil etmək istəyirəm 680 00:52:24,000 --> 00:52:27,000 3 məxsusdur yerləşir tapmaq asan. 681 00:52:27,000 --> 00:52:29,000 I 2-da başlanır. 682 00:52:29,000 --> 00:52:32,000 OK, 3 2 daha böyük, mən davam etmək istəyirəm. 683 00:52:32,000 --> 00:52:35,000 Oh, 4 çox böyük, mən 3 2 və 4 arasında getmək gedir bilirəm 684 00:52:35,000 --> 00:52:39,000 və mən göstəricilərinə və bütün məhsulları düzeltmek üçün var. 685 00:52:39,000 --> 00:52:43,000 Amma ciddi, insert_sorted istifadə etmədikdə 686 00:52:43,000 --> 00:52:50,000 kimi edək, yalnız mən 6 başına demək 687 00:52:50,000 --> 00:52:55,000 sonra mənim bağlı siyahısı olmağa davam edir. 688 00:52:55,000 --> 00:53:01,000 İndi insert_sorted üçün, yalnız kəsb edə bilər ki, heç bir əhəmiyyət kəsb edir 689 00:53:01,000 --> 00:53:04,000 əməliyyatları mövcud olsa siyahısı sorted ki, 690 00:53:04,000 --> 00:53:09,000 bu sıralanır deyil səbəb ola bilər ki, bu. 691 00:53:09,000 --> 00:53:20,000 O siz həyata keçirilməsi üçün var olacaq əsas şey bir faydalı əlavə-belə tapın. 692 00:53:20,000 --> 00:53:24,000 >> İndi, uzunluğu nə bir dəqiqə almaq və başqa 693 00:53:24,000 --> 00:53:30,000 və bu nisbətən sürətli olmalıdır. 694 00:53:41,000 --> 00:53:48,000 Yekun zaman yaxınlaşır, belə ki, hər kəs uzunluğu üçün bir şey və ya başqa? 695 00:53:48,000 --> 00:53:50,000 Onlar demək olar ki, eyni olacaq. 696 00:53:50,000 --> 00:53:57,000 [Tələbə] Length. 697 00:53:57,000 --> 00:54:01,000 , Gəlin görmək təftiş edək. 698 00:54:01,000 --> 00:54:04,000 Okay. 699 00:54:12,000 --> 00:54:15,000 Siz izah etmək istəyirsiniz? 700 00:54:15,000 --> 00:54:21,000 [Tələbə] Mən yalnız bir göstərici node yaratmaq və qlobal dəyişən olan ilk onu başlamaq, 701 00:54:21,000 --> 00:54:27,000 və sonra mən San günah almaq və bu halda əgər 0 qayıtmaq yoxdur belə ki, null varsa kontrol edin. 702 00:54:27,000 --> 00:54:34,000 Əks halda, mən vasitəsilə loop, tam ərzində track saxlanılması 703 00:54:34,000 --> 00:54:38,000 Mən siyahıda növbəti element əldə etdik neçə dəfə 704 00:54:38,000 --> 00:54:43,000 və eyni artım əməliyyat da ki, faktiki element daxil 705 00:54:43,000 --> 00:54:47,000 və sonra davamlı, bu null varsa çek görmək etmək 706 00:54:47,000 --> 00:54:56,000 bu null varsa və o, aborts və yalnız mən əldə etdiyiniz elementlərin sayı qaytarır. 707 00:54:56,000 --> 00:55:01,000 >> [Rob B.] hər şey haqqında hər hansı bir şərh varmı? 708 00:55:01,000 --> 00:55:06,000 Bu gözəl düzgün müdrik görünür. 709 00:55:06,000 --> 00:55:10,000 [Tələbə] Mən sizə node == null lazımdır düşünmürəm. 710 00:55:10,000 --> 00:55:13,000 Bəli, belə node əgər == null qaytarılması 0. 711 00:55:13,000 --> 00:55:18,000 Amma node == null bu-oh, bir düzgün məsələ vardır. 712 00:55:18,000 --> 00:55:23,000 Bu yalnız i qaytarılması edirik idi, lakin indi daxilində deyil. 713 00:55:23,000 --> 00:55:30,000 Siz int i yalnız lazımdır, belə ki, i = 0. 714 00:55:30,000 --> 00:55:34,000 Node null olsa, sonra i hələ, 0 olacaq 715 00:55:34,000 --> 00:55:39,000 və biz 0 qayıtmaq olacaq, bu halda eyni belə. 716 00:55:39,000 --> 00:55:48,000 Digər ümumi şey bəyannamə davam edir 717 00:55:48,000 --> 00:55:51,000 loop üçün və node daxili. 718 00:55:51,000 --> 00:55:54,000 Siz demək-oh bilər heç. 719 00:55:54,000 --> 00:55:56,000 Bu kimi saxlamaq edək. 720 00:55:56,000 --> 00:55:59,000 Mən yəqin ki, int i = 0 bura qoymaq olardı 721 00:55:59,000 --> 00:56:05,000 sonra node * node = burada ilk. 722 00:56:05,000 --> 00:56:11,000 Və indi bu canini-almaq necə yəqin ki. 723 00:56:11,000 --> 00:56:14,000 Bu yazdığınız necə yəqin ki. 724 00:56:14,000 --> 00:56:21,000 Bu kimi də dönük bilər. 725 00:56:21,000 --> 00:56:25,000 Burada loop strukturu üçün 726 00:56:25,000 --> 00:56:30,000 int i = 0 kimi demək olar ki, kimi təbii olmalıdır 727 00:56:30,000 --> 00:56:33,000 i array uzunluğu az i + +. 728 00:56:33,000 --> 00:56:38,000 Ki, bir sıra üzərində təkrarlamaq necə varsa, bu bir bağlı siyahı üzərində təkrarlamaq necə. 729 00:56:38,000 --> 00:56:45,000 >> Bu bir nöqtədə ikinci təbiət olmalıdır. 730 00:56:45,000 --> 00:56:50,000 Mind ki, bu demək olar ki, eyni şey olacaq. 731 00:56:50,000 --> 00:56:57,000 Siz bağlı siyahı üzərində təkrarlamaq istəyirəm olacaq. 732 00:56:57,000 --> 00:57:02,000 Əgər node-I dəyəri adlanır nə heç bir fikrim yoxdur. 733 00:57:02,000 --> 00:57:04,000 Node i. 734 00:57:04,000 --> 00:57:15,000 Ki node olan value = i doğru qayıtmaq və bu edin. 735 00:57:15,000 --> 00:57:18,000 Qeyd edək ki, biz heç yalan qayıtmaq yeganə yolu 736 00:57:18,000 --> 00:57:23,000 biz bütün bağlı siyahı üzərində təkrarlamaq və doğru qayıtmaq heç əgər, 737 00:57:23,000 --> 00:57:29,000 belə ki, bu nə. 738 00:57:29,000 --> 00:57:36,000 Kimi yan not biz yəqin ki, əlavə və ya başına almaq deyil. 739 00:57:36,000 --> 00:57:39,000 >> Sadə son qeyd. 740 00:57:39,000 --> 00:57:52,000 Siz statik söz görürsünüzsə, elə isə statik int sayı = 0 deyək 741 00:57:52,000 --> 00:57:56,000 sonra biz count etmək + +, siz əsasən qlobal dəyişən kimi hesab edə bilər, 742 00:57:56,000 --> 00:58:00,000 Mən yalnız bu biz uzunluğu həyata olacaq necə deyil, baxmayaraq. 743 00:58:00,000 --> 00:58:06,000 Burada bunu, sonra + + saymaq alıram. 744 00:58:06,000 --> 00:58:11,000 Biz sayı incrementing bizim bağlı siyahı bir node daxil hər hansı bir yol. 745 00:58:11,000 --> 00:58:15,000 Bu baxımdan statik söz nə deməkdir edir. 746 00:58:15,000 --> 00:58:20,000 Mən yalnız int sayı olsaydı = müntəzəm köhnə qlobal dəyişən olacağını 0. 747 00:58:20,000 --> 00:58:25,000 Nə statik int sayı vasitələri bu fayl üçün qlobal dəyişən olmasıdır. 748 00:58:25,000 --> 00:58:28,000 Bu, bəzi başqa fayl mümkün deyil 749 00:58:28,000 --> 00:58:34,000 siz açılmış varsa, pset 5 düşünmək istəyirəm. 750 00:58:34,000 --> 00:58:39,000 Siz həm speller.c var və siz dictionary.c var 751 00:58:39,000 --> 00:58:42,000 və yalnız speller.c, sonra bir şey qlobal bir şey bəyan əgər 752 00:58:42,000 --> 00:58:45,000 dictionary.c və əksinə əldə edilə bilər. 753 00:58:45,000 --> 00:58:48,000 Qlobal dəyişənlər, hər hansı bir. C fayl tarafından erişilebilir 754 00:58:48,000 --> 00:58:54,000 lakin statik dəyişənlərin, fayl daxilində yalnız erişilebilir 755 00:58:54,000 --> 00:59:01,000 belə daxili dictionary.c və spell checker və ya daxili, 756 00:59:01,000 --> 00:59:06,000 bu mənim serialın ölçüsü üçün dəyişən bəyan necə növ 757 00:59:06,000 --> 00:59:10,000 və ya lüğət sözlər mənim sıra ölçüsü. 758 00:59:10,000 --> 00:59:15,000 Mən hər kəs üçün daxil bir qlobal dəyişən bəyan etmək istəmirəm ildən, 759 00:59:15,000 --> 00:59:18,000 Mən, həqiqətən, yalnız öz məqsədləri üçün qayğı. 760 00:59:18,000 --> 00:59:21,000 >> Bu barədə yaxşı şey, bütün adı toqquşma stuff deyil. 761 00:59:21,000 --> 00:59:27,000 Bəzi digər fayl sayı adlanan qlobal dəyişən istifadə etməyə çalışır varsa, hər şeyi çox çox səhv, 762 00:59:27,000 --> 00:59:33,000 , bu gözəl şeylər təhlükəsiz edir və yalnız siz istifadə edə bilərsiniz 763 00:59:33,000 --> 00:59:38,000 və başqa heç bir ola bilər, və başqa kimsə sayı adlanan qlobal dəyişən bəyan əgər, 764 00:59:38,000 --> 00:59:43,000 sonra sayı adlanan sizin statik dəyişən mane deyil. 765 00:59:43,000 --> 00:59:47,000 Bu statik nə var. Bu fayl qlobal dəyişir. 766 00:59:47,000 --> 00:59:52,000 >> Bir şey haqqında suallar? 767 00:59:52,000 --> 00:59:59,000 Bütün dəsti. Bye. 768 00:59:59,000 --> 01:00:03,000 [CS50.TV]