1 00:00:00,000 --> 00:00:08,250 2 00:00:08,250 --> 00:00:12,680 >> ЈАСОН Hirschhorn: Добредојдовте сите на Дел Седум. 3 00:00:12,680 --> 00:00:15,040 Ние сме во недела седум на курсот. 4 00:00:15,040 --> 00:00:18,440 И оваа претстојните четврток е Ноќта на вештерките, па јас сум 5 00:00:18,440 --> 00:00:21,420 облечени како тиква. 6 00:00:21,420 --> 00:00:23,460 Не можев да се превиткуваат и го стави на моите чевли, па тоа е причината зошто јас сум 7 00:00:23,460 --> 00:00:25,660 само носи чорапи. 8 00:00:25,660 --> 00:00:29,220 Јас сум исто така не носат ништо под ова, па не можам да го симнат ако тоа е 9 00:00:29,220 --> 00:00:29,950 оттргнува вас. 10 00:00:29,950 --> 00:00:31,860 Јас се извинувам однапред за тоа. 11 00:00:31,860 --> 00:00:33,170 Вие не треба да се замисли што се случува. 12 00:00:33,170 --> 00:00:34,240 Јас сум облечен боксери. 13 00:00:34,240 --> 00:00:36,170 Па тоа е добро. 14 00:00:36,170 --> 00:00:41,120 >> Имам подолга сторија за тоа зошто јас сум облечен како тиква, но јас ќе одам да се 15 00:00:41,120 --> 00:00:45,110 спаси за подоцна во ова поглавје затоа што сакаат да започнете. 16 00:00:45,110 --> 00:00:47,720 Имаме многу возбудливи нешта да се оди во текот на оваа недела. 17 00:00:47,720 --> 00:00:51,810 Повеќето од нив се однесуваат директно на овој Проблемот сет недела, грешките во правописот. 18 00:00:51,810 --> 00:00:54,680 Ние ќе се случува во текот поврзани листи и хаш маси 19 00:00:54,680 --> 00:00:57,160 за целиот дел. 20 00:00:57,160 --> 00:01:02,490 Ја ставив оваа листа секоја недела, листа на ресурси за да ви помогнат со 21 00:01:02,490 --> 00:01:04,120 материјал на овој курс. 22 00:01:04,120 --> 00:01:07,600 Ако во загуба, или ако во потрага за некои повеќе информации, проверете еден од 23 00:01:07,600 --> 00:01:09,930 овие ресурси. 24 00:01:09,930 --> 00:01:14,530 >> Повторно, pset6 е спелувањето грешки, pset оваа недела. 25 00:01:14,530 --> 00:01:17,690 И тоа, исто така, ги охрабрува и јас ве охрабруваме да, да користите некои други 26 00:01:17,690 --> 00:01:20,320 ресурси специјално за овој pset. 27 00:01:20,320 --> 00:01:23,390 Особено, три сум наведени на екранот - 28 00:01:23,390 --> 00:01:27,160 gdb, кои ние сме биле запознаени со и се користат за некое време сега, е 29 00:01:27,160 --> 00:01:29,270 ќе биде многу корисна оваа недела. 30 00:01:29,270 --> 00:01:30,190 Па јас се стави дека тука горе. 31 00:01:30,190 --> 00:01:32,910 Но, кога си работат со C, секогаш треба да биде со користење gdb да 32 00:01:32,910 --> 00:01:34,430 debug вашите програми. 33 00:01:34,430 --> 00:01:36,660 Оваа недела, исто така, valgrind. 34 00:01:36,660 --> 00:01:38,535 Дали некој знае што valgrind прави тоа? 35 00:01:38,535 --> 00:01:42,184 36 00:01:42,184 --> 00:01:43,890 >> Публика: Тоа проверки за меморија протекување? 37 00:01:43,890 --> 00:01:45,950 >> ЈАСОН Hirschhorn: Valgrind проверки за меморија протекување. 38 00:01:45,950 --> 00:01:49,970 Па ако Примерок нешто во вашата програма, ти си прашува за меморија. 39 00:01:49,970 --> 00:01:52,920 На крајот на вашата програма, ќе имаат да се напише бесплатно на сè што сте 40 00:01:52,920 --> 00:01:54,800 malloced да се даде на меморија назад. 41 00:01:54,800 --> 00:01:58,420 Ако не напише бесплатно на крајот и вашата програма доаѓа до заклучок, 42 00:01:58,420 --> 00:02:00,000 сè што автоматски ќе да бидат ослободени. 43 00:02:00,000 --> 00:02:02,340 И за мали програми, тоа е не толку голема зделка. 44 00:02:02,340 --> 00:02:05,250 Но, ако сте пишување прекинати програма со која не се откажува, 45 00:02:05,250 --> 00:02:09,180 мора, во неколку минути или неколку секунди, а потоа меморија протекување 46 00:02:09,180 --> 00:02:10,710 може да стане голем договор. 47 00:02:10,710 --> 00:02:14,940 >> Значи за pset6, за очекување е дека ќе имаат нула меморија протекување со 48 00:02:14,940 --> 00:02:15,910 вашата програма. 49 00:02:15,910 --> 00:02:18,690 Да се ​​провери за меморија протекување, работи valgrind и тоа ќе ви даде некои убави 50 00:02:18,690 --> 00:02:21,190 излез допуштајќи знаете дали или не се беше бесплатно. 51 00:02:21,190 --> 00:02:23,940 Ние ќе вежбате со него подоцна денес, се надевам. 52 00:02:23,940 --> 00:02:25,790 >> Конечно, разл команда. 53 00:02:25,790 --> 00:02:28,900 Сте користеле нешто слично на тоа во pset5 со ѕиркаат алатка. 54 00:02:28,900 --> 00:02:30,780 Дозволено да се погледне внатре. 55 00:02:30,780 --> 00:02:33,400 Можете исто така се користи разл, исто така, по проблемот постави спецификации. 56 00:02:33,400 --> 00:02:35,950 Но, во што е дозволено да се споредба на две датотеки. 57 00:02:35,950 --> 00:02:39,180 Вие би можеле да се споредат bitmap датотека и инфо заглавија на персоналот решение и 58 00:02:39,180 --> 00:02:42,200 вашето решение во pset5 ако сте одбрале да го користите. 59 00:02:42,200 --> 00:02:44,030 Разл ќе ви овозможи да направат тоа, како и. 60 00:02:44,030 --> 00:02:48,620 Можете да ги споредувате точен одговор на проблем оваа недела во собата да се вашиот одговор 61 00:02:48,620 --> 00:02:52,210 и види дали линии или види каде грешките се. 62 00:02:52,210 --> 00:02:55,870 >> Значи тоа се три добри алатки кои треба да го користите за оваа недела, и 63 00:02:55,870 --> 00:02:58,130 дефинитивно проверете ја вашата програма со овие три алатки 64 00:02:58,130 --> 00:03:00,520 пред да наполнат внатре 65 00:03:00,520 --> 00:03:04,650 Повторно, како што спомнавме секоја недела, ако имате било какви повратни информации за мене - и 66 00:03:04,650 --> 00:03:06,470 позитивна и конструктивна - 67 00:03:06,470 --> 00:03:09,930 се чувствуваат слободни да се упатат кон веб-страница на дното на овој слајд 68 00:03:09,930 --> 00:03:11,270 и влез таму. 69 00:03:11,270 --> 00:03:13,440 Јас навистина го цениме било и сите повратни информации. 70 00:03:13,440 --> 00:03:17,360 И ако ми даде конкретни работи кои Можам да направам за да се подобри или дека јас сум 71 00:03:17,360 --> 00:03:21,350 прави добро што би ме сакал да продолжи, јас се земе дека на срцето и 72 00:03:21,350 --> 00:03:24,040 навистина се обиде тешко да се слуша да вашето мислење. 73 00:03:24,040 --> 00:03:27,720 Не можам да ветам дека ќе одам да направите сè, иако, како што носи 74 00:03:27,720 --> 00:03:30,700 тиква костим секоја недела. 75 00:03:30,700 --> 00:03:34,020 >> Па ние се случува да поминат најголемиот дел од дел, како што веќе напоменав, зборувајќи за 76 00:03:34,020 --> 00:03:37,240 поврзани листи и хаш маси, кои ќе биде директно применлива до 77 00:03:37,240 --> 00:03:38,780 проблем во собата оваа недела. 78 00:03:38,780 --> 00:03:42,580 Поврзани листи ќе одиме над релативно брзо, бидејќи ние си трошат фер малку 79 00:03:42,580 --> 00:03:44,930 на време да оди над тоа во делот. 80 00:03:44,930 --> 00:03:48,680 И така што ќе добиете директно во кодирање проблеми за поврзани листи. 81 00:03:48,680 --> 00:03:52,740 А потоа на крајот ние ќе зборуваме за хеш табели и како тие се однесуваат на овој 82 00:03:52,740 --> 00:03:55,280 Проблемот недела во собата. 83 00:03:55,280 --> 00:03:57,560 >> Сте виделе овој код пред. 84 00:03:57,560 --> 00:04:02,730 Ова е struct, а тоа е дефинирањето нешто ново нарекува јазол. 85 00:04:02,730 --> 00:04:10,660 И во внатрешноста на јазол постои број токму тука и таму е покажувач кон 86 00:04:10,660 --> 00:04:11,830 друг јазол. 87 00:04:11,830 --> 00:04:12,790 Видовме тоа порано. 88 00:04:12,790 --> 00:04:14,830 Ова е доаѓаат за неколку недели. 89 00:04:14,830 --> 00:04:18,680 Тоа е комбинација на покажувачи, кој го работат со, а structs, кои им овозможуваат 90 00:04:18,680 --> 00:04:22,079 ни да се комбинираат две различни работи во една тип на податок. 91 00:04:22,079 --> 00:04:24,830 92 00:04:24,830 --> 00:04:26,490 >> Има многу случува на екранот. 93 00:04:26,490 --> 00:04:30,220 Но сето тоа треба да биде релативно запознаени со вас. 94 00:04:30,220 --> 00:04:33,810 На првата линија, ние прогласи нов јазол. 95 00:04:33,810 --> 00:04:41,650 А потоа внатре дека новиот јазол, јас во собата цел број со тоа, што јазол еден. 96 00:04:41,650 --> 00:04:44,950 Ние гледаме на следната линија правам со printf команда, но јас сум неактивни 97 00:04:44,950 --> 00:04:48,080 на printf команда, бидејќи навистина важен дел е оваа линија тука - 98 00:04:48,080 --> 00:04:50,020 new_node.n. 99 00:04:50,020 --> 00:04:51,270 Што значи точка значи? 100 00:04:51,270 --> 00:04:53,810 101 00:04:53,810 --> 00:04:57,240 >> ПУБЛИКАТА: Одете до јазол и процени n вредност за тоа. 102 00:04:57,240 --> 00:04:58,370 >> ЈАСОН Hirschhorn: Тоа е точно во право. 103 00:04:58,370 --> 00:05:03,300 Точка значи пристап до n дел на овој нов јазол. 104 00:05:03,300 --> 00:05:05,690 Овој следната линија што прави? 105 00:05:05,690 --> 00:05:16,140 106 00:05:16,140 --> 00:05:17,050 Мајкл. 107 00:05:17,050 --> 00:05:21,910 >> Публика: Тоа создава друг јазол кои ќе укажуваат на нов јазол. 108 00:05:21,910 --> 00:05:24,870 >> ЈАСОН Hirschhorn: Значи тоа не го прави се создаде нов јазол. 109 00:05:24,870 --> 00:05:26,120 Тоа создава она? 110 00:05:26,120 --> 00:05:28,300 111 00:05:28,300 --> 00:05:29,300 >> ПУБЛИКАТА: покажувач. 112 00:05:29,300 --> 00:05:33,460 >> ЈАСОН Hirschhorn: покажувач на еден јазол, како што е наведено од страна на овој јазол * тука. 113 00:05:33,460 --> 00:05:34,800 Па тоа создава покажувач на еден јазол. 114 00:05:34,800 --> 00:05:37,490 И кој јазол е тоа што покажуваат да, Мајкл? 115 00:05:37,490 --> 00:05:38,440 >> Публика: Нов јазол? 116 00:05:38,440 --> 00:05:39,240 >> ЈАСОН Hirschhorn: Нови јазол. 117 00:05:39,240 --> 00:05:43,020 И тоа е покажувајќи таму, бидејќи ние сме со оглед на тоа на адреса на новиот јазол. 118 00:05:43,020 --> 00:05:45,820 И сега во оваа линија гледаме два различни начини на 119 00:05:45,820 --> 00:05:46,910 изразување на истото. 120 00:05:46,910 --> 00:05:49,650 И јас сакав да се истакне како овие две работи се исти. 121 00:05:49,650 --> 00:05:54,740 Во првата линија, ние dereference на покажувачот. 122 00:05:54,740 --> 00:05:55,830 Па ние одиме на јазол. 123 00:05:55,830 --> 00:05:56,830 Тоа е она што оваа ѕвезда значи. 124 00:05:56,830 --> 00:05:57,930 Видовме дека пред со покажувачи. 125 00:05:57,930 --> 00:05:59,280 Оди до тој јазол. 126 00:05:59,280 --> 00:06:00,370 Тоа е во голема заграда. 127 00:06:00,370 --> 00:06:04,610 А потоа пристап преку операторот точка на n елемент на тој јазол. 128 00:06:04,610 --> 00:06:08,430 >> Значи тоа е преземање на синтаксата видовме токму тука и сега 129 00:06:08,430 --> 00:06:09,670 го користите со покажувач. 130 00:06:09,670 --> 00:06:13,730 Се разбира, таа добива вид на зафатен, ако сте пишување оние загради - 131 00:06:13,730 --> 00:06:14,940 таа ѕвезда и дека точка. 132 00:06:14,940 --> 00:06:16,220 Тоа добива малку зафатен. 133 00:06:16,220 --> 00:06:18,500 Па ние имаме некои синтаксички шеќер. 134 00:06:18,500 --> 00:06:19,920 И оваа линија, токму тука - 135 00:06:19,920 --> 00:06:21,170 ptr_node-> n. 136 00:06:21,170 --> 00:06:25,400 137 00:06:25,400 --> 00:06:28,000 Дека го прави истото точната нешто. 138 00:06:28,000 --> 00:06:30,840 Значи овие две линии на код се еквивалент и ќе направи 139 00:06:30,840 --> 00:06:31,650 иста работа. 140 00:06:31,650 --> 00:06:34,210 >> Но јас сакав да истакнам оние пред да одиме понатаму па да се разбере 141 00:06:34,210 --> 00:06:39,000 дека навистина тоа нешто, токму тука е само синтаксички шеќер за dereferencing 142 00:06:39,000 --> 00:06:44,200 покажувачот, а потоа ќе на n дел од тоа struct. 143 00:06:44,200 --> 00:06:45,525 Било какви прашања во врска со овој слајд? 144 00:06:45,525 --> 00:06:53,020 145 00:06:53,020 --> 00:06:54,390 OK. 146 00:06:54,390 --> 00:06:58,510 >> Па ние ќе да поминат низ неколку на операции што можете да направите за 147 00:06:58,510 --> 00:06:59,730 поврзани листи. 148 00:06:59,730 --> 00:07:05,770 А поврзана листа, да се потсетиме, е серија на јазли кои упатуваат на една со друга. 149 00:07:05,770 --> 00:07:12,470 И ние обично почнуваат со покажувач наречен главата, генерално, што укажува на 150 00:07:12,470 --> 00:07:14,040 првото нешто во листата. 151 00:07:14,040 --> 00:07:18,900 Па на првата линија тука, ние имаме оригинални L прв план. 152 00:07:18,900 --> 00:07:21,370 Така што нешто што може да мисли на - оваа текст, токму тука можете да мислам на како 153 00:07:21,370 --> 00:07:23,560 само на покажувачот ние сме се чуваат некаде дека поени 154 00:07:23,560 --> 00:07:24,670 на првиот елемент. 155 00:07:24,670 --> 00:07:27,500 И во овој поврзана листа имаме четири јазли. 156 00:07:27,500 --> 00:07:29,530 Секој јазол е голема кутија. 157 00:07:29,530 --> 00:07:33,430 Поголемите кутија во внатрешноста на големите кутија е цел дел. 158 00:07:33,430 --> 00:07:37,400 И тогаш имаме покажувач дел. 159 00:07:37,400 --> 00:07:39,630 >> Овие кутии не се подготвени да скала, бидејќи колку е голема е 160 00:07:39,630 --> 00:07:42,320 цел број во бајти? 161 00:07:42,320 --> 00:07:43,290 Колку е голема сега? 162 00:07:43,290 --> 00:07:43,710 Четири. 163 00:07:43,710 --> 00:07:45,470 И колку е голема е покажувачот? 164 00:07:45,470 --> 00:07:45,940 Четири. 165 00:07:45,940 --> 00:07:48,180 Значи, навистина, ако ние требаше да се подготви ова за да ја двете кутии 166 00:07:48,180 --> 00:07:49,690 ќе биде иста големина. 167 00:07:49,690 --> 00:07:52,870 Во овој случај, ние сакаме да го вметнете нешто во поврзана листа. 168 00:07:52,870 --> 00:07:57,190 Така можете да видите овде долу ние сме вметнување пет Ние напречни преку 169 00:07:57,190 --> 00:08:01,310 поврзана листа, најдете, каде пет оди, а потоа да го внесете. 170 00:08:01,310 --> 00:08:03,560 >> Ајде да се скрши дека долу и да си одат малку побавно. 171 00:08:03,560 --> 00:08:05,510 Одам да се укаже на одборот. 172 00:08:05,510 --> 00:08:09,930 Па ние имаме јазол пет кои ние сме создадени во mallocs. 173 00:08:09,930 --> 00:08:11,190 Зошто е сите се смеат? 174 00:08:11,190 --> 00:08:12,130 Само се шегувам. 175 00:08:12,130 --> 00:08:13,310 OK. 176 00:08:13,310 --> 00:08:14,820 Па ние сме malloced пет. 177 00:08:14,820 --> 00:08:16,310 Ние направивме овој јазол некаде на друго место. 178 00:08:16,310 --> 00:08:17,740 Ние го имаме подготвени да одите. 179 00:08:17,740 --> 00:08:20,130 Започнуваме во предниот дел нашата листа со две. 180 00:08:20,130 --> 00:08:22,380 И ние сакаме да се вметне во сортирани начин. 181 00:08:22,380 --> 00:08:27,550 >> Па ако гледаме две и ние сакаме да се стави во пет, што ќе правиме кога ќе го видиме 182 00:08:27,550 --> 00:08:28,800 нешто помалку од нас? 183 00:08:28,800 --> 00:08:31,850 184 00:08:31,850 --> 00:08:33,520 Што? 185 00:08:33,520 --> 00:08:36,750 Ние сакаме да го внесете пет во оваа поврзана листа, одржувањето подредени. 186 00:08:36,750 --> 00:08:37,520 Гледаме број два. 187 00:08:37,520 --> 00:08:38,769 Па што ќе правиме? 188 00:08:38,769 --> 00:08:39,179 Маркус? 189 00:08:39,179 --> 00:08:40,679 >> ПУБЛИКАТА: Јавете се на покажувачот кон следниот јазол. 190 00:08:40,679 --> 00:08:42,530 >> ЈАСОН Hirschhorn: И зошто ние одиме на следниот? 191 00:08:42,530 --> 00:08:45,970 >> Публика: Затоа што тоа е следниот јазол во листата. 192 00:08:45,970 --> 00:08:48,310 И ние знаеме само дека друга локација. 193 00:08:48,310 --> 00:08:50,410 >> ЈАСОН Hirschhorn: И пет е поголема од две, особено. 194 00:08:50,410 --> 00:08:51,600 Бидејќи ние сакаме тоа да го чува подредени. 195 00:08:51,600 --> 00:08:52,730 Така пет е поголема од две години. 196 00:08:52,730 --> 00:08:54,460 Па ние се движи кон следниот. 197 00:08:54,460 --> 00:08:55,240 А сега доаѓаме до четири. 198 00:08:55,240 --> 00:08:56,490 И она што се случува кога ќе стигнат до четири? 199 00:08:56,490 --> 00:08:58,920 200 00:08:58,920 --> 00:09:00,310 >> Пет е поголема од четири. 201 00:09:00,310 --> 00:09:01,460 Па ние продолжувам да одам. 202 00:09:01,460 --> 00:09:03,110 А сега ние сме во шест. 203 00:09:03,110 --> 00:09:04,360 И она што го гледаме во шест? 204 00:09:04,360 --> 00:09:08,672 205 00:09:08,672 --> 00:09:09,608 Да, Карлос? 206 00:09:09,608 --> 00:09:10,544 >> ПУБЛИКАТА: Шест е поголем од пет. 207 00:09:10,544 --> 00:09:11,480 >> ЈАСОН Hirschhorn: Шест е поголема од пет. 208 00:09:11,480 --> 00:09:13,660 Па тоа е каде што сакате за да вметнете пет. 209 00:09:13,660 --> 00:09:17,320 Сепак, имајте на ум дека ако ние имаат само еден покажувач тука - 210 00:09:17,320 --> 00:09:19,840 ова е нашиот дополнителни покажувачот тоа е traversing преку листата. 211 00:09:19,840 --> 00:09:21,860 И ние сме посочувајќи шест. 212 00:09:21,860 --> 00:09:25,010 Изгубивме пратите на она што доаѓа пред шест. 213 00:09:25,010 --> 00:09:29,130 Значи, ако сакаме да го внесете нешто во оваа листа одржувањето подредени, ние 214 00:09:29,130 --> 00:09:31,630 најверојатно треба колку совети? 215 00:09:31,630 --> 00:09:32,280 >> ПУБЛИКАТА: Два. 216 00:09:32,280 --> 00:09:32,920 >> ЈАСОН HIRSCHORN: Два. 217 00:09:32,920 --> 00:09:35,720 Еден да ги пратите на тековната еден и еден да ги пратите на 218 00:09:35,720 --> 00:09:37,050 претходниот. 219 00:09:37,050 --> 00:09:38,450 Ова е само поединечно поврзана листа. 220 00:09:38,450 --> 00:09:39,670 Тоа само оди во една насока. 221 00:09:39,670 --> 00:09:43,220 Ако имавме двојно поврзана листа, каде што сè беше да се покажува кон нешто 222 00:09:43,220 --> 00:09:46,240 после тоа и нешто пред тоа, тогаш ние не би требало да го направите тоа. 223 00:09:46,240 --> 00:09:49,350 Но во овој случај ние не сакаме да се изгуби ги пратите на она што се случило пред нас во случај 224 00:09:49,350 --> 00:09:53,350 ние треба да го вметнете пет некаде во средината. 225 00:09:53,350 --> 00:09:55,610 Велат бевме вметнување девет. 226 00:09:55,610 --> 00:09:57,260 Што ќе се случи кога стигнавме до осум? 227 00:09:57,260 --> 00:10:01,860 228 00:10:01,860 --> 00:10:04,880 >> Публика: Ќе треба да се добие дека нула точка. 229 00:10:04,880 --> 00:10:07,820 Наместо нула точка ќе треба за да додадете елемент и потоа имаат 230 00:10:07,820 --> 00:10:09,216 тоа се укаже на девет. 231 00:10:09,216 --> 00:10:09,700 >> ЈАСОН HIRSCHORN: Токму така. 232 00:10:09,700 --> 00:10:10,600 Па да добиеме осум. 233 00:10:10,600 --> 00:10:13,140 Ние до крајот на листата, бидејќи ова е да се покажува кон нула. 234 00:10:13,140 --> 00:10:16,330 И сега, наместо тоа упатуваат на нула имаме таа точка на нашиот нов јазол. 235 00:10:16,330 --> 00:10:19,870 И ние го поставите покажувачот во нашиот нов јазол на нула. 236 00:10:19,870 --> 00:10:21,445 Дали некој има било какви прашања за вметнување? 237 00:10:21,445 --> 00:10:25,620 238 00:10:25,620 --> 00:10:28,100 Што ако јас не се грижат за водење на листа подредена? 239 00:10:28,100 --> 00:10:31,701 240 00:10:31,701 --> 00:10:34,350 >> Публика: Стап тоа во почетокот или на крајот. 241 00:10:34,350 --> 00:10:35,510 >> ЈАСОН HIRSCHORN: Стап тоа во на почетокот или на крајот. 242 00:10:35,510 --> 00:10:37,276 Кој треба да правиме? 243 00:10:37,276 --> 00:10:38,770 Боби? 244 00:10:38,770 --> 00:10:41,020 Зошто на крајот? 245 00:10:41,020 --> 00:10:43,250 >> ПУБЛИКАТА: Бидејќи на почетокот е веќе исполнет. 246 00:10:43,250 --> 00:10:43,575 >> ЈАСОН HIRSCHORN: OK. 247 00:10:43,575 --> 00:10:44,360 Почетокот е веќе исполнет. 248 00:10:44,360 --> 00:10:46,090 Кој сака да се аргументира против Боби. 249 00:10:46,090 --> 00:10:47,290 Маркус. 250 00:10:47,290 --> 00:10:48,910 >> ПУБЛИКАТА: Па веројатно сакате да ја држи тоа во почетокот, бидејќи 251 00:10:48,910 --> 00:10:50,140 инаку, ако го стави на На крајот ќе треба да 252 00:10:50,140 --> 00:10:51,835 напречни целата листа. 253 00:10:51,835 --> 00:10:52,990 >> ЈАСОН HIRSCHORN: Токму така. 254 00:10:52,990 --> 00:10:57,970 Значи, ако ние сме размислување за траење, на траење на вметнување на крајот 255 00:10:57,970 --> 00:11:00,110 ќе биде n, на големина. 256 00:11:00,110 --> 00:11:03,080 Што е голема О траење на вметнување на почетокот? 257 00:11:03,080 --> 00:11:04,170 Постојана време. 258 00:11:04,170 --> 00:11:07,075 Па ако не се грижат за одржување нешто подредени, многу подобро да се само 259 00:11:07,075 --> 00:11:08,420 вметнете во почетокот на оваа листа. 260 00:11:08,420 --> 00:11:10,320 И дека може да се направи во постојан време. 261 00:11:10,320 --> 00:11:13,900 262 00:11:13,900 --> 00:11:14,690 >> OK. 263 00:11:14,690 --> 00:11:18,870 Следната операција е да најдете, кои други - ние сме изразена ова како за пребарување. 264 00:11:18,870 --> 00:11:22,470 Но ние ќе да се погледне преку поврзана листа за некој предмет. 265 00:11:22,470 --> 00:11:26,000 Вие момци го виделе код за бара пред во предавање. 266 00:11:26,000 --> 00:11:29,490 Но, ние вид на само тоа го направи со внесување, или барем вметнување 267 00:11:29,490 --> 00:11:30,580 нешто подредени. 268 00:11:30,580 --> 00:11:36,350 Ќе се погледне преку, ќе јазол од јазол, додека не се најде бројот што сте 269 00:11:36,350 --> 00:11:37,780 барате. 270 00:11:37,780 --> 00:11:39,670 Што се случува ако го достигнете на крајот на листата? 271 00:11:39,670 --> 00:11:43,020 Кажам јас сум во потрага по девет и јас до крајот на листата. 272 00:11:43,020 --> 00:11:44,270 Што ќе правиме? 273 00:11:44,270 --> 00:11:47,147 274 00:11:47,147 --> 00:11:48,110 >> ПУБЛИКАТА: Враќање лажни? 275 00:11:48,110 --> 00:11:48,690 >> ЈАСОН HIRSCHORN: Враќање лажни. 276 00:11:48,690 --> 00:11:49,960 Ние не го најдете. 277 00:11:49,960 --> 00:11:52,010 Ако стигнат до крајот на листата и не си го најде бројот што сте 278 00:11:52,010 --> 00:11:54,170 во потрага по, тоа не е таму. 279 00:11:54,170 --> 00:11:55,420 Какви прашања во врска најдете? 280 00:11:55,420 --> 00:11:59,530 281 00:11:59,530 --> 00:12:04,615 Ако ова беше Подредена листа, што би да бидат различни за нашите пребарување? 282 00:12:04,615 --> 00:12:07,370 283 00:12:07,370 --> 00:12:08,103 Да. 284 00:12:08,103 --> 00:12:10,600 >> ПУБЛИКАТА: Тоа ќе го најде на првата вредност дека е поголема од онаа 285 00:12:10,600 --> 00:12:12,390 сте во потрага за и потоа се врати лажни. 286 00:12:12,390 --> 00:12:13,190 >> ЈАСОН HIRSCHORN: Токму така. 287 00:12:13,190 --> 00:12:17,310 Значи, ако тоа е Подредена листа, ако ние се да нешто што е поголема од она што 288 00:12:17,310 --> 00:12:20,180 ние сме во потрага по, ние не треба да се се насочи на крајот на листата. 289 00:12:20,180 --> 00:12:24,060 Ние во тој момент може да се врати лажни бидејќи ние нема да го најдете. 290 00:12:24,060 --> 00:12:27,340 Прашањето е сега, ние разговаравме за водење на поврзани листи подредени, 291 00:12:27,340 --> 00:12:28,180 држејќи ги несортиран. 292 00:12:28,180 --> 00:12:30,050 Тоа ќе биде нешто што сте веројатно ќе треба да се размислува за 293 00:12:30,050 --> 00:12:34,240 кога кодирање проблем постави пет ако изберете хеш табелата со посебни 294 00:12:34,240 --> 00:12:36,360 врзувањето на пристап, кој ние ќе разговараме за подоцна. 295 00:12:36,360 --> 00:12:41,400 >> Но тоа е достоен за тоа да се задржи на списокот сортирани и потоа да биде во можност да можеби имаат 296 00:12:41,400 --> 00:12:42,310 побрзо пребарувања? 297 00:12:42,310 --> 00:12:47,220 Или е подобро за побрзо вметнување нешто во постојан траење но потоа 298 00:12:47,220 --> 00:12:48,430 имаат подолг пребарување? 299 00:12:48,430 --> 00:12:52,250 Тоа е Губитокот право таму дека добие да се одлучи што е посоодветна 300 00:12:52,250 --> 00:12:53,590 за вашиот специфичен проблем. 301 00:12:53,590 --> 00:12:56,680 И таму не е нужно апсолутно точен одговор. 302 00:12:56,680 --> 00:12:59,520 Но тоа е секако одлука ќе добиете да се направи, и веројатно добро да се брани 303 00:12:59,520 --> 00:13:05,270 дека во, да речеме, коментар или две зошто сте одбрале еден над друг. 304 00:13:05,270 --> 00:13:06,490 >> Конечно, бришење. 305 00:13:06,490 --> 00:13:08,100 Видовме бришење. 306 00:13:08,100 --> 00:13:09,180 Тоа е слично на пребарувањето. 307 00:13:09,180 --> 00:13:11,020 Ние со нетрпение за елементот. 308 00:13:11,020 --> 00:13:12,390 Велат дека ние се обидуваме да го избришете шест. 309 00:13:12,390 --> 00:13:14,450 Па ние се најде шест овде. 310 00:13:14,450 --> 00:13:18,860 Она што ние треба да бидете сигурни дека ние не е дека она што е да се покажува кон 311 00:13:18,860 --> 00:13:21,220 шест - како што гледаме во чекор две надолу тука - 312 00:13:21,220 --> 00:13:26,500 Што и покажувајќи на шест потреби да прескокнете шест сега и да се промени во 313 00:13:26,500 --> 00:13:28,160 што шест е да се покажува. 314 00:13:28,160 --> 00:13:31,410 Ние не сакаме да некогаш сирак остатокот од нашата листа од заборавање да ја постави таа 315 00:13:31,410 --> 00:13:32,960 претходната покажувач. 316 00:13:32,960 --> 00:13:35,960 А потоа, понекогаш, во зависност на програмата, тие само ќе 317 00:13:35,960 --> 00:13:37,380 ја избришете оваа јазол во целост. 318 00:13:37,380 --> 00:13:40,135 Понекогаш ќе сакаат да се вратат вредноста што е во овој јазол. 319 00:13:40,135 --> 00:13:42,490 Па тоа е како бришење дела. 320 00:13:42,490 --> 00:13:44,610 Било какви прашања за бришење? 321 00:13:44,610 --> 00:13:51,280 322 00:13:51,280 --> 00:13:53,850 >> Публика: Значи, ако си оди за да го избришете тоа, ќе ти само ги користат бесплатно, бидејќи 323 00:13:53,850 --> 00:13:55,655 се претпоставува дека тоа беше malloced? 324 00:13:55,655 --> 00:13:57,976 >> ЈАСОН HIRSCHORN: Ако сакате да се ослободи нешто што е точно во право и ти 325 00:13:57,976 --> 00:13:58,540 malloced тоа. 326 00:13:58,540 --> 00:14:00,410 Велат дека ние сакаше да се врати оваа вредност. 327 00:14:00,410 --> 00:14:04,010 Ние би можеле да се вратат шест, а потоа бесплатно овој јазол и повик бесплатно на неа. 328 00:14:04,010 --> 00:14:06,180 Или ние веројатно би ја нарекол бесплатно првата а потоа се врати шест. 329 00:14:06,180 --> 00:14:11,210 330 00:14:11,210 --> 00:14:11,580 >> OK. 331 00:14:11,580 --> 00:14:14,010 Па ајде да се движат за да се практикуваат кодирање. 332 00:14:14,010 --> 00:14:16,090 Ние ќе се шифрираат три функции. 333 00:14:16,090 --> 00:14:18,260 Првиот се нарекува insert_node. 334 00:14:18,260 --> 00:14:22,170 Па имате кодот кој ви преку е-маил, и ако гледате оваа подоцна 335 00:14:22,170 --> 00:14:28,020 можете да пристапите на кодот во linked.c на веб-сајтот CS50. 336 00:14:28,020 --> 00:14:30,880 Но, во linked.c, има некои скелет код кој е веќе 337 00:14:30,880 --> 00:14:32,280 е напишано за вас. 338 00:14:32,280 --> 00:14:34,560 А потоа, тука е неколку функции што треба да се напише. 339 00:14:34,560 --> 00:14:36,380 >> Прво ние ќе се пишува insert_node. 340 00:14:36,380 --> 00:14:39,800 И она што го прави insert_node IS внесува цел број. 341 00:14:39,800 --> 00:14:42,440 И си даваат на број во поврзана листа. 342 00:14:42,440 --> 00:14:45,470 А особено, треба да се задржи листа подредена 343 00:14:45,470 --> 00:14:47,650 од најмалите до најголемите. 344 00:14:47,650 --> 00:14:51,360 Исто така, вие не сакате да го внесете кој било дупликати. 345 00:14:51,360 --> 00:14:54,600 Конечно, како што можете да видите insert_node враќа bool. 346 00:14:54,600 --> 00:14:57,140 Па си требал да ги споделите на корисникот знаат дали или не вметнете беше 347 00:14:57,140 --> 00:15:00,800 успешна со враќање точно или неточно. 348 00:15:00,800 --> 00:15:02,580 На крајот на оваа програма - 349 00:15:02,580 --> 00:15:05,750 и за оваа фаза не треба да се грижите за ослободување ништо. 350 00:15:05,750 --> 00:15:11,790 Така што сите што го правиш е преземање на цел број и вметнување во листата. 351 00:15:11,790 --> 00:15:13,890 >> Тоа е она што јас сум те прашам да се направи сега. 352 00:15:13,890 --> 00:15:17,620 Повторно, во linked.c, кои можете сите имаат, е скелетот код. 353 00:15:17,620 --> 00:15:20,980 И треба да го видите на дното примерокот функција декларација. 354 00:15:20,980 --> 00:15:27,390 Сепак, пред да замине во кодирање тоа во C, Силно ве охрабруваме да се оди 355 00:15:27,390 --> 00:15:29,330 низ чекорите ние сме биле практикување секоја недела. 356 00:15:29,330 --> 00:15:31,100 Ние веќе поминале низ слика од ова. 357 00:15:31,100 --> 00:15:33,380 Така ќе треба да имаат некои разбирање за тоа како тоа функционира. 358 00:15:33,380 --> 00:15:36,590 Но, јас би ве охрабруваме да се напише некои pseudocode пред нуркање внатре 359 00:15:36,590 --> 00:15:38,640 И ние ќе одам во текот pseudocode како група. 360 00:15:38,640 --> 00:15:41,470 А потоа, откако ќе ги напишав вашата pseudocode, и кога ќе сум напишал нашата 361 00:15:41,470 --> 00:15:45,850 pseudocode како група, можете да одат во кодирање тоа во C. 362 00:15:45,850 --> 00:15:49,980 >> Како на главите нагоре, на insert_node функција е веројатно најтешко од 363 00:15:49,980 --> 00:15:53,550 трите ние ќе се напише, бидејќи јас додадени некои дополнителни ограничувања за 364 00:15:53,550 --> 00:15:57,190 Вашиот програмирање, особено што вие нема да го вметнете било 365 00:15:57,190 --> 00:15:59,880 дупликати и дека листата треба да остане подредени. 366 00:15:59,880 --> 00:16:02,660 Па ова е не-тривијални програма дека треба да се код. 367 00:16:02,660 --> 00:16:06,470 И зошто не ги 06:55 минути само за да се работи на 368 00:16:06,470 --> 00:16:07,640 pseudocode и кодот. 369 00:16:07,640 --> 00:16:09,460 И тогаш ќе почнеме ќе како група. 370 00:16:09,460 --> 00:16:11,680 Повторно, ако имате било какви прашања само подигне својата рака и јас ќе дојдат околу. 371 00:16:11,680 --> 00:16:15,258 372 00:16:15,258 --> 00:16:16,508 . 373 00:16:16,508 --> 00:18:28,370 374 00:18:28,370 --> 00:18:30,120 >> Ние, исто така, обично се овие - 375 00:18:30,120 --> 00:18:32,070 или јас не се експлицитно велиш можат да работат со луѓе. 376 00:18:32,070 --> 00:18:36,500 Но, очигледно, Силно ве охрабруваме, ако имате прашања, да побара од 377 00:18:36,500 --> 00:18:39,840 сосед седи до тебе или дури и да работат со некој 378 00:18:39,840 --> 00:18:40,510 друго, ако сакате да. 379 00:18:40,510 --> 00:18:42,600 Ова не мора да се биде индивидуален молчи активност. 380 00:18:42,600 --> 00:20:11,770 381 00:20:11,770 --> 00:20:16,330 >> Да почнеме со пишување на некои pseudocode на табла. 382 00:20:16,330 --> 00:20:19,395 Кој може да ми даде на првата линија на pseudocode за оваа програма? 383 00:20:19,395 --> 00:20:22,240 384 00:20:22,240 --> 00:20:23,640 За оваа функција, наместо - insert_node. 385 00:20:23,640 --> 00:20:29,960 386 00:20:29,960 --> 00:20:31,830 Alden? 387 00:20:31,830 --> 00:20:36,560 >> Публика: Така првото нешто што го направив беше се создаде нов покажувач на јазол и јас 388 00:20:36,560 --> 00:20:41,320 иницијализира тоа укажувајќи на истиот нешто што листа е да се покажува. 389 00:20:41,320 --> 00:20:41,550 >> ЈАСОН HIRSCHORN: OK. 390 00:20:41,550 --> 00:20:45,190 Па ти си создавање на нов покажувач на листата, да не јазол. 391 00:20:45,190 --> 00:20:45,420 >> ПУБЛИКАТА: Право. 392 00:20:45,420 --> 00:20:46,150 Да. 393 00:20:46,150 --> 00:20:46,540 >> ЈАСОН HIRSCHORN: OK. 394 00:20:46,540 --> 00:20:48,221 И тогаш што сакаме да направам? 395 00:20:48,221 --> 00:20:49,163 Што е после тоа? 396 00:20:49,163 --> 00:20:50,105 Што е со јазол? 397 00:20:50,105 --> 00:20:51,050 Ние немаме еден јазол. 398 00:20:51,050 --> 00:20:52,300 Ние само имаат вредност. 399 00:20:52,300 --> 00:20:55,918 400 00:20:55,918 --> 00:20:58,890 Ако сакаме да вметнете јазол, она што ние треба да се направи пред да можеме дури и 401 00:20:58,890 --> 00:20:59,980 се размислува за вметнување тоа? 402 00:20:59,980 --> 00:21:00,820 >> Публика: Ох, извинете. 403 00:21:00,820 --> 00:21:02,160 ние треба да Примерок простор за јазол. 404 00:21:02,160 --> 00:21:02,455 >> ЈАСОН HIRSCHORN: Одлично. 405 00:21:02,455 --> 00:21:03,210 Ајде да се направи - 406 00:21:03,210 --> 00:21:04,628 OK. 407 00:21:04,628 --> 00:21:06,065 Не можат да постигнат толку високо. 408 00:21:06,065 --> 00:21:08,939 409 00:21:08,939 --> 00:21:09,897 OK. 410 00:21:09,897 --> 00:21:13,236 Ние ќе одат надолу, а потоа ние сме со користење две колони. 411 00:21:13,236 --> 00:21:13,732 Не можам да одам дека - 412 00:21:13,732 --> 00:21:14,982 OK. 413 00:21:14,982 --> 00:21:23,660 414 00:21:23,660 --> 00:21:25,130 Се создаде нов јазол. 415 00:21:25,130 --> 00:21:29,380 Можете да креирате друг покажувачот на листата или едноставно можете да го користите листа како што постои. 416 00:21:29,380 --> 00:21:30,720 Вие навистина не треба да го направите тоа. 417 00:21:30,720 --> 00:21:31,750 >> Па ние се создаде нов јазол. 418 00:21:31,750 --> 00:21:32,010 Одлично. 419 00:21:32,010 --> 00:21:32,840 Тоа е она што го правиме во прв план. 420 00:21:32,840 --> 00:21:34,870 Што е следно? 421 00:21:34,870 --> 00:21:35,080 >> ПУБЛИКАТА: Чекај. 422 00:21:35,080 --> 00:21:38,330 Ние треба да се создаде нов јазол сега или треба да чекаме да бидете сигурни дека 423 00:21:38,330 --> 00:21:42,260 нема дупликати на јазол на листата, пред да го создаде? 424 00:21:42,260 --> 00:21:43,100 >> ЈАСОН HIRSCHORN: Добро прашање. 425 00:21:43,100 --> 00:21:47,770 Ајде да се одржи за подоцна, бидејќи Поголемиот дел од времето ние ќе биде создавање на 426 00:21:47,770 --> 00:21:48,220 нов јазол. 427 00:21:48,220 --> 00:21:49,110 Па ние ќе продолжиме тоа овде. 428 00:21:49,110 --> 00:21:51,006 Но, тоа е добро прашање. 429 00:21:51,006 --> 00:21:53,250 Ако ние го создаде и ги наоѓаме дупликат, она што треба 430 00:21:53,250 --> 00:21:54,490 правиме пред да се врати? 431 00:21:54,490 --> 00:21:55,190 >> ПУБЛИКАТА: Слободен неа. 432 00:21:55,190 --> 00:21:55,470 >> ЈАСОН HIRSCHORN: Да. 433 00:21:55,470 --> 00:21:56,500 Веројатно тоа бесплатно. 434 00:21:56,500 --> 00:21:56,760 OK. 435 00:21:56,760 --> 00:21:59,850 Што ќе правиме откако ќе се создаде нов јазол? 436 00:21:59,850 --> 00:22:02,260 Annie? 437 00:22:02,260 --> 00:22:04,780 >> ПУБЛИКАТА: Ние се стави на број во јазол? 438 00:22:04,780 --> 00:22:05,140 >> ЈАСОН HIRSCHORN: Токму така. 439 00:22:05,140 --> 00:22:07,190 Ние се стави број - ние Примерок простор. 440 00:22:07,190 --> 00:22:08,160 Одам да го оставиме тоа сите што една линија. 441 00:22:08,160 --> 00:22:08,720 Но ти си во право. 442 00:22:08,720 --> 00:22:10,305 Ние Примерок простор, а потоа ќе стави број внатре 443 00:22:10,305 --> 00:22:12,585 Ние дури и може да го поставите покажувачот дел од неа на нула. 444 00:22:12,585 --> 00:22:13,720 Тоа е точно. 445 00:22:13,720 --> 00:22:17,400 А потоа, она што за после тоа? 446 00:22:17,400 --> 00:22:18,490 Ние привлече оваа слика на табла. 447 00:22:18,490 --> 00:22:21,190 Па што ќе правиме? 448 00:22:21,190 --> 00:22:22,680 >> Публика: Ние одиме преку листата. 449 00:22:22,680 --> 00:22:23,930 >> ЈАСОН HIRSCHORN: Оди преку листа. 450 00:22:23,930 --> 00:22:30,620 451 00:22:30,620 --> 00:22:31,100 OK. 452 00:22:31,100 --> 00:22:34,280 И што правиме ние се провери за на секој јазол. 453 00:22:34,280 --> 00:22:35,955 Курт, што ги проверуваме за на секој јазол? 454 00:22:35,955 --> 00:22:41,640 >> Публика: Види дали n вредноста на тој јазол е поголема од n вредност 455 00:22:41,640 --> 00:22:43,070 на нашите јазол. 456 00:22:43,070 --> 00:22:43,340 >> ЈАСОН HIRSCHORN: OK. 457 00:22:43,340 --> 00:22:44,280 Одам да се направи - 458 00:22:44,280 --> 00:22:45,855 Да, во ред. 459 00:22:45,855 --> 00:22:48,160 Па тоа е n - 460 00:22:48,160 --> 00:22:59,040 Одам да се каже ако вредноста е поголема од овој јазол, тогаш што правиме? 461 00:22:59,040 --> 00:23:07,290 >> ПУБЛИКАТА: Па, тогаш ние вметнете нешто право пред тоа. 462 00:23:07,290 --> 00:23:07,970 >> ЈАСОН HIRSCHORN: OK. 463 00:23:07,970 --> 00:23:09,410 Па ако е поголема од ова, тогаш ние сакаме да го внесете. 464 00:23:09,410 --> 00:23:14,010 Но, ние сакаме да го вметнете право пред затоа што ние, исто така, ќе треба да биде 465 00:23:14,010 --> 00:23:16,070 следење, тогаш, на она што беше порано. 466 00:23:16,070 --> 00:23:22,690 Па вметнете порано. 467 00:23:22,690 --> 00:23:25,120 Па веројатно пропуштил нешто порано на. 468 00:23:25,120 --> 00:23:27,770 Ние најверојатно треба да биде зачувана ги пратите на она што се случува. 469 00:23:27,770 --> 00:23:28,460 Но ние ќе се вратам таму. 470 00:23:28,460 --> 00:23:30,160 Па што вредност е помала од? 471 00:23:30,160 --> 00:23:38,030 472 00:23:38,030 --> 00:23:39,710 Курт, што ќе правиме ако вредност е помала од? 473 00:23:39,710 --> 00:23:43,000 >> ПУБЛИКАТА: Тогаш сте само продолжувам да одам освен ако тоа е последен. 474 00:23:43,000 --> 00:23:43,550 >> ЈАСОН HIRSCHORN: Ми се допаѓа тоа. 475 00:23:43,550 --> 00:23:44,800 Така одат кон следниот јазол. 476 00:23:44,800 --> 00:23:47,410 477 00:23:47,410 --> 00:23:48,930 Освен ако тоа е последната - 478 00:23:48,930 --> 00:23:51,100 ние сме веројатно проверка за кои во однос на состојбата. 479 00:23:51,100 --> 00:23:54,870 Но, да, следниот јазол. 480 00:23:54,870 --> 00:23:58,680 И тоа е добивање премногу ниска, па ние ќе се пресели овде. 481 00:23:58,680 --> 00:24:02,030 Но ако - 482 00:24:02,030 --> 00:24:03,280 може сите да се види ова? 483 00:24:03,280 --> 00:24:07,230 484 00:24:07,230 --> 00:24:11,610 Ако ние сме еднакви, што ќе правиме? 485 00:24:11,610 --> 00:24:15,740 Ако вредноста ние се обидуваме да го вметнете е еднаква на вредноста на овој јазол? 486 00:24:15,740 --> 00:24:16,320 Да? 487 00:24:16,320 --> 00:24:18,400 >> ПУБЛИКАТА: [нечујни]. 488 00:24:18,400 --> 00:24:18,850 >> ЈАСОН HIRSCHORN: Да. 489 00:24:18,850 --> 00:24:19,290 Имајќи го предвид ова - 490 00:24:19,290 --> 00:24:20,090 Маркус е во право. 491 00:24:20,090 --> 00:24:21,330 Ние би можеле да имаат можеби направено нешто различно. 492 00:24:21,330 --> 00:24:25,360 Но со оглед дека ние сме го создале, тука ние треба да се ослободи и потоа да се вратат. 493 00:24:25,360 --> 00:24:26,774 О момче. 494 00:24:26,774 --> 00:24:30,080 Е дека подобро? 495 00:24:30,080 --> 00:24:31,850 Како е тоа? 496 00:24:31,850 --> 00:24:33,100 OK. 497 00:24:33,100 --> 00:24:35,360 498 00:24:35,360 --> 00:24:37,640 Слободни и тогаш што правиме ние врати, [нечујни]? 499 00:24:37,640 --> 00:24:41,330 500 00:24:41,330 --> 00:24:44,110 OK. 501 00:24:44,110 --> 00:24:45,360 Дали сме недостасува нешто? 502 00:24:45,360 --> 00:24:53,500 503 00:24:53,500 --> 00:24:59,650 Па каде сме следење од пред јазол? 504 00:24:59,650 --> 00:25:02,370 >> Публика: Јас мислам дека ќе одам по се создаде нов јазол. 505 00:25:02,370 --> 00:25:02,600 >> ЈАСОН HIRSCHORN: OK. 506 00:25:02,600 --> 00:25:03,940 Значи на почетокот ние ќе веројатно - 507 00:25:03,940 --> 00:25:07,175 Да, ние може да се создаде покажувач кон нови јазол, како претходната јазол покажувач и 508 00:25:07,175 --> 00:25:09,600 тековната јазол покажувач. 509 00:25:09,600 --> 00:25:12,640 Па ајде вметнете тоа овде. 510 00:25:12,640 --> 00:25:15,610 511 00:25:15,610 --> 00:25:26,900 Креирај сегашните и претходните покажувачи на јазли. 512 00:25:26,900 --> 00:25:28,955 Но, кога ние прилагоди оние совети? 513 00:25:28,955 --> 00:25:30,205 Каде го правиме тоа во кодот? 514 00:25:30,205 --> 00:25:33,830 515 00:25:33,830 --> 00:25:34,160 Џеф? 516 00:25:34,160 --> 00:25:35,170 >> ПУБЛИКАТА: - вредност услови? 517 00:25:35,170 --> 00:25:36,420 >> ЈАСОН HIRSCHORN: Кои еден особено? 518 00:25:36,420 --> 00:25:39,862 519 00:25:39,862 --> 00:25:40,720 >> Публика: Јас сум само збунет. 520 00:25:40,720 --> 00:25:44,200 Ако вредноста е поголема од овој јазол, не тоа значи дека сакате да одите 521 00:25:44,200 --> 00:25:45,320 на следниот јазол? 522 00:25:45,320 --> 00:25:49,515 >> ЈАСОН Hirschhorn: Значи, ако нашата вредност е поголема од вредноста на овој јазол. 523 00:25:49,515 --> 00:25:52,130 >> Публика: Да, тогаш ќе сакате да го одат понатаму одредување на линија, нели? 524 00:25:52,130 --> 00:25:52,590 >> ЈАСОН Hirschhorn: Право. 525 00:25:52,590 --> 00:25:53,840 Па ние не се вметне тука. 526 00:25:53,840 --> 00:25:58,430 527 00:25:58,430 --> 00:26:03,240 Ако вредноста е помала од овој јазол, а потоа ние одиме на следниот јазол - или тогаш ние 528 00:26:03,240 --> 00:26:03,835 вметнете порано. 529 00:26:03,835 --> 00:26:05,966 >> ПУБЛИКАТА: Чекај, што е ова јазол и кое е вредност? 530 00:26:05,966 --> 00:26:08,510 531 00:26:08,510 --> 00:26:09,280 >> ЈАСОН Hirschhorn: Добро прашање. 532 00:26:09,280 --> 00:26:13,260 Вредност по оваа функција дефиниција е она што ние го даде. 533 00:26:13,260 --> 00:26:16,910 Значи вредност е бројот што се дадени. 534 00:26:16,910 --> 00:26:21,120 Значи, ако вредноста е помала од оваа јазол, ни треба време да го внесете. 535 00:26:21,120 --> 00:26:24,575 Ако вредноста е поголема од овој јазол, ние одиме на следниот јазол. 536 00:26:24,575 --> 00:26:26,790 И назад на оригиналниот прашање, сепак, каде што - 537 00:26:26,790 --> 00:26:29,060 >> Публика: Ако вредноста е поголема од овој јазол. 538 00:26:29,060 --> 00:26:30,310 >> ЈАСОН Hirschhorn: И така што правиме тука? 539 00:26:30,310 --> 00:26:36,790 540 00:26:36,790 --> 00:26:38,160 Слатка. 541 00:26:38,160 --> 00:26:38,860 Тоа е точно. 542 00:26:38,860 --> 00:26:41,370 Јас сум само ќе напише ажурирање совети. 543 00:26:41,370 --> 00:26:44,010 Но да, со сегашната ќе го ажурирате да 544 00:26:44,010 --> 00:26:46,080 укажуваат на следниот. 545 00:26:46,080 --> 00:26:47,330 Нешто друго ние сме недостасува? 546 00:26:47,330 --> 00:26:52,710 547 00:26:52,710 --> 00:26:54,940 Па ќе одам да напишеш овој кодот во gedit. 548 00:26:54,940 --> 00:26:58,375 И додека јас го направите ова, ќе може да има уште неколку минути за да работат на кодирање 549 00:26:58,375 --> 00:28:19,240 ова во C. 550 00:28:19,240 --> 00:28:20,940 >> Па морам внесување на pseudocode. 551 00:28:20,940 --> 00:28:22,940 А брз забелешка пред да можеме да започнете. 552 00:28:22,940 --> 00:28:25,560 Ние не може да биде во можност целосно да заврши оваа во сите 553 00:28:25,560 --> 00:28:27,300 три од овие функции. 554 00:28:27,300 --> 00:28:30,630 Таму е точно решенија за нив дека јас ќе мејл до вас момци 555 00:28:30,630 --> 00:28:33,730 по дел, и тоа ќе бидат испратени на CS50.net. 556 00:28:33,730 --> 00:28:35,640 Па јас не ве охрабруваме да ги се погледнеш во делови. 557 00:28:35,640 --> 00:28:40,550 Јас ве охрабруваме да се обидат овие на вашиот поседувате, а потоа го користите практиката 558 00:28:40,550 --> 00:28:41,760 проблеми да ги проверите вашите одговори. 559 00:28:41,760 --> 00:28:47,070 Овие сите се дизајнирани да се тесно се однесуваат и се придржуваат до она што 560 00:28:47,070 --> 00:28:48,400 што треба да направите за проблемот во собата. 561 00:28:48,400 --> 00:28:53,820 Па јас ве охрабруваме да ја применува оваа пракса на свој, а потоа користете го кодот за 562 00:28:53,820 --> 00:28:54,660 ги проверите вашите одговори. 563 00:28:54,660 --> 00:28:57,060 Затоа што сакаш да се движи кон постигнување маси во одреден момент во секција. 564 00:28:57,060 --> 00:28:58,150 Па ние не може да се добие преку сето тоа. 565 00:28:58,150 --> 00:28:59,960 Но, ние ќе го направиме колку што можеме сега. 566 00:28:59,960 --> 00:29:00,370 >> OK. 567 00:29:00,370 --> 00:29:01,960 Нека почне. 568 00:29:01,960 --> 00:29:04,770 Asam, како ние да се создаде нов јазол? 569 00:29:04,770 --> 00:29:06,810 >> Публика: Вие не struct *. 570 00:29:06,810 --> 00:29:09,640 >> ЈАСОН Hirschhorn: Значи ние имаат тоа тука. 571 00:29:09,640 --> 00:29:10,040 Ох, извинете. 572 00:29:10,040 --> 00:29:13,530 Сте биле велејќи дека struct *. 573 00:29:13,530 --> 00:29:17,260 >> Публика: И тогаш [? вид?] јазол или c јазол. 574 00:29:17,260 --> 00:29:17,780 >> ЈАСОН Hirschhorn: OK. 575 00:29:17,780 --> 00:29:19,740 Одам да го наречеме new_node па ние може да остане доследен. 576 00:29:19,740 --> 00:29:22,646 577 00:29:22,646 --> 00:29:33,180 >> Публика: А ти сакаш да ја постави таа да се упатат, првиот јазол. 578 00:29:33,180 --> 00:29:33,580 >> ЈАСОН Hirschhorn: OK. 579 00:29:33,580 --> 00:29:37,290 Па сега ова укажува на - па ова нема креирано нов јазол уште. 580 00:29:37,290 --> 00:29:41,380 Ова е само укажува на прв јазол во листата. 581 00:29:41,380 --> 00:29:42,630 Како да креирам нов јазол? 582 00:29:42,630 --> 00:29:45,490 583 00:29:45,490 --> 00:29:48,070 Ако ми треба простор за да се создаде нов јазол. 584 00:29:48,070 --> 00:29:49,230 Примерок. 585 00:29:49,230 --> 00:29:51,710 И колку е голема? 586 00:29:51,710 --> 00:30:00,390 >> Публика: Големината на struct. 587 00:30:00,390 --> 00:30:01,150 >> ЈАСОН Hirschhorn: На големината на struct. 588 00:30:01,150 --> 00:30:02,400 И она што е на struct наречен? 589 00:30:02,400 --> 00:30:09,670 590 00:30:09,670 --> 00:30:09,840 >> Публика: Јазол? 591 00:30:09,840 --> 00:30:11,640 >> ЈАСОН Hirschhorn: Јазол. 592 00:30:11,640 --> 00:30:17,640 Па Примерок (sizeof (јазол)); ни дава простор. 593 00:30:17,640 --> 00:30:19,740 И е на оваа линија - 594 00:30:19,740 --> 00:30:21,740 едно е неправилна на оваа линија. 595 00:30:21,740 --> 00:30:24,430 Е new_node покажувач кон struct? 596 00:30:24,430 --> 00:30:25,650 Тоа е генеричко име. 597 00:30:25,650 --> 00:30:26,520 Што е тоа - 598 00:30:26,520 --> 00:30:27,450 јазол, точно. 599 00:30:27,450 --> 00:30:29,340 Тоа е еден јазол *. 600 00:30:29,340 --> 00:30:33,010 И што ќе правиме веднаш по ние Примерок нешто, Асан? 601 00:30:33,010 --> 00:30:34,476 Што е првото нешто што го правиме? 602 00:30:34,476 --> 00:30:38,850 603 00:30:38,850 --> 00:30:40,320 Што ако тоа не функционира? 604 00:30:40,320 --> 00:30:42,430 >> ПУБЛИКАТА: О, проверете дали тоа укажува на јазол? 605 00:30:42,430 --> 00:30:43,310 >> ЈАСОН Hirschhorn: Токму така. 606 00:30:43,310 --> 00:30:46,750 Па ако new_node еднаква на еднаквите нула, што ќе правиме? 607 00:30:46,750 --> 00:30:51,650 608 00:30:51,650 --> 00:30:54,820 Ова се враќа bool, оваа функција. 609 00:30:54,820 --> 00:30:57,760 Токму така. 610 00:30:57,760 --> 00:30:58,450 Изгледа добро. 611 00:30:58,450 --> 00:30:59,680 Ништо за да додадете таму? 612 00:30:59,680 --> 00:31:00,670 Ние ќе додадете работи на крајот. 613 00:31:00,670 --> 00:31:03,160 Но дека досега изгледа добро. 614 00:31:03,160 --> 00:31:06,170 Креирај сегашните и претходните совети. 615 00:31:06,170 --> 00:31:08,650 Мајкл, како можам да го направите ова? 616 00:31:08,650 --> 00:31:12,810 >> Публика: Вие ќе треба да се направи јазол *. 617 00:31:12,810 --> 00:31:21,800 618 00:31:21,800 --> 00:31:25,502 Ќе треба да се направи не една за new_node но за 619 00:31:25,502 --> 00:31:26,905 јазли веќе го имаме. 620 00:31:26,905 --> 00:31:27,230 >> ЈАСОН Hirschhorn: OK. 621 00:31:27,230 --> 00:31:29,255 Значи тековната јазол ние сме на. 622 00:31:29,255 --> 00:31:30,505 Ќе му се јавам дека ВАЛ. 623 00:31:30,505 --> 00:31:39,650 624 00:31:39,650 --> 00:31:39,770 Во ред е. 625 00:31:39,770 --> 00:31:41,620 Ние одлучивме сакаме да го задржиме две, бидејќи треба да знаеме 626 00:31:41,620 --> 00:31:42,870 она што е пред него. 627 00:31:42,870 --> 00:31:45,770 628 00:31:45,770 --> 00:31:47,020 Што прават тие да се иницијализира на? 629 00:31:47,020 --> 00:31:49,874 630 00:31:49,874 --> 00:31:54,180 >> Публика: Нивната вредност во нашата листа. 631 00:31:54,180 --> 00:31:58,090 >> ЈАСОН Hirschhorn: Значи она што е Првото нешто на нашиот список? 632 00:31:58,090 --> 00:32:04,050 Или како да знаеме каде почетокот на нашата листа е? 633 00:32:04,050 --> 00:32:08,015 >> Публика: Зарем не е донесен во функција? 634 00:32:08,015 --> 00:32:08,466 >> ЈАСОН Hirschhorn: Право. 635 00:32:08,466 --> 00:32:09,716 Тоа беше донесен во право тука. 636 00:32:09,716 --> 00:32:15,910 637 00:32:15,910 --> 00:32:18,980 Па ако е донесен во функција, почетокот на листата, што треба ние 638 00:32:18,980 --> 00:32:21,270 постави сегашниот еднаква на? 639 00:32:21,270 --> 00:32:22,110 >> ПУБЛИКАТА: Листа. 640 00:32:22,110 --> 00:32:22,900 >> ЈАСОН Hirschhorn: Листа. 641 00:32:22,900 --> 00:32:24,090 Тоа е точно. 642 00:32:24,090 --> 00:32:26,290 Сега, тоа е адресата на почетокот на нашата листа. 643 00:32:26,290 --> 00:32:28,450 А што е со претходната? 644 00:32:28,450 --> 00:32:31,920 >> ПУБЛИКАТА: Листа минус еден? 645 00:32:31,920 --> 00:32:32,690 >> ЈАСОН Hirschhorn: Има ништо пред него. 646 00:32:32,690 --> 00:32:34,580 Така што можеме да направиме за да се означи ништо? 647 00:32:34,580 --> 00:32:35,050 >> Публика: Нулев. 648 00:32:35,050 --> 00:32:35,450 >> ЈАСОН Hirschhorn: Да. 649 00:32:35,450 --> 00:32:37,950 Тоа звучи како добра идеја. 650 00:32:37,950 --> 00:32:38,360 Совршена. 651 00:32:38,360 --> 00:32:39,630 Ви благодарам. 652 00:32:39,630 --> 00:32:42,850 Поминат низ листата. 653 00:32:42,850 --> 00:32:45,490 Константин, колку долго ќе се дојде да се оди низ листата? 654 00:32:45,490 --> 00:32:49,010 >> Публика: додека не ги добиеме нула. 655 00:32:49,010 --> 00:32:49,390 >> ЈАСОН Hirschhorn: OK. 656 00:32:49,390 --> 00:32:50,430 Значи, ако, додека, за телефонска линија. 657 00:32:50,430 --> 00:32:52,200 Што правиме? 658 00:32:52,200 --> 00:32:53,320 >> ПУБЛИКАТА: Можеби за телефонска линија? 659 00:32:53,320 --> 00:32:53,910 >> ЈАСОН Hirschhorn: Ајде да направиме за телефонска линија. 660 00:32:53,910 --> 00:32:55,870 OK. 661 00:32:55,870 --> 00:33:02,465 >> ПУБЛИКАТА: И ние се каже за - 662 00:33:02,465 --> 00:33:09,764 663 00:33:09,764 --> 00:33:13,390 додека тековната покажувачот не е еднаква на нула. 664 00:33:13,390 --> 00:33:19,160 >> ЈАСОН Hirschhorn: Значи, ако знаеме состојба, како можеме да се напише јамка 665 00:33:19,160 --> 00:33:21,740 базирана таа состојба. 666 00:33:21,740 --> 00:33:24,380 Каков вид на јамка што ние треба да ги користите? 667 00:33:24,380 --> 00:33:25,260 >> ПУБЛИКАТА: Додека. 668 00:33:25,260 --> 00:33:25,590 >> ЈАСОН Hirschhorn: Да. 669 00:33:25,590 --> 00:33:27,130 Што го прави повеќе смисла врз основа надвор од она што го рече. 670 00:33:27,130 --> 00:33:29,430 Ако ние само сакаме да одиме во што тоа би само знам дека нешто, тоа ќе го направи 671 00:33:29,430 --> 00:33:31,680 смисла да се направи додека јамка. 672 00:33:31,680 --> 00:33:39,880 Додека моменталниот не е еднакво на нула, ако вредноста е помала од овој јазол. 673 00:33:39,880 --> 00:33:41,650 Akshar, дај ми оваа линија. 674 00:33:41,650 --> 00:33:48,810 675 00:33:48,810 --> 00:33:56,955 >> Публика: Ако тековната> n n помалку од вредноста. 676 00:33:56,955 --> 00:34:00,170 677 00:34:00,170 --> 00:34:03,260 Или да го поништи тоа. 678 00:34:03,260 --> 00:34:06,140 Прекинувач кој заграда. 679 00:34:06,140 --> 00:34:06,620 >> ЈАСОН Hirschhorn: Извини. 680 00:34:06,620 --> 00:34:08,760 >> ПУБЛИКАТА: Промена на заграда. 681 00:34:08,760 --> 00:34:10,914 >> ЈАСОН Hirschhorn: Значи, ако тоа е поголема од вредноста. 682 00:34:10,914 --> 00:34:18,719 683 00:34:18,719 --> 00:34:22,120 Затоа што тоа е збунувачки со коментира погоре, јас ќе одам да направите тоа. 684 00:34:22,120 --> 00:34:22,480 Но да. 685 00:34:22,480 --> 00:34:25,125 Ако нашите вредност е помала од оваа јазол, што ќе правиме? 686 00:34:25,125 --> 00:34:25,540 Ох. 687 00:34:25,540 --> 00:34:26,710 Го имам токму тука. 688 00:34:26,710 --> 00:34:27,960 Вметнете порано. 689 00:34:27,960 --> 00:34:32,080 690 00:34:32,080 --> 00:34:32,370 OK. 691 00:34:32,370 --> 00:34:33,933 Како го правиме тоа? 692 00:34:33,933 --> 00:34:34,900 >> Публика: Дали е сè уште ме? 693 00:34:34,900 --> 00:34:36,150 >> ЈАСОН Hirschhorn: Да. 694 00:34:36,150 --> 00:34:38,520 695 00:34:38,520 --> 00:34:39,770 >> ПУБЛИКАТА: Вие - 696 00:34:39,770 --> 00:34:42,909 697 00:34:42,909 --> 00:34:44,159 new_node-> Next. 698 00:34:44,159 --> 00:34:46,770 699 00:34:46,770 --> 00:34:50,163 >> ЈАСОН Hirschhorn: Значи она што е дека ќе се изедначи? 700 00:34:50,163 --> 00:34:52,070 >> Публика: Тоа се случува да еднакви струја. 701 00:34:52,070 --> 00:34:53,889 >> ЈАСОН Hirschhorn: Токму така. 702 00:34:53,889 --> 00:34:55,730 И така од друга - 703 00:34:55,730 --> 00:34:56,730 Што уште ни треба да се ажурираат? 704 00:34:56,730 --> 00:34:59,982 >> Публика: Проверете дали минатото еднаква на нула. 705 00:34:59,982 --> 00:35:01,870 >> ЈАСОН Hirschhorn: Ако prev - 706 00:35:01,870 --> 00:35:03,730 па ако prev еднаква на нула. 707 00:35:03,730 --> 00:35:05,990 >> Публика: Тоа значи дека ќе да стане главата. 708 00:35:05,990 --> 00:35:06,780 >> ЈАСОН Hirschhorn: тоа значи тоа стана главата. 709 00:35:06,780 --> 00:35:07,620 Па тогаш што правиме? 710 00:35:07,620 --> 00:35:12,510 >> ПУБЛИКАТА: Ние го правиме главата еднаква new_node. 711 00:35:12,510 --> 00:35:16,690 >> ЈАСОН Hirschhorn: Раководител еднакво new_node. 712 00:35:16,690 --> 00:35:20,540 И зошто се упатат тука, не листа? 713 00:35:20,540 --> 00:35:24,940 >> ПУБЛИКАТА: Бидејќи главата е глобален променлива, што е почетна место. 714 00:35:24,940 --> 00:35:26,190 >> ЈАСОН Hirschhorn: Слатка. 715 00:35:26,190 --> 00:35:33,750 716 00:35:33,750 --> 00:35:34,170 OK. 717 00:35:34,170 --> 00:35:36,150 И - 718 00:35:36,150 --> 00:35:53,796 >> ПУБЛИКАТА: Тогаш вие друго prev-> Следниот еднаква new_node. 719 00:35:53,796 --> 00:35:55,080 А потоа ќе се врати вистина. 720 00:35:55,080 --> 00:35:59,560 721 00:35:59,560 --> 00:36:02,700 >> ЈАСОН Hirschhorn: Каде да ние постави new_node крајот? 722 00:36:02,700 --> 00:36:04,850 >> Публика: Јас би - 723 00:36:04,850 --> 00:36:06,180 Јас во собата што на почетокот. 724 00:36:06,180 --> 00:36:07,430 >> ЈАСОН Hirschhorn: Па што линија? 725 00:36:07,430 --> 00:36:10,000 726 00:36:10,000 --> 00:36:12,598 >> ПУБЛИКАТА: По ако изјава проверка, ако тоа е познато. 727 00:36:12,598 --> 00:36:13,057 >> ЈАСОН Hirschhorn: Право овде? 728 00:36:13,057 --> 00:36:18,335 >> Публика: Јас би го сторила new_node-> n еднакво вредност. 729 00:36:18,335 --> 00:36:19,585 >> ЈАСОН Hirschhorn: Звучи добро. 730 00:36:19,585 --> 00:36:21,740 731 00:36:21,740 --> 00:36:25,090 Веројатно тоа го прави смисла - ние не треба да знаеш што листа ние сме на 732 00:36:25,090 --> 00:36:26,280 бидејќи ние сме само се занимаваат со една листа. 733 00:36:26,280 --> 00:36:29,560 Па подобро функцијата декларација за ова е само за да се ослободи од овој 734 00:36:29,560 --> 00:36:34,360 целосно и само внесете вредност во главата. 735 00:36:34,360 --> 00:36:35,930 Ние дури и не треба да знаете она листа ние сме внатре 736 00:36:35,930 --> 00:36:39,140 Но јас ќе го задржи за сега и тогаш тоа се промени по ажурирање 737 00:36:39,140 --> 00:36:42,590 слајдови и код. 738 00:36:42,590 --> 00:36:44,980 Така што изгледа добро за сега. 739 00:36:44,980 --> 00:36:46,560 Ако вредноста - кој може да го направи оваа линија? 740 00:36:46,560 --> 00:36:47,810 Ако - 741 00:36:47,810 --> 00:36:52,240 742 00:36:52,240 --> 00:36:53,840 што ќе правиме тука, Ноа. 743 00:36:53,840 --> 00:36:57,890 744 00:36:57,890 --> 00:37:07,100 >> Публика: Ако вредноста е поголема од Мом-> n - 745 00:37:07,100 --> 00:37:16,830 746 00:37:16,830 --> 00:37:18,240 >> ЈАСОН Hirschhorn: Како да ние одиме на следниот јазол? 747 00:37:18,240 --> 00:37:27,760 748 00:37:27,760 --> 00:37:30,530 >> Публика: Мом-> n е еднаква на new_node. 749 00:37:30,530 --> 00:37:37,630 750 00:37:37,630 --> 00:37:39,195 >> ЈАСОН Hirschhorn: Значи n е она што дел од struct? 751 00:37:39,195 --> 00:37:43,065 752 00:37:43,065 --> 00:37:46,020 Цел број. 753 00:37:46,020 --> 00:37:50,420 И new_node е покажувач кон еден јазол. 754 00:37:50,420 --> 00:37:51,880 Па што дел од Мом ние треба да се ажурираат? 755 00:37:51,880 --> 00:38:03,900 756 00:38:03,900 --> 00:38:05,400 Ако не е n, тогаш што е другиот дел? 757 00:38:05,400 --> 00:38:21,680 758 00:38:21,680 --> 00:38:22,810 Ное, она што е на другата страна. 759 00:38:22,810 --> 00:38:23,570 >> ПУБЛИКАТА: О, следната. 760 00:38:23,570 --> 00:38:25,645 >> ЈАСОН Hirschhorn: Напред, точно. 761 00:38:25,645 --> 00:38:26,410 Токму така. 762 00:38:26,410 --> 00:38:28,770 Следна е вистинскиот. 763 00:38:28,770 --> 00:38:31,540 И што друго ни треба да се ажурира, Ноа? 764 00:38:31,540 --> 00:38:32,840 >> Публика: покажувачи. 765 00:38:32,840 --> 00:38:34,840 >> ЈАСОН Hirschhorn: Значи ние нема струја. 766 00:38:34,840 --> 00:38:36,090 >> Публика: Претходна-> Next. 767 00:38:36,090 --> 00:38:48,160 768 00:38:48,160 --> 00:38:49,410 >> ЈАСОН Hirschhorn: Да. 769 00:38:49,410 --> 00:38:57,465 770 00:38:57,465 --> 00:38:58,370 Во ред, ќе се откажеш. 771 00:38:58,370 --> 00:39:02,200 Кој може да ни помогне тука? 772 00:39:02,200 --> 00:39:03,385 МАНУ, она што ние треба да направам? 773 00:39:03,385 --> 00:39:05,615 >> ПУБЛИКАТА: Имаш да го поставите тоа еднаков на Мом-> Next. 774 00:39:05,615 --> 00:39:09,110 775 00:39:09,110 --> 00:39:11,630 Но го направи тоа пред претходната линија. 776 00:39:11,630 --> 00:39:12,880 >> ЈАСОН Hirschhorn: OK. 777 00:39:12,880 --> 00:39:16,590 778 00:39:16,590 --> 00:39:18,260 Нешто друго? 779 00:39:18,260 --> 00:39:19,170 Akshar. 780 00:39:19,170 --> 00:39:22,680 >> Публика: Јас не мислам дека ти си цел да се променат Мом-> Next. 781 00:39:22,680 --> 00:39:29,270 Мислам дека се наменети да се направи Мом еднаквите Мом-> следната да оди на следниот јазол. 782 00:39:29,270 --> 00:39:30,500 >> ЈАСОН Hirschhorn: Навистина ми е жал, каде? 783 00:39:30,500 --> 00:39:32,680 На она што линија? 784 00:39:32,680 --> 00:39:33,420 Оваа линија? 785 00:39:33,420 --> 00:39:33,750 >> Публика: Да. 786 00:39:33,750 --> 00:39:35,745 Направи Мом еднаква на Мом-> Next. 787 00:39:35,745 --> 00:39:39,690 788 00:39:39,690 --> 00:39:43,360 >> ЈАСОН Hirschhorn: Значи тоа е точно бидејќи струјата е 789 00:39:43,360 --> 00:39:45,220 Покажувач на јазол. 790 00:39:45,220 --> 00:39:48,550 И ние сакаме тоа да укаже на следните јазол на она што се добива во моментов 791 00:39:48,550 --> 00:39:49,930 посочи. 792 00:39:49,930 --> 00:39:54,410 Мом себе има следната. 793 00:39:54,410 --> 00:39:58,620 Но ако ние требаше да се ажурира curr.next, ние ќе биде ажурирање на вистинските белешка 794 00:39:58,620 --> 00:40:01,430 сама по себе не, каде што овој покажувачот беше посочувајќи. 795 00:40:01,430 --> 00:40:02,680 Она што за оваа линија, иако. 796 00:40:02,680 --> 00:40:05,160 797 00:40:05,160 --> 00:40:07,330 Ави? 798 00:40:07,330 --> 00:40:09,590 >> Публика: Претходна-> Следниот еднаква ВАЛ. 799 00:40:09,590 --> 00:40:12,500 800 00:40:12,500 --> 00:40:19,440 >> ЈАСОН Hirschhorn: Значи повторно, ако prev е покажувач на еден јазол, prev-> Следниот е 801 00:40:19,440 --> 00:40:23,020 Крај на покажувачот во јазол. 802 00:40:23,020 --> 00:40:27,190 Така што ова ќе биде ажурирање на покажувачот во јазол да ВАЛ. 803 00:40:27,190 --> 00:40:28,570 Ние не сакаме да се ажурира покажувач во јазол. 804 00:40:28,570 --> 00:40:30,570 Ние сакаме да се ажурира претходниот. 805 00:40:30,570 --> 00:40:31,850 Па, како го правиме тоа? 806 00:40:31,850 --> 00:40:34,250 >> Публика: Тоа само ќе биде prev. 807 00:40:34,250 --> 00:40:34,565 >> ЈАСОН Hirschhorn: Право. 808 00:40:34,565 --> 00:40:35,560 Prev е покажувач кон еден јазол. 809 00:40:35,560 --> 00:40:38,750 Сега ние сме го менува на нови покажувач на еден јазол. 810 00:40:38,750 --> 00:40:40,830 Добро Дозволете ни да се движат надолу. 811 00:40:40,830 --> 00:40:41,940 Конечно, последниот услов. 812 00:40:41,940 --> 00:40:44,896 Џеф, што ќе правиме тука? 813 00:40:44,896 --> 00:40:47,515 >> Публика: Ако вредноста е еднаква на Мом-> n. 814 00:40:47,515 --> 00:40:51,030 815 00:40:51,030 --> 00:40:51,300 >> ЈАСОН Hirschhorn: Извини. 816 00:40:51,300 --> 00:40:52,372 Ох моја добрина. 817 00:40:52,372 --> 00:40:54,330 Што? 818 00:40:54,330 --> 00:40:55,580 Вредност == Мом-> n. 819 00:40:55,580 --> 00:41:01,050 820 00:41:01,050 --> 00:41:02,300 Што ќе правиме? 821 00:41:02,300 --> 00:41:04,760 822 00:41:04,760 --> 00:41:10,950 >> Публика: Ќе ги ослободи нашите new_node, и тогаш ќе се вратат лажни. 823 00:41:10,950 --> 00:41:21,410 824 00:41:21,410 --> 00:41:23,460 >> ЈАСОН Hirschhorn: Тоа е она што имаме напишано досега. 825 00:41:23,460 --> 00:41:25,710 Дали некој има било за да додадете, пред да се направи? 826 00:41:25,710 --> 00:41:35,460 827 00:41:35,460 --> 00:41:35,710 OK. 828 00:41:35,710 --> 00:41:36,960 Ајде да ја обидат. 829 00:41:36,960 --> 00:41:44,180 830 00:41:44,180 --> 00:41:46,110 Контрола може да стигне до крајот на не-празнина функција. 831 00:41:46,110 --> 00:41:48,310 AVI, она што се случува? 832 00:41:48,310 --> 00:41:51,380 >> Публика: Дали сте би требало да се стави враќање вистина надвор од додека јамка? 833 00:41:51,380 --> 00:41:53,900 834 00:41:53,900 --> 00:41:54,400 >> ЈАСОН Hirschhorn: Не знам. 835 00:41:54,400 --> 00:41:54,780 Дали ме сакате во моментов? 836 00:41:54,780 --> 00:41:55,520 >> ПУБЛИКАТА Ништо. 837 00:41:55,520 --> 00:41:56,350 Бр. 838 00:41:56,350 --> 00:41:57,180 >> ЈАСОН Hirschhorn: Akshar? 839 00:41:57,180 --> 00:41:59,460 >> ПУБЛИКАТА: Мислам дека со цел да се стави враќање лажни на крајот 840 00:41:59,460 --> 00:42:02,230 на додека јамка. 841 00:42:02,230 --> 00:42:03,270 >> ЈАСОН Hirschhorn: Значи, каде Дали сакате да одите? 842 00:42:03,270 --> 00:42:05,270 >> Публика: Како надвор додека јамка. 843 00:42:05,270 --> 00:42:08,800 Па ако излезете, додека јамка тоа значи дека кога сте достигнавме крајот и 844 00:42:08,800 --> 00:42:09,980 ништо не се случило. 845 00:42:09,980 --> 00:42:10,410 >> ЈАСОН Hirschhorn: OK. 846 00:42:10,410 --> 00:42:12,340 Па што ќе правиме тука? 847 00:42:12,340 --> 00:42:13,702 >> ПУБЛИКАТА: Вие враќање false така и таму. 848 00:42:13,702 --> 00:42:15,040 >> ЈАСОН Hirschhorn: О, ние го прават тоа и во двете места? 849 00:42:15,040 --> 00:42:15,650 >> Публика: Да. 850 00:42:15,650 --> 00:42:16,900 >> ЈАСОН Hirschhorn: OK. 851 00:42:16,900 --> 00:42:24,840 852 00:42:24,840 --> 00:42:26,160 Ние треба да одиме? 853 00:42:26,160 --> 00:42:26,980 Ох моја добрина. 854 00:42:26,980 --> 00:42:27,290 Жал ми е. 855 00:42:27,290 --> 00:42:28,480 Јас се извинувам за екранот. 856 00:42:28,480 --> 00:42:30,530 Тоа е вид на freaking надвор од нас. 857 00:42:30,530 --> 00:42:31,520 Така избирате опција. 858 00:42:31,520 --> 00:42:35,260 Нула, за на код, поднесе оставка на програмата. 859 00:42:35,260 --> 00:42:36,700 Еден внесува нешто. 860 00:42:36,700 --> 00:42:37,990 Ајде да вметнете три. 861 00:42:37,990 --> 00:42:42,900 862 00:42:42,900 --> 00:42:45,380 Вметнете не беше успешна. 863 00:42:45,380 --> 00:42:46,500 Одам да испечатите. 864 00:42:46,500 --> 00:42:48,050 Јас немам ништо. 865 00:42:48,050 --> 00:42:48,450 OK. 866 00:42:48,450 --> 00:42:50,250 Можеби тоа беше само среќа. 867 00:42:50,250 --> 00:42:52,810 Вметнете еден. 868 00:42:52,810 --> 00:42:55,770 Не е успешна. 869 00:42:55,770 --> 00:42:57,470 OK. 870 00:42:57,470 --> 00:43:02,400 Ајде да ја извршите преку GDB навистина брзо да проверат што се случува. 871 00:43:02,400 --> 00:43:06,055 >> Се сеќавам gdb. / Името на вашиот програма ни се впушта во gdb. 872 00:43:06,055 --> 00:43:07,610 Е дека многу да се справи? 873 00:43:07,610 --> 00:43:08,560 Светлечки? 874 00:43:08,560 --> 00:43:10,400 Веројатно. 875 00:43:10,400 --> 00:43:12,760 Затвори ги очите и да преземат некои длабоки вдишувања, ако ви се уморни 876 00:43:12,760 --> 00:43:13,580 на гледање на него. 877 00:43:13,580 --> 00:43:14,200 Јас сум во gdb. 878 00:43:14,200 --> 00:43:15,830 Што е првото нешто што го правам во GDB? 879 00:43:15,830 --> 00:43:17,050 Ние мора да дознаам она што се случува овде. 880 00:43:17,050 --> 00:43:17,310 Ајде да видиме. 881 00:43:17,310 --> 00:43:21,650 Имаме шест минути да фигура од она што се случува. 882 00:43:21,650 --> 00:43:22,900 Се скрши главната. 883 00:43:22,900 --> 00:43:25,950 884 00:43:25,950 --> 00:43:28,130 И тогаш што можам да направам? 885 00:43:28,130 --> 00:43:29,180 Carlos? 886 00:43:29,180 --> 00:43:31,060 Работи. 887 00:43:31,060 --> 00:43:32,250 OK. 888 00:43:32,250 --> 00:43:34,160 Ајде да изберете опција. 889 00:43:34,160 --> 00:43:36,330 И она што не N направам? 890 00:43:36,330 --> 00:43:38,480 Следната. 891 00:43:38,480 --> 00:43:38,950 Да. 892 00:43:38,950 --> 00:43:39,740 >> Публика: Не да се спомене - 893 00:43:39,740 --> 00:43:45,230 не ви каже дека на главата, што беше иницијализиран на нула на почетокот. 894 00:43:45,230 --> 00:43:47,140 Но јас мислев, дека ти рече дека е во ред. 895 00:43:47,140 --> 00:43:50,040 896 00:43:50,040 --> 00:43:52,640 >> ЈАСОН Hirschhorn: Ајде да одиме - ајде да погледнеме во GDB, а потоа ние ќе се вратиме. 897 00:43:52,640 --> 00:43:54,910 Но тоа звучи како имате некои идеи за тоа што се случува. 898 00:43:54,910 --> 00:43:58,340 Затоа сакаме да вметнете нешто. 899 00:43:58,340 --> 00:43:59,390 OK. 900 00:43:59,390 --> 00:44:00,150 Ние сме го внесете. 901 00:44:00,150 --> 00:44:00,770 Ве молиме внесете Инт. 902 00:44:00,770 --> 00:44:01,990 Ние ќе се вметне три. 903 00:44:01,990 --> 00:44:03,000 И тогаш јас сум на оваа линија. 904 00:44:03,000 --> 00:44:07,030 Како можам да се обратите на проектот дебагирање вметнете позната функција? 905 00:44:07,030 --> 00:44:08,280 Ох моја добрина. 906 00:44:08,280 --> 00:44:10,990 907 00:44:10,990 --> 00:44:12,240 Тоа е многу. 908 00:44:12,240 --> 00:44:14,372 909 00:44:14,372 --> 00:44:16,445 Е дека freaking надвор многу? 910 00:44:16,445 --> 00:44:19,696 911 00:44:19,696 --> 00:44:21,680 >> ПУБЛИКАТА: О, тоа починал. 912 00:44:21,680 --> 00:44:22,930 >> ЈАСОН Hirschhorn: Јас само извадив. 913 00:44:22,930 --> 00:44:27,364 914 00:44:27,364 --> 00:44:28,310 OK. 915 00:44:28,310 --> 00:44:29,560 >> Публика: Можеби тоа е другиот крај на жица. 916 00:44:29,560 --> 00:44:37,000 917 00:44:37,000 --> 00:44:39,470 >> ЈАСОН Hirschhorn: Леле. 918 00:44:39,470 --> 00:44:42,330 Значи крајна линија - 919 00:44:42,330 --> 00:44:43,470 Што велите вие? 920 00:44:43,470 --> 00:44:46,040 >> Публика: Јас реков иронијата на технички тешкотии во оваа класа. 921 00:44:46,040 --> 00:44:46,410 >> ЈАСОН Hirschhorn: Знам. 922 00:44:46,410 --> 00:44:48,660 Ако само имав контрола над тој дел. 923 00:44:48,660 --> 00:44:49,910 [Нечујни] 924 00:44:49,910 --> 00:44:54,430 925 00:44:54,430 --> 00:44:55,400 Тоа звучи одлично. 926 00:44:55,400 --> 00:44:58,680 Зошто не сте момци почнат да размислуваат за што би можеле да имаат направено погрешно, 927 00:44:58,680 --> 00:45:01,140 и ние ќе се врати во 90 секунди. 928 00:45:01,140 --> 00:46:18,160 929 00:46:18,160 --> 00:46:23,010 >> Avica, јас ќе одам да ве прашам како да се обратите внатре insert_node да го debug. 930 00:46:23,010 --> 00:46:28,940 931 00:46:28,940 --> 00:46:31,460 Значи ова е местото каде што минатата останев. 932 00:46:31,460 --> 00:46:35,110 Како можам да се обратите во внатрешноста insert_node, Avica, да се испита што се случува? 933 00:46:35,110 --> 00:46:36,360 Што GDB команда? 934 00:46:36,360 --> 00:46:41,050 935 00:46:41,050 --> 00:46:42,390 Пауза не би ме однесе внатре. 936 00:46:42,390 --> 00:46:46,200 937 00:46:46,200 --> 00:46:47,130 Дали Marquise знаеш? 938 00:46:47,130 --> 00:46:48,240 >> Публика: Што? 939 00:46:48,240 --> 00:46:51,780 >> ЈАСОН Hirschhorn: Што GDB команда Јас го користам за да се влезе внатре оваа функција? 940 00:46:51,780 --> 00:46:52,070 >> Публика: чекор? 941 00:46:52,070 --> 00:46:55,140 >> ЈАСОН Hirschhorn: Чекор преку С Тоа ме носи внатре. 942 00:46:55,140 --> 00:46:55,476 OK. 943 00:46:55,476 --> 00:46:58,040 New_node mallocing малку простор. 944 00:46:58,040 --> 00:46:59,120 Дека сите изгледа како неговите се случува. 945 00:46:59,120 --> 00:47:00,370 Да се ​​испита new_node. 946 00:47:00,370 --> 00:47:03,270 947 00:47:03,270 --> 00:47:05,410 Таа доби некои меморија адреса. 948 00:47:05,410 --> 00:47:07,440 Ајде проверете - 949 00:47:07,440 --> 00:47:08,500 тоа е сите точни. 950 00:47:08,500 --> 00:47:12,220 Така што тука се чини дека да се работи правилно. 951 00:47:12,220 --> 00:47:14,530 >> Публика: Што е разликата помеѓу P и прикажување? 952 00:47:14,530 --> 00:47:16,160 >> ЈАСОН Hirschhorn: P залага за печатење. 953 00:47:16,160 --> 00:47:19,310 И така си бара она што е Разликата меѓу кои и ова? 954 00:47:19,310 --> 00:47:22,330 Во овој случај, ништо. 955 00:47:22,330 --> 00:47:26,960 Но генерално постојат некои разлики. 956 00:47:26,960 --> 00:47:28,220 И треба да се погледне во упатството gdb. 957 00:47:28,220 --> 00:47:29,560 Но, во овој случај, ништо. 958 00:47:29,560 --> 00:47:31,460 Ние тежнееме да го користите печати, иако, бидејќи ние не треба да се направи многу повеќе отколку 959 00:47:31,460 --> 00:47:33,960 печати една вредност. 960 00:47:33,960 --> 00:47:34,640 >> OK. 961 00:47:34,640 --> 00:47:40,300 Па ние сме на линија 80 од нашиот код, поставување јазол * Мом еднаква на листата. 962 00:47:40,300 --> 00:47:42,500 Дозволете ни да испечатите ВАЛ. 963 00:47:42,500 --> 00:47:45,260 964 00:47:45,260 --> 00:47:46,840 Тоа е еднакво на листата. 965 00:47:46,840 --> 00:47:48,850 Слатка. 966 00:47:48,850 --> 00:47:49,340 Чекаат. 967 00:47:49,340 --> 00:47:50,590 Изнесува нешто. 968 00:47:50,590 --> 00:47:53,680 969 00:47:53,680 --> 00:47:56,190 Тоа не изгледа право. 970 00:47:56,190 --> 00:47:56,840 Таму ќе одиме. 971 00:47:56,840 --> 00:47:59,470 Тоа е затоа што во GDB, десно, ако тоа е линија ти си на неа 972 00:47:59,470 --> 00:48:00,330 Сè уште не погубен. 973 00:48:00,330 --> 00:48:03,100 Така што треба да всушност тип до извршување на линијата 974 00:48:03,100 --> 00:48:05,230 пред да го видат неговите резултати. 975 00:48:05,230 --> 00:48:06,680 Значи тука сме. 976 00:48:06,680 --> 00:48:09,490 Ние само извршува оваа линија, претходната еднаква на нула. 977 00:48:09,490 --> 00:48:13,590 Значи, повторно, ако ние печати претходната ние нема да видите ништо чудно. 978 00:48:13,590 --> 00:48:18,680 Но, ако ние всушност се изврши што линија, а потоа ќе видиме 979 00:48:18,680 --> 00:48:20,380 дека ресорните работел. 980 00:48:20,380 --> 00:48:21,060 >> Па ние имаме ВАЛ. 981 00:48:21,060 --> 00:48:23,180 Оние кои се и добри. 982 00:48:23,180 --> 00:48:24,010 Нели? 983 00:48:24,010 --> 00:48:28,130 Сега ние сме на оваа линија, токму тука. 984 00:48:28,130 --> 00:48:29,310 Додека Мом не го прави еднаков нула. 985 00:48:29,310 --> 00:48:31,110 Па, она што го прави Мом еднакви? 986 00:48:31,110 --> 00:48:32,450 Ние само видов изнесуваше нула. 987 00:48:32,450 --> 00:48:33,210 Ние го испечати. 988 00:48:33,210 --> 00:48:35,110 Јас ќе го испечатите повторно. 989 00:48:35,110 --> 00:48:36,720 Така е дека додека јамка ќе изврши? 990 00:48:36,720 --> 00:48:37,270 >> ПУБЛИКАТА: Не 991 00:48:37,270 --> 00:48:39,790 >> ЈАСОН Hirschhorn: Значи, кога јас ја внеле дека линија, ќе видите што скокна по целиот пат 992 00:48:39,790 --> 00:48:41,390 надолу кон дното, се врати лажни. 993 00:48:41,390 --> 00:48:44,520 А потоа ние ќе се врати лажни и се врати на нашата програма и 994 00:48:44,520 --> 00:48:48,020 на крајот испечатите, како што видовме, вметнете не беше успешна. 995 00:48:48,020 --> 00:48:51,010 Значи, некој има било какви идеи за тоа што ние треба да направите за да го надминете овој? 996 00:48:51,010 --> 00:48:54,200 997 00:48:54,200 --> 00:48:57,570 Одам да се почека додека не го видите неколку раце одат нагоре. 998 00:48:57,570 --> 00:48:58,830 Ние не се изврши тоа. 999 00:48:58,830 --> 00:49:01,660 Имајте на ум, ова е прв нешто правиме. 1000 00:49:01,660 --> 00:49:02,430 Јас не одам да се направи двојка. 1001 00:49:02,430 --> 00:49:03,670 Јас ќе одам да направите неколку. 1002 00:49:03,670 --> 00:49:04,830 Бидејќи неколку значи две. 1003 00:49:04,830 --> 00:49:07,620 Јас ќе чекам за повеќе од две. 1004 00:49:07,620 --> 00:49:10,690 >> Првиот вметнување, Мом, стандардно еднаква на нула. 1005 00:49:10,690 --> 00:49:14,050 И овој циклус само извршува ако Мом не е нула. 1006 00:49:14,050 --> 00:49:18,740 Па како можам да се добие околу ова? 1007 00:49:18,740 --> 00:49:19,990 Гледам три раце. 1008 00:49:19,990 --> 00:49:28,490 1009 00:49:28,490 --> 00:49:29,780 Јас ќе чекам за повеќе од три. 1010 00:49:29,780 --> 00:49:33,460 1011 00:49:33,460 --> 00:49:35,940 Маркус, што мислите? 1012 00:49:35,940 --> 00:49:37,730 >> ПУБЛИКАТА: Па, ако ви треба за да се изврши повеќе од еднаш, вие само 1013 00:49:37,730 --> 00:49:39,948 измени го на не-додека јамка. 1014 00:49:39,948 --> 00:49:41,250 >> ЈАСОН Hirschhorn: OK. 1015 00:49:41,250 --> 00:49:44,240 Што ќе го реши нашиот проблем, иако? 1016 00:49:44,240 --> 00:49:47,750 >> ПУБЛИКАТА: Во овој случај нема поради фактот дека листата е празна. 1017 00:49:47,750 --> 00:49:52,150 Па тогаш веројатно само треба да додадете изјава дека доколку јамка излези 1018 00:49:52,150 --> 00:49:55,312 тогаш ќе мора да биде на крајот на на листата, на која ќе укаже 1019 00:49:55,312 --> 00:49:56,562 само да го внесете. 1020 00:49:56,562 --> 00:49:58,920 1021 00:49:58,920 --> 00:49:59,680 >> ЈАСОН Hirschhorn: Ми се допаѓа тоа. 1022 00:49:59,680 --> 00:50:00,500 Кој што има смисла. 1023 00:50:00,500 --> 00:50:03,390 Ако јамка излегува - 1024 00:50:03,390 --> 00:50:04,800 затоа што тоа ќе се вратат лажни тука. 1025 00:50:04,800 --> 00:50:08,220 Значи, ако јамка излези, тогаш ние сме во на крајот на листата, или можеби 1026 00:50:08,220 --> 00:50:10,690 почетокот на листата, ако нема ништо во , која е иста како и на крајот. 1027 00:50:10,690 --> 00:50:12,770 Па сега ние сакаме да го вметнете нешто тука. 1028 00:50:12,770 --> 00:50:17,380 Па како не дека кодот погледне, Маркус? 1029 00:50:17,380 --> 00:50:21,600 >> Публика: Ако веќе доби јазол malloced, вие само може да се каже 1030 00:50:21,600 --> 00:50:25,400 new_node-> Следниот еднаква на нула, бидејќи тоа мора да биде на крајот. 1031 00:50:25,400 --> 00:50:27,510 Или new_node-> Следниот еднаква на нула. 1032 00:50:27,510 --> 00:50:27,765 >> ЈАСОН Hirschhorn: OK. 1033 00:50:27,765 --> 00:50:28,190 Жал. 1034 00:50:28,190 --> 00:50:35,760 New_node-> Следниот еднаква на нула бидејќи ние сме на крајот. 1035 00:50:35,760 --> 00:50:36,460 Која не ја стави внатре 1036 00:50:36,460 --> 00:50:37,710 Како ние да го стави во листата? 1037 00:50:37,710 --> 00:50:46,130 1038 00:50:46,130 --> 00:50:46,460 Во право. 1039 00:50:46,460 --> 00:50:47,750 Тоа е само тоа поставување еднаква на. 1040 00:50:47,750 --> 00:50:50,940 Не како ние всушност го ставив во листата? 1041 00:50:50,940 --> 00:50:54,170 Што да се покажува кон крајот на листата? 1042 00:50:54,170 --> 00:50:56,090 >> Публика: Раководител. 1043 00:50:56,090 --> 00:50:57,566 >> ЈАСОН Hirschhorn: Молам? 1044 00:50:57,566 --> 00:50:59,440 >> Публика: Раководител е да се покажува до крајот на листата. 1045 00:50:59,440 --> 00:51:01,480 >> ЈАСОН Hirschhorn: Ако нема ништо во листата, глава е да се покажува кон 1046 00:51:01,480 --> 00:51:04,170 крајот на листата. 1047 00:51:04,170 --> 00:51:06,920 Така што ќе работат за Првиот вметнување. 1048 00:51:06,920 --> 00:51:09,810 Што ако постојат неколку работи во листата? 1049 00:51:09,810 --> 00:51:12,470 Отколку што не сакате да го поставите главата еднаква на new_node. 1050 00:51:12,470 --> 00:51:13,790 Што сакаме да се направи таму? 1051 00:51:13,790 --> 00:51:15,610 Да? 1052 00:51:15,610 --> 00:51:16,860 Веројатно претходната. 1053 00:51:16,860 --> 00:51:23,560 1054 00:51:23,560 --> 00:51:24,810 Кои ќе работат? 1055 00:51:24,810 --> 00:51:28,950 1056 00:51:28,950 --> 00:51:33,050 Потсетиме дека претходната е само покажувач на еден јазол. 1057 00:51:33,050 --> 00:51:34,770 И претходните претставува локална променлива. 1058 00:51:34,770 --> 00:51:38,080 Па оваа линија ќе се постави локална променлива, претходната, еднаква или 1059 00:51:38,080 --> 00:51:39,380 укажувајќи на овој нов јазол. 1060 00:51:39,380 --> 00:51:41,500 Дека не, всушност, ќе го стави во нашата листа, иако. 1061 00:51:41,500 --> 00:51:44,330 Како ние да го стави во нашиот список? 1062 00:51:44,330 --> 00:51:45,620 Akchar? 1063 00:51:45,620 --> 00:51:46,870 >> Публика: Јас мислите направи тековната> Next. 1064 00:51:46,870 --> 00:51:50,186 1065 00:51:50,186 --> 00:51:52,550 >> ЈАСОН Hirschhorn: OK. 1066 00:51:52,550 --> 00:51:54,010 Мом-> Next. 1067 00:51:54,010 --> 00:51:58,768 Значи, повторно, единствената причина ние сме долу тука е, она што го прави сегашната еднакви? 1068 00:51:58,768 --> 00:51:59,760 >> Публика: еднакво нула. 1069 00:51:59,760 --> 00:52:01,790 >> ЈАСОН Hirschhorn: И така она што се случува ако правиме нула-> следно? 1070 00:52:01,790 --> 00:52:02,810 Што ќе добиете? 1071 00:52:02,810 --> 00:52:04,060 Ќе добие сегментација вина. 1072 00:52:04,060 --> 00:52:06,600 1073 00:52:06,600 --> 00:52:08,880 >> Публика: Дали Мом еднаква на нула. 1074 00:52:08,880 --> 00:52:10,760 >> ЈАСОН Hirschhorn: Тоа е истото како prev, иако, бидејќи има 1075 00:52:10,760 --> 00:52:12,820 локална променлива ние сме поставување еднаков на овој нов јазол. 1076 00:52:12,820 --> 00:52:16,680 1077 00:52:16,680 --> 00:52:20,920 Да се ​​вратиме на нашата слика на вметнување нешто. 1078 00:52:20,920 --> 00:52:25,500 Велат ние сме вметнување на крајот на листата, па токму од овде. 1079 00:52:25,500 --> 00:52:30,010 Имаме тековната покажувачот тоа е укажувајќи на нула и претходната точка 1080 00:52:30,010 --> 00:52:32,800 тоа е покажувајќи на 8. 1081 00:52:32,800 --> 00:52:35,330 Значи она што ние треба да се ажурира, Ави? 1082 00:52:35,330 --> 00:52:36,680 >> Публика: Претходна-> следно? 1083 00:52:36,680 --> 00:52:41,980 >> ЈАСОН Hirschhorn: Претходна-> следната е она што ние сакаме да се ажурира, бидејќи тоа 1084 00:52:41,980 --> 00:52:44,960 всушност, ќе го вметнете на на крајот на листата. 1085 00:52:44,960 --> 00:52:47,220 Ние се уште имаат една грешка, сепак, дека ние сме случува да се кандидира во. 1086 00:52:47,220 --> 00:52:50,090 Што е тоа баг? 1087 00:52:50,090 --> 00:52:50,790 Да? 1088 00:52:50,790 --> 00:52:53,860 >> Публика: Тоа се случува да се вратат лажни во овој случај? 1089 00:52:53,860 --> 00:52:56,380 >> ЈАСОН Hirschhorn: Ох, е е ќе се врати лажни. 1090 00:52:56,380 --> 00:52:57,430 Но, има уште еден баг. 1091 00:52:57,430 --> 00:52:58,930 Па ние ќе треба да се стави во замена вистина. 1092 00:52:58,930 --> 00:53:01,370 >> Публика: Дали претходната уште еднаков нула на врвот на листата? 1093 00:53:01,370 --> 00:53:03,645 >> ЈАСОН Hirschhorn: Значи претходната уште еднакво null уште на самиот почеток. 1094 00:53:03,645 --> 00:53:07,480 1095 00:53:07,480 --> 00:53:10,440 Па како може да се добие во текот на тоа? 1096 00:53:10,440 --> 00:53:10,950 Да? 1097 00:53:10,950 --> 00:53:15,280 >> Публика: Мислам дека може да се направи проверка пред додека јамка за да видат дали тоа е 1098 00:53:15,280 --> 00:53:16,610 празна листа. 1099 00:53:16,610 --> 00:53:17,000 >> ЈАСОН Hirschhorn: OK. 1100 00:53:17,000 --> 00:53:17,710 Па ајде да одиме тука. 1101 00:53:17,710 --> 00:53:18,530 Направи проверка. 1102 00:53:18,530 --> 00:53:19,380 Ако - 1103 00:53:19,380 --> 00:53:20,770 >> Публика: Значи, ако главата еднакво еднаква на нула. 1104 00:53:20,770 --> 00:53:24,300 1105 00:53:24,300 --> 00:53:26,320 >> ЈАСОН Hirschhorn: Ако главата еднакво еднаква на нула - 1106 00:53:26,320 --> 00:53:27,790 дека ќе ни каже дали тоа е празна листа. 1107 00:53:27,790 --> 00:53:31,090 >> Публика: И тогаш ќе направи главата еднаква на нови. 1108 00:53:31,090 --> 00:53:34,740 >> ЈАСОН Hirschhorn: Раководител еднакво new_node? 1109 00:53:34,740 --> 00:53:35,730 И што друго не ни треба да направам? 1110 00:53:35,730 --> 00:53:37,020 >> Публика: И тогаш ќе се вратите точно. 1111 00:53:37,020 --> 00:53:37,535 >> ЈАСОН Hirschhorn: не сосема. 1112 00:53:37,535 --> 00:53:38,785 Ние сме недостасува еден чекор. 1113 00:53:38,785 --> 00:53:41,590 1114 00:53:41,590 --> 00:53:43,710 >> Публика: New_node следната мора да се укаже на нула. 1115 00:53:43,710 --> 00:53:44,570 >> ЈАСОН Hirschhorn: Точно, Alden. 1116 00:53:44,570 --> 00:53:46,600 А потоа можеме да се вратат точно. 1117 00:53:46,600 --> 00:53:47,560 OK. 1118 00:53:47,560 --> 00:53:51,630 Но тоа е уште една добра идеја да се прават работите на крајот на листата, право? 1119 00:53:51,630 --> 00:53:51,950 Во ред е. 1120 00:53:51,950 --> 00:53:54,450 Ние се уште всушност може да се добие до крајот на листата. 1121 00:53:54,450 --> 00:53:57,870 Така е овој код казна ако ние сме на крајот на листата и има некои 1122 00:53:57,870 --> 00:53:59,120 работи во листата? 1123 00:53:59,120 --> 00:54:01,830 1124 00:54:01,830 --> 00:54:02,040 Нели? 1125 00:54:02,040 --> 00:54:03,540 Бидејќи ние се уште имаат идеја на Marcus. 1126 00:54:03,540 --> 00:54:06,870 Ние би можеле да излезете овој циклус, бидејќи ние сме на крајот на листата. 1127 00:54:06,870 --> 00:54:09,308 Па ние се уште сакаме оваа кодот овде? 1128 00:54:09,308 --> 00:54:10,520 >> Публика: Да. 1129 00:54:10,520 --> 00:54:11,000 >> ЈАСОН Hirschhorn: Да. 1130 00:54:11,000 --> 00:54:14,190 И она што ние треба да го промените ова? 1131 00:54:14,190 --> 00:54:15,440 Точно. 1132 00:54:15,440 --> 00:54:19,580 1133 00:54:19,580 --> 00:54:21,640 Дали тоа звучи добро за секого досега? 1134 00:54:21,640 --> 00:54:22,420 Секој имате било какви - 1135 00:54:22,420 --> 00:54:23,480 AVI, имате нешто да додадете? 1136 00:54:23,480 --> 00:54:23,920 >> ПУБЛИКАТА: Не 1137 00:54:23,920 --> 00:54:25,276 >> ЈАСОН Hirschhorn: OK. 1138 00:54:25,276 --> 00:54:27,010 Па ние направивме неколку промени. 1139 00:54:27,010 --> 00:54:29,540 Ние сторивме оваа проверка пред да отиде во за празна листа. 1140 00:54:29,540 --> 00:54:31,790 Па ние сме згрижени празна листа. 1141 00:54:31,790 --> 00:54:35,500 И тука ние се грижеше за вметнување нешто на крајот на листата. 1142 00:54:35,500 --> 00:54:38,930 Па ми се чини дека ова додека јамка земање грижат за нешта меѓу нив, 1143 00:54:38,930 --> 00:54:41,920 некаде во листата ако има се работи во листата. 1144 00:54:41,920 --> 00:54:42,280 >> OK. 1145 00:54:42,280 --> 00:54:44,310 Дозволете ни да ја извршите оваа програма повторно. 1146 00:54:44,310 --> 00:54:50,170 1147 00:54:50,170 --> 00:54:50,755 Не е успешна. 1148 00:54:50,755 --> 00:54:52,190 >> Публика: Вие не го направи. 1149 00:54:52,190 --> 00:54:53,940 >> ЈАСОН Hirschhorn: О, Јас не го направи. 1150 00:54:53,940 --> 00:54:56,250 Добра поента, Мајкл. 1151 00:54:56,250 --> 00:54:57,500 Ајде да додадете шминка поврзани. 1152 00:54:57,500 --> 00:55:01,590 1153 00:55:01,590 --> 00:55:04,830 Линија 87 има грешка. 1154 00:55:04,830 --> 00:55:05,420 Линија 87. 1155 00:55:05,420 --> 00:55:06,600 Alden, ова беше линијата ќе ми даде. 1156 00:55:06,600 --> 00:55:08,962 Што е проблемот? 1157 00:55:08,962 --> 00:55:10,710 >> Публика: Тоа мора да биде на нула. 1158 00:55:10,710 --> 00:55:11,000 >> ЈАСОН Hirschhorn: Одлично. 1159 00:55:11,000 --> 00:55:11,630 Точно во право. 1160 00:55:11,630 --> 00:55:13,290 Тоа треба да биде нула. 1161 00:55:13,290 --> 00:55:15,210 Да се ​​направи повторно. 1162 00:55:15,210 --> 00:55:17,220 Компајлирате. 1163 00:55:17,220 --> 00:55:17,890 OK. 1164 00:55:17,890 --> 00:55:19,400 Ајде да вметнете три. 1165 00:55:19,400 --> 00:55:20,570 Вметнете беше успешна. 1166 00:55:20,570 --> 00:55:21,660 Ајде да го испечатите. 1167 00:55:21,660 --> 00:55:23,590 Ох, ако само ние би можеле да се провери. 1168 00:55:23,590 --> 00:55:25,500 Но, ние не го направиле функција за печатење сеуште. 1169 00:55:25,500 --> 00:55:27,840 Ајде да внесете нешто друго. 1170 00:55:27,840 --> 00:55:29,090 Она што ние треба да влезе? 1171 00:55:29,090 --> 00:55:31,120 1172 00:55:31,120 --> 00:55:31,940 >> ПУБЛИКАТА: Седум. 1173 00:55:31,940 --> 00:55:33,340 >> ЈАСОН Hirschhorn: Седум? 1174 00:55:33,340 --> 00:55:34,590 >> Публика: Да. 1175 00:55:34,590 --> 00:55:38,680 1176 00:55:38,680 --> 00:55:39,780 >> ЈАСОН Hirschhorn: Имаме сегмент вина. 1177 00:55:39,780 --> 00:55:43,760 Па добивме една, но ние јасно не може да добие две. 1178 00:55:43,760 --> 00:55:45,690 Тоа е 05:07. 1179 00:55:45,690 --> 00:55:48,370 Па ние би можеле debug ова за три минути. 1180 00:55:48,370 --> 00:55:51,240 Но јас ќе одам да ни остави тука и се движи кон хаш маси. 1181 00:55:51,240 --> 00:55:54,290 Но, повторно, одговорите за овој код Јас ќе го мејл до вас во малку. 1182 00:55:54,290 --> 00:55:55,440 Ние сме многу блиску до него. 1183 00:55:55,440 --> 00:55:58,300 Силно ве охрабруваме да дознаам она што се случува овде и да ја поправите тоа. 1184 00:55:58,300 --> 00:56:02,400 Затоа јас ќе ви мејл овој код како и плус решение - 1185 00:56:02,400 --> 00:56:03,670 веројатно решение подоцна. 1186 00:56:03,670 --> 00:56:05,110 Првиот овој код. 1187 00:56:05,110 --> 00:56:08,290 >> Од друга работа што сакате да го направите пред да финиш е не сме ослободени ништо. 1188 00:56:08,290 --> 00:56:10,370 Па сакам да ви покажам што valgrind изгледа. 1189 00:56:10,370 --> 00:56:14,310 Ако трчаме valgrind граници на нашата програма,. / поврзани. 1190 00:56:14,310 --> 00:56:22,540 Повторно, според овој слајд, ние треба да се подигне valgrind со некои од типот на 1191 00:56:22,540 --> 00:56:26,410 опција, во овој случај - Течење-проверка = целост. 1192 00:56:26,410 --> 00:56:27,660 Па ајде да пишуваме valgrind - Течење-проверка = целост. 1193 00:56:27,660 --> 00:56:31,910 1194 00:56:31,910 --> 00:56:35,080 Па ова ќе се кандидира valgrind на нашата програма. 1195 00:56:35,080 --> 00:56:37,000 И сега на програмата всушност работи. 1196 00:56:37,000 --> 00:56:40,190 Па ние ќе да се пушта само како пред, се стави нешто внатре 1197 00:56:40,190 --> 00:56:40,830 Одам да се стави во три. 1198 00:56:40,830 --> 00:56:41,790 Која работи. 1199 00:56:41,790 --> 00:56:43,202 Јас не одам да се обиде да се стави во нешто друго, бидејќи ние се случува да се 1200 00:56:43,202 --> 00:56:44,710 добие сегмент лажни во тој случај. 1201 00:56:44,710 --> 00:56:46,700 Па јас сум само ќе се откажам. 1202 00:56:46,700 --> 00:56:50,160 >> И сега може да се види овде излегуваат во јавноста и грамада резиме. 1203 00:56:50,160 --> 00:56:52,310 Овие се добри работи што дека сакате да го проверите. 1204 00:56:52,310 --> 00:56:56,780 Па грамада резиме - се вели, е во употреба на излез - осум бајти во еден блок. 1205 00:56:56,780 --> 00:56:58,370 Дека еден блок е јазол ние malloced. 1206 00:56:58,370 --> 00:57:02,230 Мајкл, ти рече пред еден јазол е осум каснувања бидејќи има целобројни 1207 00:57:02,230 --> 00:57:02,680 и покажувач. 1208 00:57:02,680 --> 00:57:04,550 Па тоа е нашата јазол. 1209 00:57:04,550 --> 00:57:08,170 И тогаш тоа вели дека ние се користи Примерок седум пати и ние ослободен 1210 00:57:08,170 --> 00:57:08,940 нешто шест пати. 1211 00:57:08,940 --> 00:57:13,680 Но, ние никогаш наречени слободни, па јас немам претстава што ова се зборува. 1212 00:57:13,680 --> 00:57:18,490 >> Но доволно е да се каже дека кога Вашиот Програмата тече, Примерок се нарекува 1213 00:57:18,490 --> 00:57:20,330 во некои други места дека ние не треба да се грижите. 1214 00:57:20,330 --> 00:57:22,460 Па Примерок најверојатно наречена во некои места. 1215 00:57:22,460 --> 00:57:24,480 Ние не треба да се грижите каде. 1216 00:57:24,480 --> 00:57:26,240 Но ова е навистина нас. 1217 00:57:26,240 --> 00:57:27,380 Оваа прва линија е со нас. 1218 00:57:27,380 --> 00:57:28,320 Го напуштивме тој блок. 1219 00:57:28,320 --> 00:57:30,330 И можете да видите дека тука во протекувањето резиме. 1220 00:57:30,330 --> 00:57:31,950 Уште Комуникативен - 1221 00:57:31,950 --> 00:57:32,930 осум бајти во еден блок. 1222 00:57:32,930 --> 00:57:34,100 Тоа значи дека меморијата - 1223 00:57:34,100 --> 00:57:35,730 ние сме протекоа дека меморијата. 1224 00:57:35,730 --> 00:57:37,570 Дефинитивно изгубени - 1225 00:57:37,570 --> 00:57:38,770 нешто се губи засекогаш. 1226 00:57:38,770 --> 00:57:40,590 Општо земено, ќе не гледам ништо таму. 1227 00:57:40,590 --> 00:57:44,780 Уште Комуникативен е генерално каде ќе видите работи, каде што ќе сакате 1228 00:57:44,780 --> 00:57:48,900 да се погледне да видите што кодот треба да ви ги ослободија, но сте заборавиле да го ослободи. 1229 00:57:48,900 --> 00:57:53,170 >> А потоа, ако тоа не е случај, ако ние го сторивме бесплатно сè, 1230 00:57:53,170 --> 00:57:54,360 може да се провери тоа. 1231 00:57:54,360 --> 00:57:57,330 Ајде да ја стартувате програмата не пуштање во ништо. 1232 00:57:57,330 --> 00:57:59,800 Ќе видите овде во употреба на излез - 1233 00:57:59,800 --> 00:58:01,310 нула бајти во нула блокови. 1234 00:58:01,310 --> 00:58:06,310 Тоа значи дека ние нема никаква лево кога оваа програма излезено. 1235 00:58:06,310 --> 00:58:12,090 Значи пред да наполнат во pset6, работи valgrind и бидете сигурни дека немате 1236 00:58:12,090 --> 00:58:15,310 било меморија протекување во својата програма. 1237 00:58:15,310 --> 00:58:17,910 Ако имате било какви прашања со valgrind, се чувствуваат слободни да допрат. 1238 00:58:17,910 --> 00:58:18,700 Но, ова е како ќе го користите. 1239 00:58:18,700 --> 00:58:20,890 Многу едноставна - да видиме ако имаат во употреба на излез - 1240 00:58:20,890 --> 00:58:22,270 било бајти во било блокови. 1241 00:58:22,270 --> 00:58:27,890 1242 00:58:27,890 --> 00:58:29,580 >> Па ние се работи на вметнете јазол. 1243 00:58:29,580 --> 00:58:33,840 Имав две други функции тука - печати јазли и слободни јазли. 1244 00:58:33,840 --> 00:58:37,780 Повторно, овие се функции кои се ќе биде добро за вас да се практикуваат 1245 00:58:37,780 --> 00:58:40,990 бидејќи тие ќе ви помогнат не само со овие примерок вежби, но, исто така, 1246 00:58:40,990 --> 00:58:42,180 на проблемот во собата. 1247 00:58:42,180 --> 00:58:44,230 Тие сајтот на прилично тесно да работи сте ќе треба да се направи во 1248 00:58:44,230 --> 00:58:45,010 проблем во собата. 1249 00:58:45,010 --> 00:58:47,640 Но, јас сакам да бидете сигурни дека ние се смести на сè. 1250 00:58:47,640 --> 00:58:50,400 И хаш маси се исто така клучна за она што го правиме во делот на овој 1251 00:58:50,400 --> 00:58:51,980 недела - или во проблемот во собата. 1252 00:58:51,980 --> 00:58:55,200 >> Па ние ќе се заврши делот зборуваме за хеш табели. 1253 00:58:55,200 --> 00:58:58,140 Ако забележите сум направил малку хаш табелата. 1254 00:58:58,140 --> 00:59:00,020 Тоа не е она што ние зборуваме за, сепак. 1255 00:59:00,020 --> 00:59:03,540 Станува збор за еден поинаков тип на хеш табели. 1256 00:59:03,540 --> 00:59:07,300 И на неговото јадро, хеш табелата не е ништо повеќе од еден 1257 00:59:07,300 --> 00:59:08,860 низа плус хеш функција. 1258 00:59:08,860 --> 00:59:11,150 Ние ќе зборуваме за малку само за да бидете сигурни дека секој го разбира она што е 1259 00:59:11,150 --> 00:59:12,110 хаш функција е. 1260 00:59:12,110 --> 00:59:15,420 И јас ви го кажувам сега дека тоа е ништо повеќе од две работи - 1261 00:59:15,420 --> 00:59:18,590 низа и хаш функција. 1262 00:59:18,590 --> 00:59:20,716 И тука се чекори преку кои оваа работи. 1263 00:59:20,716 --> 00:59:31,560 1264 00:59:31,560 --> 00:59:32,810 >> Таму е нашата низа. 1265 00:59:32,810 --> 00:59:38,460 1266 00:59:38,460 --> 00:59:39,460 Таму е нашата функција. 1267 00:59:39,460 --> 00:59:43,180 Особено, хаш функции треба да направи неколку нешта со ова. 1268 00:59:43,180 --> 00:59:45,040 Одам да се зборува конкретно за овој проблем во собата. 1269 00:59:45,040 --> 00:59:46,450 Тоа е веројатно нема да земе во низа. 1270 00:59:46,450 --> 00:59:50,570 1271 00:59:50,570 --> 00:59:51,770 И што е тоа ќе се врати? 1272 00:59:51,770 --> 00:59:52,640 Што тип на податок? 1273 00:59:52,640 --> 00:59:54,260 Alden? 1274 00:59:54,260 --> 00:59:55,760 Вашиот хаш функција се врати? 1275 00:59:55,760 --> 00:59:58,760 Цел број. 1276 00:59:58,760 --> 01:00:01,700 Значи тоа е она што на хаш маса се состои од - 1277 01:00:01,700 --> 01:00:05,430 маса во форма на низа и хаш функција. 1278 01:00:05,430 --> 01:00:06,010 Како тоа функционира? 1279 01:00:06,010 --> 01:00:07,300 Таа работи во три чекори. 1280 01:00:07,300 --> 01:00:08,740 Ние го даде клучот. 1281 01:00:08,740 --> 01:00:11,470 Во овој случај, ние ќе го даде стринг. 1282 01:00:11,470 --> 01:00:18,140 Ние го нарекуваме хаш функција по чекор еден на клучот и да добиеме вредност. 1283 01:00:18,140 --> 01:00:20,310 >> Поточно, ние ќе каже добиеме цел број. 1284 01:00:20,310 --> 01:00:25,630 Дека цел број, постојат многу специфични ограничувања на она што цел број може да биде. 1285 01:00:25,630 --> 01:00:28,880 Во овој пример, нашите низа е на големината три. 1286 01:00:28,880 --> 01:00:32,330 Па што броеви кои цел број може да биде. 1287 01:00:32,330 --> 01:00:35,970 Што е опсегот на валидни вредности за дека цел број, враќање видот на оваа 1288 01:00:35,970 --> 01:00:37,220 хаш функција? 1289 01:00:37,220 --> 01:00:40,440 1290 01:00:40,440 --> 01:00:42,110 Нула, еден и два. 1291 01:00:42,110 --> 01:00:46,060 Точка на хаш функција е да дознаам место во низа 1292 01:00:46,060 --> 01:00:47,790 каде што нашите клучни се случува. 1293 01:00:47,790 --> 01:00:51,290 Постојат само три можни места тука - 1294 01:00:51,290 --> 01:00:52,130 нула, еден или два. 1295 01:00:52,130 --> 01:00:55,360 Па оваа функција подобро враќање нула, еден или два. 1296 01:00:55,360 --> 01:00:58,740 Некои валидни indice во оваа низа. 1297 01:00:58,740 --> 01:01:02,770 >> А потоа во зависност од тоа каде тој се враќа, можете да видите има низа отворени 1298 01:01:02,770 --> 01:01:03,730 заградата вредност. 1299 01:01:03,730 --> 01:01:05,800 Тоа е каде што ќе стави клуч. 1300 01:01:05,800 --> 01:01:11,280 Па ние фрли во тиква, ние се излезе нула. 1301 01:01:11,280 --> 01:01:15,540 На низа заграда 0, ќе стави тиква. 1302 01:01:15,540 --> 01:01:21,070 Ние фрли во мачки, ќе излеземе еден. 1303 01:01:21,070 --> 01:01:24,110 Ќе стави мачката во една. 1304 01:01:24,110 --> 01:01:25,480 Ние се стави во пајак. 1305 01:01:25,480 --> 01:01:26,710 Ние излезат две. 1306 01:01:26,710 --> 01:01:30,200 Ние се стави пајакот на низа заграда две. 1307 01:01:30,200 --> 01:01:32,300 Тоа ќе биде толку убаво ако тој работел како што. 1308 01:01:32,300 --> 01:01:35,570 Но, за жал, како што ќе видиме, тоа е малку покомплицирано. 1309 01:01:35,570 --> 01:01:37,570 >> Пред да се влезе таму, било какви прашања за оваа основна 1310 01:01:37,570 --> 01:01:38,820 поставување на хеш табелата? 1311 01:01:38,820 --> 01:01:49,050 1312 01:01:49,050 --> 01:01:51,940 Ова е слика на точно она што го привлече на табла. 1313 01:01:51,940 --> 01:01:55,420 Но бидејќи ние го привлече на табла, јас не сум случува да одам во неа понатаму. 1314 01:01:55,420 --> 01:02:00,430 Во суштина клучеви, магијата црна кутија - или во овој случај, ТЕАЛ кутија - на 1315 01:02:00,430 --> 01:02:02,410 хаш функција ги става во кофи. 1316 01:02:02,410 --> 01:02:04,690 И во овој пример ние сме не ставање на името. 1317 01:02:04,690 --> 01:02:07,880 Ние сме ставање на поврзани телефон Бројот на име во кофа. 1318 01:02:07,880 --> 01:02:10,430 Но вие можете да многу добро само стави името во кофа. 1319 01:02:10,430 --> 01:02:12,950 >> Ова е само слика на она што ние привлече на табла. 1320 01:02:12,950 --> 01:02:14,460 Имаме потенцијални стапици, иако. 1321 01:02:14,460 --> 01:02:17,470 И постојат две особено слајдови дека сакам да одам повеќе. 1322 01:02:17,470 --> 01:02:20,230 Првиот е за хеш функција. 1323 01:02:20,230 --> 01:02:22,620 Па јас го поставил прашањето, што што го прави добар hash функција? 1324 01:02:22,620 --> 01:02:24,220 Давам два одговори. 1325 01:02:24,220 --> 01:02:26,630 Првата е дека тоа е детерминистички. 1326 01:02:26,630 --> 01:02:29,660 Во контекст на хаш функции, што значи ова? 1327 01:02:29,660 --> 01:02:37,840 1328 01:02:37,840 --> 01:02:39,282 Да? 1329 01:02:39,282 --> 01:02:42,850 >> Публика: Тоа може да се најде на индекс во постојан време? 1330 01:02:42,850 --> 01:02:43,810 >> ЈАСОН Hirschhorn: Тоа не е она што тоа значи. 1331 01:02:43,810 --> 01:02:44,725 Но тоа е добар се погоди. 1332 01:02:44,725 --> 01:02:46,100 Некој друг има претпоставка на она што значи ова? 1333 01:02:46,100 --> 01:02:47,780 Дека добар hash функција е детерминистички? 1334 01:02:47,780 --> 01:02:48,280 Annie? 1335 01:02:48,280 --> 01:02:51,680 >> Публика: дека клучниот само може да биде одбележан на едно место во хеш табелата. 1336 01:02:51,680 --> 01:02:53,070 >> ЈАСОН Hirschhorn: Тоа е точно во право. 1337 01:02:53,070 --> 01:02:57,430 Секој пат кога ќе се стави во тиква, таа секогаш се враќа на нула. 1338 01:02:57,430 --> 01:03:01,660 Ако се стави во тиква и вашиот хаш функцијата враќа нула, но има 1339 01:03:01,660 --> 01:03:06,060 веројатноста за враќање нешто друго поголема од нула - 1340 01:03:06,060 --> 01:03:09,280 па можеби тоа може да се врати еден понекогаш или две други времиња - 1341 01:03:09,280 --> 01:03:11,100 дека не е добар hash функција. 1342 01:03:11,100 --> 01:03:11,800 Ти си точно во право. 1343 01:03:11,800 --> 01:03:15,680 Вашиот hash функција треба да се врати исто точно цел број, во овој случај, за 1344 01:03:15,680 --> 01:03:17,780 исто точно стринг. 1345 01:03:17,780 --> 01:03:22,210 >> Можеби тоа се враќа со иста точната цел број за истата точната низа 1346 01:03:22,210 --> 01:03:24,430 без оглед на капитализација. 1347 01:03:24,430 --> 01:03:27,980 Но, во тој случај тоа е уште детерминистички бидејќи повеќе работи 1348 01:03:27,980 --> 01:03:29,350 се мапирани со иста вредност. 1349 01:03:29,350 --> 01:03:30,170 Тоа е во ред. 1350 01:03:30,170 --> 01:03:32,615 Додека постои само една излез за даден влез. 1351 01:03:32,615 --> 01:03:35,630 1352 01:03:35,630 --> 01:03:36,350 >> OK. 1353 01:03:36,350 --> 01:03:38,340 Втората работа е дека тоа се враќа валидна индекси. 1354 01:03:38,340 --> 01:03:40,220 Ние донесе до тоа порано. 1355 01:03:40,220 --> 01:03:41,860 Овој хаш функција - 1356 01:03:41,860 --> 01:03:43,710 О момче - 1357 01:03:43,710 --> 01:03:46,840 хеш функција треба врати валидна индекси. 1358 01:03:46,840 --> 01:03:47,740 Така да се каже - 1359 01:03:47,740 --> 01:03:48,990 ајде да се вратиме на овој пример. 1360 01:03:48,990 --> 01:03:52,580 1361 01:03:52,580 --> 01:03:57,540 Мојата хаш функција Брои до букви во зборот. 1362 01:03:57,540 --> 01:03:58,380 Тоа е хеш функција. 1363 01:03:58,380 --> 01:03:59,740 И се враќа дека цел број. 1364 01:03:59,740 --> 01:04:04,280 Па ако имам зборот А, тоа е ќе се врати еден. 1365 01:04:04,280 --> 01:04:06,900 И тоа се случува да се стави во право тука. 1366 01:04:06,900 --> 01:04:09,430 Што ако јас се стави во зборот лилјак? 1367 01:04:09,430 --> 01:04:11,310 Тоа се случува да се врати три. 1368 01:04:11,310 --> 01:04:12,560 Каде лилјак одиме? 1369 01:04:12,560 --> 01:04:18,730 1370 01:04:18,730 --> 01:04:19,750 >> Тоа не се вклопува. 1371 01:04:19,750 --> 01:04:21,000 Но, таа треба да оди некаде. 1372 01:04:21,000 --> 01:04:23,340 Ова е мојот хеш табелата по сите, и сè треба да оди некаде. 1373 01:04:23,340 --> 01:04:24,590 Па каде лилјак треба да одат? 1374 01:04:24,590 --> 01:04:28,020 1375 01:04:28,020 --> 01:04:28,710 Било кој мисли? 1376 01:04:28,710 --> 01:04:29,450 Нагаѓања? 1377 01:04:29,450 --> 01:04:30,280 Добра нагаѓања? 1378 01:04:30,280 --> 01:04:31,220 >> ПУБЛИКАТА: Нулта. 1379 01:04:31,220 --> 01:04:32,120 >> ЈАСОН Hirschhorn: Зошто нула? 1380 01:04:32,120 --> 01:04:35,990 >> ПУБЛИКАТА: Поради три modulo три е нула? 1381 01:04:35,990 --> 01:04:38,620 >> ЈАСОН Hirschhorn: Три modulo три е нула. 1382 01:04:38,620 --> 01:04:40,810 Тоа е голема претпоставка, и тоа е точно. 1383 01:04:40,810 --> 01:04:43,870 Така што во овој случај треба да веројатно одат на нула. 1384 01:04:43,870 --> 01:04:51,080 Па добар начин да се осигура дека оваа хаш функција враќа само валидни индексите е 1385 01:04:51,080 --> 01:04:54,580 за да го modulo од големината на маса. 1386 01:04:54,580 --> 01:04:57,360 Ако modulo што овој се враќа од три, ти си секогаш ќе добие 1387 01:04:57,360 --> 01:05:00,930 нешто помеѓу нула, еден, и два. 1388 01:05:00,930 --> 01:05:05,160 И ако тоа секогаш се враќа седум, а секогаш modulo од три, ти си 1389 01:05:05,160 --> 01:05:06,030 секогаш ќе го добиете истото. 1390 01:05:06,030 --> 01:05:09,270 >> Па тоа е уште детерминистички ако modulo. 1391 01:05:09,270 --> 01:05:11,420 Но, тоа ќе се осигури дека ќе никогаш не се добие нешто - 1392 01:05:11,420 --> 01:05:12,940 неправилен индустрија. 1393 01:05:12,940 --> 01:05:16,840 Општо земено, тоа modulo треба да се случи во внатрешноста на вашиот хеш функција. 1394 01:05:16,840 --> 01:05:18,240 Значи, вие не треба да се грижите за тоа. 1395 01:05:18,240 --> 01:05:20,555 Можете само да се осигура дека ова е валидна indice. 1396 01:05:20,555 --> 01:05:23,700 1397 01:05:23,700 --> 01:05:26,700 Било какви прашања на овој потенцијал замка? 1398 01:05:26,700 --> 01:05:36,590 1399 01:05:36,590 --> 01:05:39,060 >> OK. 1400 01:05:39,060 --> 01:05:40,290 И таму ќе одиме. 1401 01:05:40,290 --> 01:05:42,890 Следниот потенцијален замка, и ова е голем. 1402 01:05:42,890 --> 01:05:46,880 Што ако две копчиња сајтот со иста вредност? 1403 01:05:46,880 --> 01:05:49,350 Па така постојат два начини да се справи со ова. 1404 01:05:49,350 --> 01:05:53,140 1405 01:05:53,140 --> 01:05:56,020 Првиот се нарекува линеарно љубопитство, за што јас сум 1406 01:05:56,020 --> 01:05:57,300 нема да одат над. 1407 01:05:57,300 --> 01:06:01,120 Но треба да бидете запознаени со тоа како кој работи и што е тоа. 1408 01:06:01,120 --> 01:06:05,610 >> Вториот идам да одат над бидејќи тоа е она што многу 1409 01:06:05,610 --> 01:06:08,290 луѓе веројатно ќе заврши одлучувањето да ги користат во својот проблем во собата. 1410 01:06:08,290 --> 01:06:09,820 Се разбира, вие не мора да. 1411 01:06:09,820 --> 01:06:15,280 Но, за проблемот во собата, многу луѓе имаат тенденција да изберете да се создаде хеш табелата 1412 01:06:15,280 --> 01:06:17,950 со посебен врзувањето за спроведување на нивниот речник. 1413 01:06:17,950 --> 01:06:21,390 Па ние ќе да се премине што значи тоа да се создаде хеш табелата со 1414 01:06:21,390 --> 01:06:23,890 посебна врзувањето. 1415 01:06:23,890 --> 01:06:26,260 >> Па да го ставам во тиква. 1416 01:06:26,260 --> 01:06:29,560 Тој се враќа на нула. 1417 01:06:29,560 --> 01:06:31,410 И јас се стави тиква тука. 1418 01:06:31,410 --> 01:06:35,880 1419 01:06:35,880 --> 01:06:37,930 Потоа ја ставив во - 1420 01:06:37,930 --> 01:06:39,922 што е уште еден Ноќта на вештерките-тематските нешто? 1421 01:06:39,922 --> 01:06:42,200 >> ПУБЛИКАТА: Кенди. 1422 01:06:42,200 --> 01:06:42,770 >> ЈАСОН Hirschhorn: Кенди! 1423 01:06:42,770 --> 01:06:43,910 Тоа е одлично. 1424 01:06:43,910 --> 01:06:47,760 Ја ставив во бонбони, и бонбони Исто така ми дава нула. 1425 01:06:47,760 --> 01:06:49,350 Што да правам? 1426 01:06:49,350 --> 01:06:51,940 Сите идеи? 1427 01:06:51,940 --> 01:06:53,940 Бидејќи сите што вид на знаете она што одделни врзувањето е. 1428 01:06:53,940 --> 01:06:55,190 Па било какви идеи што да правам? 1429 01:06:55,190 --> 01:06:58,170 1430 01:06:58,170 --> 01:06:59,110 Да. 1431 01:06:59,110 --> 01:07:03,810 >> Публика: Ставањето на низа всушност, во хеш табелата. 1432 01:07:03,810 --> 01:07:08,910 >> ЈАСОН Hirschhorn: Значи ние ќе исцртување на добра идеја овде. 1433 01:07:08,910 --> 01:07:09,340 OK. 1434 01:07:09,340 --> 01:07:12,290 >> Публика: Имаат hashtable [Нечујни] 1435 01:07:12,290 --> 01:07:16,640 на покажувачот што укажува на на почетокот на листата. 1436 01:07:16,640 --> 01:07:20,930 А потоа се тиква биде првиот вредност во таа поврзана листа и бонбони биде 1437 01:07:20,930 --> 01:07:22,800 втората вредност во кои се поврзани листата. 1438 01:07:22,800 --> 01:07:23,420 >> ЈАСОН Hirschhorn: OK. 1439 01:07:23,420 --> 01:07:24,670 Marcus, тоа беше извонредна. 1440 01:07:24,670 --> 01:07:26,160 Одам да се скрши дека долу. 1441 01:07:26,160 --> 01:07:28,890 Маркус вели не пребришете тиква. 1442 01:07:28,890 --> 01:07:30,660 Тоа би било лошо. 1443 01:07:30,660 --> 01:07:33,640 Не ставајте бонбони некаде на друго место. 1444 01:07:33,640 --> 01:07:35,390 Ние ќе ги стави двете на нула. 1445 01:07:35,390 --> 01:07:37,770 Но ние ќе се справи со ставајќи ги на нула од 1446 01:07:37,770 --> 01:07:39,395 создавање на листа на нула. 1447 01:07:39,395 --> 01:07:42,430 И ние ќе се создаде листа на сè што одбележан на нула. 1448 01:07:42,430 --> 01:07:47,960 И на најдобар начин научивме да се создаде листата што може да расте и се намалува 1449 01:07:47,960 --> 01:07:49,840 динамички не е во рамките на уште низа. 1450 01:07:49,840 --> 01:07:51,510 Па не е мулти-димензионална низа. 1451 01:07:51,510 --> 01:07:54,080 Но само да се создаде поврзана листа. 1452 01:07:54,080 --> 01:07:55,330 >> Така што тој предлага - 1453 01:07:55,330 --> 01:07:57,950 1454 01:07:57,950 --> 01:07:59,200 Одам да се добие нов - 1455 01:07:59,200 --> 01:08:15,380 1456 01:08:15,380 --> 01:08:19,689 е да се создаде низа со покажувачи, низа на совети. 1457 01:08:19,689 --> 01:08:20,580 OK. 1458 01:08:20,580 --> 01:08:24,180 Секоја идеја или сугестија што тип на овој совети треба да биде? 1459 01:08:24,180 --> 01:08:26,290 Маркус? 1460 01:08:26,290 --> 01:08:27,250 >> Публика: покажувачи да - 1461 01:08:27,250 --> 01:08:28,609 >> ЈАСОН Hirschhorn: Затоа што изјави поврзана листа, па - 1462 01:08:28,609 --> 01:08:29,520 >> Публика: Јазол совети? 1463 01:08:29,520 --> 01:08:30,670 >> ЈАСОН Hirschhorn: Јазол совети. 1464 01:08:30,670 --> 01:08:32,830 Ако работите во нашата поврзани листа се јазли, тогаш тие 1465 01:08:32,830 --> 01:08:34,370 треба да биде јазол совети. 1466 01:08:34,370 --> 01:08:35,939 И она што тие се изедначи првично? 1467 01:08:35,939 --> 01:08:36,990 >> Публика: Нулев. 1468 01:08:36,990 --> 01:08:38,240 >> ЈАСОН Hirschhorn: Нулев. 1469 01:08:38,240 --> 01:08:44,540 1470 01:08:44,540 --> 01:08:46,080 Така што нашите празни работа. 1471 01:08:46,080 --> 01:08:47,170 Тиква враќа нула. 1472 01:08:47,170 --> 01:08:48,569 Што ќе правиме? 1473 01:08:48,569 --> 01:08:49,609 Прошетка мене преку неа? 1474 01:08:49,609 --> 01:08:50,810 Всушност, Маркус веќе ми го дадоа. 1475 01:08:50,810 --> 01:08:52,439 Некој друг ме прошетка низ него. 1476 01:08:52,439 --> 01:08:54,760 Што правиме кога сме - 1477 01:08:54,760 --> 01:08:56,609 ова изгледа многу слични на она што бевме само прави. 1478 01:08:56,609 --> 01:08:57,396 AVI. 1479 01:08:57,396 --> 01:08:59,090 >> ПУБЛИКАТА: Одам да се погоди. 1480 01:08:59,090 --> 01:09:01,250 Па кога ќе добие слатки. 1481 01:09:01,250 --> 01:09:01,640 >> ЈАСОН Hirschhorn: Да. 1482 01:09:01,640 --> 01:09:03,120 Па, добивме тиква. 1483 01:09:03,120 --> 01:09:03,870 Ајде да се нашите првиот. 1484 01:09:03,870 --> 01:09:04,324 Добивме тиква. 1485 01:09:04,324 --> 01:09:04,779 >> Публика: OK. 1486 01:09:04,779 --> 01:09:05,880 Тиква враќа нула. 1487 01:09:05,880 --> 01:09:08,770 Па ќе го стави во тоа. 1488 01:09:08,770 --> 01:09:10,810 Или, всушност, ќе го стави во поврзана листа. 1489 01:09:10,810 --> 01:09:13,550 >> ЈАСОН Hirschhorn: Како да ја го ставив во поврзаните листа? 1490 01:09:13,550 --> 01:09:15,479 >> ПУБЛИКАТА: О, вистинските синтакса? 1491 01:09:15,479 --> 01:09:16,240 >> ЈАСОН Hirschhorn: Само прошетка - 1492 01:09:16,240 --> 01:09:16,740 кажам повеќе. 1493 01:09:16,740 --> 01:09:19,310 Што ќе правиме? 1494 01:09:19,310 --> 01:09:22,100 >> Публика: Вие само внесете како на првиот јазол. 1495 01:09:22,100 --> 01:09:22,675 >> ЈАСОН Hirschhorn: OK. 1496 01:09:22,675 --> 01:09:29,069 Па ние имаме јазол, тиква. 1497 01:09:29,069 --> 01:09:31,560 И сега како можам да го внесете? 1498 01:09:31,560 --> 01:09:34,590 1499 01:09:34,590 --> 01:09:37,090 >> ПУБЛИКАТА: Вие додели до покажувач. 1500 01:09:37,090 --> 01:09:37,970 >> ЈАСОН Hirschhorn: Кој покажувачот? 1501 01:09:37,970 --> 01:09:39,620 >> Публика: покажувачот на нула. 1502 01:09:39,620 --> 01:09:41,420 >> ЈАСОН Hirschhorn: Значи, каде Дали оваа точка? 1503 01:09:41,420 --> 01:09:42,810 >> Публика: на нула во моментов. 1504 01:09:42,810 --> 01:09:43,529 >> ЈАСОН Hirschhorn: Па, тоа е покажувајќи на нула. 1505 01:09:43,529 --> 01:09:44,499 Но јас сум ставање во тиква. 1506 01:09:44,499 --> 01:09:46,053 Па каде што треба да се истакне? 1507 01:09:46,053 --> 01:09:46,880 >> Публика: Да тиква. 1508 01:09:46,880 --> 01:09:47,399 >> ЈАСОН Hirschhorn: Да тиква. 1509 01:09:47,399 --> 01:09:48,760 Токму така. 1510 01:09:48,760 --> 01:09:50,010 Значи ова укажува на тиква. 1511 01:09:50,010 --> 01:09:52,500 1512 01:09:52,500 --> 01:09:54,250 И каде го прави ова покажувачот во тиква точка? 1513 01:09:54,250 --> 01:09:57,986 1514 01:09:57,986 --> 01:09:58,340 Да 1515 01:09:58,340 --> 01:09:58,590 >> Публика: Нулев. 1516 01:09:58,590 --> 01:09:59,210 >> ЈАСОН Hirschhorn: на нула. 1517 01:09:59,210 --> 01:10:00,460 Токму така. 1518 01:10:00,460 --> 01:10:03,570 1519 01:10:03,570 --> 01:10:05,140 Па ние само вметнува нешто во поврзаните листа. 1520 01:10:05,140 --> 01:10:07,210 Ние само напишав овој код за да го направите тоа. 1521 01:10:07,210 --> 01:10:09,520 Речиси ние речиси ја доби целосно разбиена. 1522 01:10:09,520 --> 01:10:10,790 Сега ние вметнете слатки. 1523 01:10:10,790 --> 01:10:13,480 Нашите бонбони исто така, оди до нула. 1524 01:10:13,480 --> 01:10:16,100 Па што ќе правиме со бонбони? 1525 01:10:16,100 --> 01:10:18,790 >> ПУБЛИКАТА: Тоа зависи од тоа дали или не се обидуваме да го средиме. 1526 01:10:18,790 --> 01:10:19,640 >> ЈАСОН Hirschhorn: Тоа е точно во право. 1527 01:10:19,640 --> 01:10:21,070 Тоа зависи од тоа дали или не ние се обидуваме да го средиме. 1528 01:10:21,070 --> 01:10:22,660 Ајде да се претпостави ние не сме ќе го решите. 1529 01:10:22,660 --> 01:10:24,880 >> Публика: Па тогаш, како што зборувавме пред, тоа е најобично само да го стави 1530 01:10:24,880 --> 01:10:28,590 правото на почетокот, така покажувачот од нула поени за слатки. 1531 01:10:28,590 --> 01:10:29,020 >> ЈАСОН Hirschhorn: OK. 1532 01:10:29,020 --> 01:10:29,380 Држи се. 1533 01:10:29,380 --> 01:10:30,630 Дозволете ми да се создаде бонбони во право тука. 1534 01:10:30,630 --> 01:10:34,030 1535 01:10:34,030 --> 01:10:35,150 Значи ова покажувачот - 1536 01:10:35,150 --> 01:10:37,590 >> Публика: Да, сега треба се укажува на слатки. 1537 01:10:37,590 --> 01:10:40,580 Тогаш имаат покажувачот од бонбони точка за тиква. 1538 01:10:40,580 --> 01:10:43,140 1539 01:10:43,140 --> 01:10:44,560 >> ЈАСОН Hirschhorn: Како тоа? 1540 01:10:44,560 --> 01:10:47,380 И да каже добивме уште нешто да се на сајтот на нула? 1541 01:10:47,380 --> 01:10:48,660 >> ПУБЛИКАТА: Па, ти само го прават истото? 1542 01:10:48,660 --> 01:10:50,290 >> ЈАСОН Hirschhorn: Дали истото. 1543 01:10:50,290 --> 01:10:53,700 Значи во овој случај, ако ние не сакате да го задржите тоа тоа сортирани 1544 01:10:53,700 --> 01:10:55,270 звучи прилично едноставна. 1545 01:10:55,270 --> 01:10:59,920 Земаме покажувачот во indice дадена од страна на нашите хеш функција. 1546 01:10:59,920 --> 01:11:03,830 Имаме таа точка на нашиот нов јазол. 1547 01:11:03,830 --> 01:11:07,830 А потоа што и да беше посочувајќи претходно - 1548 01:11:07,830 --> 01:11:10,620 во овој случај нула, во Вториот случај тиква - 1549 01:11:10,620 --> 01:11:15,310 дека, што и да се покажува кон претходно, ние го додадете во следната на 1550 01:11:15,310 --> 01:11:17,810 нашиот нов јазол. 1551 01:11:17,810 --> 01:11:19,650 Ние сме вметнување нешто на почетокот. 1552 01:11:19,650 --> 01:11:22,900 Всушност, тоа е многу поедноставно отколку обидувајќи се да се задржи на списокот подредени. 1553 01:11:22,900 --> 01:11:25,340 Но, повторно, пребарување ќе биде повеќе комплицирано тука. 1554 01:11:25,340 --> 01:11:28,300 Ние секогаш ќе мора да одат до крај. 1555 01:11:28,300 --> 01:11:29,650 >> OK. 1556 01:11:29,650 --> 01:11:32,750 Какви прашања во врска одделни врзувањето? 1557 01:11:32,750 --> 01:11:34,690 Како тоа функционира? 1558 01:11:34,690 --> 01:11:35,820 Ве молиме прашајте ги сега. 1559 01:11:35,820 --> 01:11:39,260 Јас навистина сакате да бидете сигурни дека сите се разбере ова, пред да главата. 1560 01:11:39,260 --> 01:11:48,410 1561 01:11:48,410 --> 01:11:52,060 >> ПУБЛИКАТА: Зошто ви стават тиква и бонбони во иста 1562 01:11:52,060 --> 01:11:54,108 дел од хеш табелата? 1563 01:11:54,108 --> 01:11:55,860 >> ЈАСОН Hirschhorn: Добро прашање. 1564 01:11:55,860 --> 01:11:59,140 Зошто ние ги стави во иста дел од хеш табелата? 1565 01:11:59,140 --> 01:12:03,200 Па, во овој случај нашата hash функција враќа нула за двете од нив. 1566 01:12:03,200 --> 01:12:05,310 Па тие треба да одат на indice нула бидејќи тоа е местото каде што ние ќе треба да 1567 01:12:05,310 --> 01:12:07,420 изгледа за нив, ако ние некогаш сакате да ги гледам нагоре. 1568 01:12:07,420 --> 01:12:11,750 Повторно, со линеарна љубопитство пристап ние не ќе ги стави двете на нула. 1569 01:12:11,750 --> 01:12:13,900 Но во одделни синџир пристап, ние ќе ги стави двете на нула 1570 01:12:13,900 --> 01:12:16,620 а потоа се создаде листа исклучување на нула. 1571 01:12:16,620 --> 01:12:20,140 >> И ние не сакаме да ја пребришете тиква едноставно за тоа, бидејќи тогаш ние ќе 1572 01:12:20,140 --> 01:12:21,860 претпостави дека тиква беше никогаш не е вметната. 1573 01:12:21,860 --> 01:12:25,230 Ако ние само задржи едно нешто во локација која ќе биде лошо. 1574 01:12:25,230 --> 01:12:28,590 Тогаш нема да има Можност за нас некогаш - 1575 01:12:28,590 --> 01:12:31,660 ако ние некогаш сте имале дупликат, тогаш ние само ќе ги избрише нашата почетна вредност. 1576 01:12:31,660 --> 01:12:34,090 Па тоа е зошто тоа го правиме овој пристап. 1577 01:12:34,090 --> 01:12:36,580 Или тоа е причината зошто сме го одбрале - но повторно, ние избра посебен врзувањето пристап, 1578 01:12:36,580 --> 01:12:39,670 кои има многу други пристапи би можело да одберете. 1579 01:12:39,670 --> 01:12:41,185 Дали тоа одговори на вашето прашање? 1580 01:12:41,185 --> 01:12:41,660 >> OK. 1581 01:12:41,660 --> 01:12:42,910 Карлос. 1582 01:12:42,910 --> 01:12:46,130 1583 01:12:46,130 --> 01:12:47,720 Линеарни љубопитство би вклучиле - 1584 01:12:47,720 --> 01:12:51,913 ако најдеме судир на нула, а ние ќе изгледа во следните самото место да се види дали 1585 01:12:51,913 --> 01:12:54,310 беше отворен и го стави таму. 1586 01:12:54,310 --> 01:12:57,320 А потоа ние со нетрпение во текот на следните спорт и види дали тоа беше отворен и го стави таму. 1587 01:12:57,320 --> 01:12:59,780 Па ние се најдат на следниот достапни отворена на самото место и го стави таму. 1588 01:12:59,780 --> 01:13:02,580 1589 01:13:02,580 --> 01:13:03,890 Било какви други прашања? 1590 01:13:03,890 --> 01:13:05,370 Да, Ави. 1591 01:13:05,370 --> 01:13:07,490 >> Публика: Како се надоврзе на тоа, што сакаш да кажеш со следната точка? 1592 01:13:07,490 --> 01:13:10,250 Во хеш табелата или во поврзана листа. 1593 01:13:10,250 --> 01:13:12,100 >> ЈАСОН Hirschhorn: За линеарни програмирање, нема поврзани листи. 1594 01:13:12,100 --> 01:13:13,400 Следниот место на хаш табелата. 1595 01:13:13,400 --> 01:13:13,820 >> Публика: OK. 1596 01:13:13,820 --> 01:13:17,570 Па хеш табелата ќе биде иницијализиран на големината - 1597 01:13:17,570 --> 01:13:19,560 како на бројот на жици дека сте биле вметнувањето? 1598 01:13:19,560 --> 01:13:22,170 >> ЈАСОН Hirschhorn: Дали си сакате да биде навистина голема. 1599 01:13:22,170 --> 01:13:23,910 Да. 1600 01:13:23,910 --> 01:13:27,900 Тука е слика на она што ние само привлече на табла. 1601 01:13:27,900 --> 01:13:29,470 Повторно, имаме судир во право тука. 1602 01:13:29,470 --> 01:13:30,710 на 152. 1603 01:13:30,710 --> 01:13:33,570 И ќе видите ние направивме поврзан листа надвор од неа. 1604 01:13:33,570 --> 01:13:38,200 1605 01:13:38,200 --> 01:13:41,850 Повторно, хеш табелата посебен врзувањето пристап не е оној што го 1606 01:13:41,850 --> 01:13:45,590 треба да ги преземат за проблемите во собата шест, но е оној кој многу 1607 01:13:45,590 --> 01:13:47,100 Учениците имаат тенденција да се земе. 1608 01:13:47,100 --> 01:13:51,140 Па за тоа белешка, нека зборуваат кратко пред ние главата надвор за проблемот шест, 1609 01:13:51,140 --> 01:13:52,160 а потоа јас ќе го споделам една приказна со вас. 1610 01:13:52,160 --> 01:13:55,120 Имаме три минути. 1611 01:13:55,120 --> 01:13:55,750 >> Проблемот постави шест. 1612 01:13:55,750 --> 01:13:57,790 Ќе има четири функции - 1613 01:13:57,790 --> 01:14:02,430 оптоварување, проверете, големина, и бриши. 1614 01:14:02,430 --> 01:14:03,380 Оптоварување - 1615 01:14:03,380 --> 01:14:07,120 Па, ние сме се случува над оптоварување само сега. 1616 01:14:07,120 --> 01:14:09,330 Ние привлече оптоварување на табла. 1617 01:14:09,330 --> 01:14:13,230 А ние дури и почна кодирање многу вметнување во поврзана листа. 1618 01:14:13,230 --> 01:14:18,020 Значи оптоварување не е многу повеќе од она што ние само се прави. 1619 01:14:18,020 --> 01:14:21,070 >> Проверете е еднаш имате нешто вчитан. 1620 01:14:21,070 --> 01:14:22,580 Тоа е истиот процес како овој. 1621 01:14:22,580 --> 01:14:26,845 Исто првите два дела, каде што ќе фрли нешто во hash функција 1622 01:14:26,845 --> 01:14:29,190 и да добијат својата вредност. 1623 01:14:29,190 --> 01:14:30,700 Но сега ние не сме го вметнување. 1624 01:14:30,700 --> 01:14:33,350 Сега сме во потрага по него. 1625 01:14:33,350 --> 01:14:37,130 Имам примерок код напишан за изнаоѓање нешто во поврзана листа. 1626 01:14:37,130 --> 01:14:38,250 Јас ве охрабруваме да се практикуваат тоа. 1627 01:14:38,250 --> 01:14:43,000 Но интуитивно наоѓање на нешто е прилично слична на вметнување нешто. 1628 01:14:43,000 --> 01:14:46,540 Всушност, ние нацртал цртеж од изнаоѓање нешто во поврзана листа, движејќи се 1629 01:14:46,540 --> 01:14:48,910 преку додека не стигнав до крај. 1630 01:14:48,910 --> 01:14:52,430 И ако стигнав до крај и не може да најде тоа, тогаш тоа не е таму. 1631 01:14:52,430 --> 01:14:55,400 Па тоа е чек, во суштина. 1632 01:14:55,400 --> 01:14:57,030 >> Следна е големината. 1633 01:14:57,030 --> 01:14:57,910 Ајде да го прескокнете големина. 1634 01:14:57,910 --> 01:15:00,040 Конечно ќе се исклучи. 1635 01:15:00,040 --> 01:15:02,890 Бриши е една не сме подготвени на табла или кодиран уште. 1636 01:15:02,890 --> 01:15:05,990 Но јас ве охрабруваме да се обидат кодирање тоа во нашиот примерок поврзана листа пример. 1637 01:15:05,990 --> 01:15:11,440 Но бриши интуитивно е слична на бесплатно - 1638 01:15:11,440 --> 01:15:14,010 или сакам да кажам е сличен да се провери. 1639 01:15:14,010 --> 01:15:17,350 Освен за сега секој пат кога ќе си оди преку, вие не сте едноставно проверка за да 1640 01:15:17,350 --> 01:15:19,090 види, ако имате вашата вредност таму. 1641 01:15:19,090 --> 01:15:22,490 Но ти си земајќи тој јазол и ослободувајќи го, во суштина. 1642 01:15:22,490 --> 01:15:23,610 Тоа е она што бриши ве прашува да се направи. 1643 01:15:23,610 --> 01:15:24,670 Слободен сè што сте malloced. 1644 01:15:24,670 --> 01:15:27,480 Па ти си минува низ цела листа повторно, да оди преку целиот хаш 1645 01:15:27,480 --> 01:15:27,760 маса повторно. 1646 01:15:27,760 --> 01:15:29,240 Овој пат не се провери за да го видиш она што е таму. 1647 01:15:29,240 --> 01:15:31,080 Само бесплатно она што е таму. 1648 01:15:31,080 --> 01:15:33,260 >> И конечно големина. 1649 01:15:33,260 --> 01:15:34,350 Големина треба да се спроведува. 1650 01:15:34,350 --> 01:15:35,590 Ако не се имплементира големина - 1651 01:15:35,590 --> 01:15:36,250 Јас ќе го кажам вака. 1652 01:15:36,250 --> 01:15:39,740 Ако не се имплементира големина во точно една линија на код вклучувајќи 1653 01:15:39,740 --> 01:15:43,760 врати изјава, вие сте прави големина погрешно. 1654 01:15:43,760 --> 01:15:47,170 Така осигурајте се дека големината, за целосна дизајн поени, сте го прави тоа во точно една 1655 01:15:47,170 --> 01:15:49,970 линија код, вклучувајќи враќање изјава. 1656 01:15:49,970 --> 01:15:52,450 >> И не се спакуваат сепак, Akchar. 1657 01:15:52,450 --> 01:15:53,700 Желни брада. 1658 01:15:53,700 --> 01:15:55,820 1659 01:15:55,820 --> 01:16:01,300 Сакав да ви кажам благодарам момци за доаѓање до секција. 1660 01:16:01,300 --> 01:16:02,550 Имаат среќен Ноќта на вештерките. 1661 01:16:02,550 --> 01:16:05,300 1662 01:16:05,300 --> 01:16:05,960 Ова е мојот костимот. 1663 01:16:05,960 --> 01:16:08,850 Јас ќе се носи оваа во четвртокот ако ти се види на работното време. 1664 01:16:08,850 --> 01:16:14,640 И ако сте љубопитни за некои повеќе позадина како на оваа носија, се чувствуваат 1665 01:16:14,640 --> 01:16:19,135 слободно да се провери од 2011 секција за една приказна за тоа зошто јас сум 1666 01:16:19,135 --> 01:16:20,900 облечен тиква костимот. 1667 01:16:20,900 --> 01:16:23,680 И тоа е една тажна приказна. 1668 01:16:23,680 --> 01:16:27,050 Така бидете сигурни дека имате некои ткива во близина. 1669 01:16:27,050 --> 01:16:28,680 Но на тоа, ако имате било какви прашања јас ќе се држи околу 1670 01:16:28,680 --> 01:16:29,960 надвор по секција. 1671 01:16:29,960 --> 01:16:31,510 Со среќа на проблемот постави шест. 1672 01:16:31,510 --> 01:16:33,540 И како и секогаш, ако имате било какви прашања, дозволете ми да знам. 1673 01:16:33,540 --> 01:16:35,584