JASON Hirschhorn: hər kəs xoş gəlmisiniz Bölmə Yeddi. Biz əlbəttə həftə yeddi var. Bu qarşıdakı axşamı Halloween mən am bir balqabaq kimi Giydirdiğim. Mən artıq əyilmək və qoymaq bilmədi Mən niyə mənim ayaqqabı, belə ki, yalnız corab geymək. Mən də altında bir şey qalıcı deyiləm bu bu, mən onu edə bilməz sizə yayındırır. Mən ki, əvvəlcədən üzr istəyirik. Siz təsəvvür etmək lazım deyil nə olacaq. Mən boksçular qalıcı edirəm. Belə ki, bütün yaxşı. Mən deyiləm nə haqqında bir uzun hekayə var bir balqabaq kimi geyimli, lakin mən gedirəm sonra bu bölməsində saxlaya Mən başlamaq istəyirəm, çünki. Biz maraqlı çox şey var Bu həftə üzərində getmək üçün. Onların əksəriyyəti bu birbaşa aid həftə problem set, imla. Biz bağlı üzərində gedən olacaq siyahıları və hash masalar bütün bölüm üçün. Mən hər həftə bir siyahısını bu siyahı qoymaq Siz ilə sizə yardım etmək üçün resurslar bu kursu üzrə material. Bir zərər və ya əgər bəzi axtarır Daha çox məlumat, biri oldu bu resurslar. Yenə pset6 imla edir, bu həftəki pset. Və bu da həvəsləndirir və mən bəzi digər istifadə etmək, təşviq ehtiyatları xüsusilə bu pset üçün. Xüsusilə, üç etdik ekranda listelenen - biz ilə tanış olmuşdur etdiyiniz gdb, və artıq bir müddət üçün istifadə edir bu həftə çox faydalı olacaq. Mən burada qablaşdırılmış. Amma zaman C çalışırıq, həmişə gdb üçün istifadə edilməlidir proqramları debug. Bu həftə də valgrind. Heç valgrind nə bilir? Auditoriya: Bu yaddaş sızıntıları üçün yoxlayır? JASON Hirschhorn: Valgrind yaddaş sızıntıları üçün yoxlayır. Belə ki, əgər siz malloc bir şey sizin proqram, yaddaş üçün xahiş edirik. Proqram sonunda, siz var Siz hər şeyi pulsuz yazmaq geri yaddaş vermək malloced. Əgər sonunda pulsuz yazmaq və yoxsa Proqram bir nəticəyə gəlir, hər şey avtomatik olacaq azad etmək lazımdır. Və kiçik proqramlar üçün, bu ki, böyük bir müqavilə. Amma uzun çalışan yazılı edirsinizsə çıxmaq deyil ki, proqramı, mütləq, dəqiqə və ya a bir neçə saniyə neçə, sonra yaddaş sızması böyük bir şey ola bilər. Belə ki pset6 üçün gözləntimiz odur Siz sıfır yaddaş sızıntıları olacaq Proqram. Yaddaş sızması kontrol, run valgrind və bəzi gözəl verəcəyik çıxış siz olub bildirdiğiniz və ya hər şey pulsuz idi. Biz sonra ilə təcrübə lazımdır Bu gün, inşallah. Nəhayət, fərq əmr. Siz ona oxşar bir şey üçün istifadə Bu peek alət ilə pset5 da. Daxili baxmaq üçün icazə. Siz həmçinin başına çox, fərq istifadə Bu problem spec seçin. Amma siz icazə iki faylları müqayisə. Siz bitmap fayl və müqayisə bilər info bir əməkdaş həll mövzular və pset5 sizin həll əgər Siz onu istifadə seçdi. Fərqləri sizə imkan verir eləcə də, bunu. Siz düzgün cavab müqayisə edə bilərsiniz Sizin cavab üçün müəyyən bu həftə problem və görmək əgər up xətləri və ya görmək Bu səhvlər olduğu. Beləliklə, bu üç yaxşı tools ki, Bu həftə üçün istifadə etməlidir mütləq sizin proqram kontrol Bu üç alətləri ilə bu da dönüş əvvəl Yenə hər həftə qeyd etdiyim kimi, həm - Mənim üçün heç bir əlaqə, müsbət və konstruktiv - saytına baş çekinmeyin Bu slayd altındakı və giriş bu. Mən, həqiqətən, hər hansı bir təşəkkür Bütün Əlaqə. Və mənə xüsusi şeyi verir ki, Mən deyiləm ki yaxşılaşdırılması üçün nə edə bilərsiniz və ya Siz məni istəyirəm ki, yaxşı Mən ürək ki, almaq və davam həqiqətən qulaq asmaq üçün çətin keçir geribildirim. Mən gedirəm vəd edə bilməz hər şey, baxmayaraq ki, bir qalıcı kimi hər həftə kostyum balqabaq. Beləliklə, biz hissəsini sərf edir ikibölməli, dediyim kimi, söhbət bağlı siyahıları və hash masalar, olan Bu birbaşa tətbiq olacaq problem bu həftə müəyyən. Əlaqəli siyahıları biz nisbətən artıq getmək lazımdır biz ədalətli bit sərf etdik, çünki tez vaxt bölməsində artıq gedir. Və belə ki, biz düz nəzərə almaq lazımdır bağlı siyahıları üçün problemlər kodlaşdırma. Və sonra sonunda biz haqqında danışmaq lazımdır bu necə tətbiq masalar hash və həftə problem müəyyən. Siz əvvəl bu kodu gördüm. Bu struct, və müəyyən olunur yeni bir şey bir node çağırıb. Və bir node daxilində tam var burada və bir göstərici var başqa node. Biz əvvəl bu gördüm. Bu üçün gələn edilmişdir İndi bir neçə həftə. Biz olmuşdur etdiyiniz göstəricilərinə birləşdirir imkan olan və structs ilə iş us iki müxtəlif birləşdirmək bir veri növü daxil şeylər. Ekranda gedən bir çox var. Amma bütün nisbətən olmalıdır Sizinlə tanış. Ilk line, biz yeni node elan. Və sonra yeni node daxilində, mən müəyyən bir node-ci ildə tam. Biz bir yapýyorum növbəti line bax printf komanda, amma gri etdik Bu printf komanda həqiqətən çünki mühüm hissəsi burada bu xətt - new_node.n. Dot nə deməkdir? Auditoriya: node gedin və bunun üçün n dəyərini qiymətləndirmək. JASON Hirschhorn: var doğru. Dot n Part daxil deməkdir Bu yeni node. Bu, növbəti line nə edir? Michael. Auditoriya: Bu başqa bir node yaradır ki, yeni node qeyd edəcək. JASON Hirschhorn: Belə ki, deyil yeni node yaratmaq. Bu nə yaradır? Auditoriya: A pointer. JASON Hirschhorn: bir node bir göstərici, burada bu node * tərəfindən göstərilən. Belə ki, bir node bir göstərici yaradır. Və node bu işarə olunur Michael, üçün? Auditoriya: Yeni node? JASON Hirschhorn: New node. Biz etdik, çünki orada işarə bu yeni node-mail verilir. İndi bu istiqamətdə görürük iki müxtəlif yolları eyni şey ifadə. Mən qeyd etmək istəyirdi necə bu iki şey eynidir. İlk olaraq, biz dereference göstərici. Belə ki, biz node getmək. Bu ulduz nə deməkdir var. Biz göstəricilər ilə əvvəl ki, gördük. Ki node gedin. Bu mötərizə var. Və sonra dot operator vasitəsilə daxil olmaq ki, node n element. Belə ki, sintaksis alaraq Biz burada və indi gördüm bir göstərici ilə istifadə. Əlbəttə ki, bu halda məşğul cür olur o parantez yazıyoruz - ki, ulduz və dot. Bu bir az məşğul olur. Belə ki, biz bəzi sintaktik şəkər var. Və burada bu line - ptr_node-> n. Ki, eyni dəqiq şey yoxdur. Belə kodu bu iki xətləri var ekvivalent və edəcəyik eyni şey. Amma mən həmin işarə etmək istədik biz belə başa düşürük hər hansı bir getmək həqiqətən burada bu şey olduğunu dereferencing üçün yalnız sintaktik şəkər göstərici və sonra gedən ki, struct n hissəsidir. Bu slayd haqqında hər hansı bir sualınız? OK. Beləliklə, biz bir neçə ilə getmək olacaq Siz edə bilərsiniz ki, əməliyyatların bağlı siyahıları. A bağlı siyahısı, geri, bir sıra edir bir-birinə işarə edən qovşaqlarının. Və biz ümumiyyətlə bir göstərici ilə başlamaq adlı baş, ümumiyyətlə, ki, işarə Siyahıda ilk şey. Burada ilk line Belə ki, biz ilk bizim orijinal L var. Belə ki, bir şey hesab edə bilər - bu Burada mətn kimi hesab edə bilər biz saxlanılır sonra yalnız pointer bir yerdə ki, bal ilk element. Və bu bağlı siyahısında biz dörd qovşaqlarının var. Hər node böyük bir qutusu edir. Böyük daxilində böyük qutusu qutusu tam hissəsidir. Və sonra biz bir pointer hissəsi var. Bu qutular tərtib deyil miqyaslı necə böyük, çünki bayt bir tam? Necə böyük indi? Dörd. Və bir göstərici necə böyük var? Dörd. Belə ki, həqiqətən, biz cəlb etmək olsaydı Bu həm qutuları miqyaslı eyni ölçüdə olacaq. Bu halda, biz daxil etmək istəyirəm bağlı siyahısına daxil bir şey. Belə ki, biz daxil olduğunuz burada edə bilərsiniz Beş Biz vasitəsilə axır bağlı siyahı, tapa yerləşir beş gedir, və sonra daxil. Ki qırmaq və gidelim bir az daha yavaş-yavaş. Mən board qeyd etmək gedirəm. Belə ki, biz node var beş ki, biz mallocs da yaratdıq. Niyə hamı gülür? Yalnız söylüyorum. OK. Belə ki, biz beş malloced etdik. Biz bu node yaratdıq başqa bir yerdə. Biz getmək üçün hazır var. Biz qarşısında da başlayacaq iki ilə siyahısı. Və biz daxil etmək istəyirəm sıralanır moda. Beləliklə, biz iki görmək və biz qoymaq istəyirsinizsə biz görəndə beş, biz nə etməliyəm bizdən daha az bir şey? Nə? Biz bu beş əlavə etmək istəyirsiniz bağlı siyahı, sıralanır saxlanılması. Biz sayı iki görürük. Beləliklə, biz nə etməliyəm? Marcus? Auditoriya: göstərici zəng növbəti node. JASON Hirschhorn: Və nə üçün biz növbəti bir getmək? Auditoriya: Bu Çünki Siyahıda növbəti node. Və biz yalnız digər yer bilirik. JASON Hirschhorn: Və beş böyükdür iki çox, xüsusilə. Biz sorted saxlamaq istəyirəm, çünki. Belə ki, beş Iki daha böyükdür. Belə ki, biz növbəti bir hərəkət. İndi biz dörd çatmaq. Biz dörd çatdıqda və nə olur? Beş dörd daha böyükdür. Beləliklə, biz davam. İndi biz altı istəyirik. Və biz altı nə görürük? Bəli, Carlos? Auditoriya: Six beş daha böyükdür. JASON Hirschhorn: Six edir beş daha çox. Biz istədiyiniz Belə ki, beş daxil etmək üçün. Lakin unutmayın ki, əgər biz Yalnız burada bir göstərici var - Bu ki, bizim əlavə göstərici siyahısını traversing. Və biz altı işarə edirik. Biz nə itirib etdik altı əvvəl gəlir. Beləliklə, biz bir şey daxil etmək istəyirsinizsə onu saxlamaq bu siyahı, çeşidlənir biz yəqin ki, neçə göstəricilərinə lazımdır? Auditoriya: iki. JASON HIRSCHORN: iki. Biri cari track saxlamaq üçün bir və bir track saxlamaq üçün Əvvəlki. Bu yalnız bir story bağlı siyahı deyil. Bu, yalnız bir istiqamətdə gedir. Biz ikiqat bağlı siyahı varsa, harada hər şey şey işarə bu və ondan əvvəlki şey sonra biz bunu lazım deyil. Lakin bu halda biz itirmək istəmirəm halda bizdən əvvəl gəlib nə track biz beş haradasa daxil etmək lazımdır ortada. Biz doqquz daxil olub. Zaman nə baş verəcək biz səkkiz var? Auditoriya: Siz istədiyiniz ki null point almaq. Əvəzində null nöqtəsi olan var ediyorum bir element əlavə və sonra üçün bu doqquz qeyd. JASON HIRSCHORN: Exactly. Beləliklə, biz səkkiz almaq. Biz siyahısı sonuna çatmaq çünki Bu null işarə edir. İndi əvəzinə olan bu işarə null biz yeni node qeyd var. Və biz də göstərici müəyyən null yeni node. Heç bir sualınız varmı daxil haqqında? Haqqında nə vecimə deyil əgər sıralaması siyahısını saxlamaq? Auditoriya: onu qalmaq başlayan və ya sonu. JASON HIRSCHORN: onu qalmaq əvvəlində və ya sonunda. Hansı bir nə etmək lazımdır? Bobby? Niyə sonu? Auditoriya: Çünki başlanğıcı artıq doldurulur. JASON HIRSCHORN: OK. Başlanğıcı artıq doldurulur. Kim Bobby qarşı mübahisə etmək istəyir. Marcus. Auditoriya: Yaxşı yəqin ki, istəyirəm başında qalmaq çünki Siz onu qoymaq əgər başqa Siz istədiyiniz son bütün siyahısını axır. JASON HIRSCHORN: Exactly. Biz uzunluğu haqqında düşünür istəyirsinizsə, belə ki, əgər sonunda daxil uzunluğu n olacaq, bu ölçüsü. Daxil olan böyük O uzunluğu nədir başında? Sabit vaxt. Beləliklə, siz saxlanılması haqqında qayğı yoxsa bir şey, yalnız daha yaxşı sıralanır Bu siyahının əvvəlində daxil. Və daimi vaxt edilə bilər. OK. Sonrakı əməliyyat tapmaq, digər olunur - biz axtarış kimi bu ifadə etdik. Amma biz vasitəsilə baxmaq olacaq bir obyekt üçün bağlı siyahı. Siz uşaqlar üçün kod gördük mühazirə əvvəl axtarış. Amma biz sort yalnız ilə bunu daxil, və ya ən azı daxil bir şey sıralanır. Siz vasitəsilə baxmaq, node node gedən, Siz olduğunuzu sayı tapmaq qədər axtarır. Olmaq ne olur siyahısı sonu? Mən doqquz və I arıyorum De siyahının sonuna çatmaq. Nə edəcəyik? Auditoriya: yalan qayıt? JASON HIRSCHORN: yalan qayıt. Biz bunu tapa bilmədi. Siz siyahısı sonuna çatmaq və əgər Siz etdiyiniz sayı tapmadı axtarır, orada deyil. Haqqında hər hansı bir sual tapmaq? Bu bir sorted siyahısı idi, hansı ki bizim axtarış üçün müxtəlif ola? Bəli. Auditoriya: Bu ilk dəyəri tapmaq olardı ki, bir daha çox var Sizin etdiyiniz sonra saxta qayıtmaq. JASON HIRSCHORN: Exactly. Belə ki, bir sorted siyahısı, biz almaq əgər nə daha çox var ki, bir şey biz aradığınız, biz ehtiyac yoxdur siyahısı başa davam. Biz nöqtədə yalan ola bilər biz bunu tapa niyyətində deyilik, çünki. Bu sual indi, biz söhbət etdik olunur sıralanır bağlı siyahıları saxlanılması, çeşidlənməmiş saxlamaq. Ki, siz etdiyiniz bir şey olacaq yəqin ki, düşünmək üçün gedir Əgər kodlaşdırma problem beş müəyyən zaman ayrı-ayrı bir hash masa seçmək chaining yanaşma olan Biz sonra haqqında danışmaq lazımdır. Amma siyahısını saxlamaq üçün dəyər sonra sorted və bəlkə malik ola sürətli axtarış? Və ya tez daxil etmək daha yaxşıdır sonra daimi uzunluğu bir şey, lakin axtarış artıq var? Bu doğru bir tradeoff var ki, siz daha uyğun nə qərar almaq xüsusi problem. Və mütləq bir yox tamamilə düzgün cavab. Amma əlbəttə siz almaq bir qərar var etmək, və yəqin ki, yaxşı müdafiə etmək ki, demək, bir comment və ya iki niyə Siz bir-biri seçdi. Nəhayət, silmə. Biz silmə gördük. Bu axtarış oxşar deyil. Biz element üçün baxmaq. Biz altı silmək çalışdığınız demək. Beləliklə, biz burada altı tapa bilərsiniz. Biz əmin biz etmək ki, bir şey nə işarə edir ki, altı - biz addım görmək kimi aşağı burada iki - altı ehtiyaclarına işarə nə İndi altı keçmək və dəyişdirilə nə altı işarə edir. Biz heç qalan yetim istəmirəm ki, təyin etmək unutmadan ilə siyahısı Əvvəlki göstərici. Və sonra bəzən asılı olaraq, proqram, onlar yalnız lazımdır tamamilə bu node silin. Bəzən qayıtmaq lazımdır Bu node var ki, dəyəri. Belə ki, işləri silmə necə. Hər hansı suallar silmək? Auditoriya: Belə ki, silmək olacaq əgər Bu, yalnız pulsuz istifadə, çünki ehtimalla bu malloced idi? JASON HIRSCHORN: Əgər azad istəyirsinizsə doğru və siz ki, bir şey onu malloced. Biz bu dəyər qayıtmaq istədiyini deyirlər. Biz geri bilər altı və sonra pulsuz bu bu node və zəng pulsuz. Yoxsa biz yəqin ki, ilk pulsuz zəng istədiyiniz və sonra altı qayıtmaq. OK. Belə ki, kodlaşdırma praktiki hərəkət edək. Biz üç funksiyaları kod olacaq. Birinci insert_node adlanır. Belə ki, mən sizə e-poçt ki, kodu var və daha sonra bu seyr etdiyiniz halda Siz linked.c kodunu əldə edə bilərsiniz CS50 saytında. Amma linked.c, bəzi var artıq ki, skelet kodu sizin üçün yazılmışdır. Və sonra bir neçə funksiyaları var yazmaq lazımdır. Birinci biz olacaq insert_node yazın. Və nə insert_node yoxdur bir tam edər. Və siz tam ötürür bir bağlı siyahısına daxil. Və xüsusilə, sizə lazım sıralaması siyahısını saxlamaq üçün kiçik olan böyük üçün. Ayrıca, istəmirəm bir cüt daxil edin. Nəhayət, insert_node bilərsiniz kimi bir bool qaytarır. Belə ki, istifadəçi bildirin ehtimal edirik daxil idi və ya doğru və ya yalan qaytarılması ilə uğurlu. Bu proqramın sonunda - və bu mərhələdə üçün ehtiyac yoxdur bir şey azad narahat. Belə ki, siz yapýyorsun bütün bir tam atır və bir siyahısına daxil daxil. Mən indi sizə soruşuram nə. Yenə linked.c da, siz bütün, skelet kodu. Və siz aşağı doğru görməlisiniz nümunə funksiyası bəyannamə. Lakin, kodlaşdırma daxil davam əvvəl C, Mən getmək üçün təşviq addımlar vasitəsilə biz oldum hər həftə təcrübə. Biz artıq vasitəsilə getdi sonra bu bir şəkil. Belə ki, bəzi anlaşma olmalıdır bu işləri necə. Amma yazmaq tavsiye ederim daxil dalğıc əvvəl bir pseudocode Və biz artıq getmək olacaq bir qrup kimi pseudocode. Və sonra yazdıq dəfə sizin pseudocode və biz yazdıq dəfə bizim bir qrup kimi pseudocode, siz C. kodlaşdırma daxil Rəhbərləri qədər insert_node funksiyası kimi yəqin trickiest edir üç biz yazmaq olacaq, çünki mən bəzi əlavə məhdudiyyətlər əlavə proqramlaşdırma, xüsusi ki, Əgər hər hansı bir daxil fikrində deyilik dublikatları və siyahısı sorted qalmalıdır. Belə ki, bu qeyri-mənasız proqramı Siz kod etmək lazımdır ki,. Və niyə yeddi beş etmirlər dəqiqə yalnız üzərində iş üçün pseudocode və kodu. Və sonra biz başlayacaq bir qrup kimi gedir. Yenə, yalnız hər hansı bir sualınız varsa, əl qaldırmaq və mən ətrafında gəlmək lazımdır. . Biz də ümumiyyətlə bu nə - və ya açıq-aşkar sizə demək deyil insanlar ilə işləyə bilər. Amma təbii ki, mən yüksək təşviq Əgər suallarınız varsa, xahiş siz yanında oturan qonşu və ya hətta kimsə ilə işləmək başqa istəyirsinizsə. Bu fərdi olmaq yoxdur səssiz fəaliyyəti. Bəzi yazı ilə başlamaq edək board pseudocode. Kim mənə ilk xətti verə bilər Bu proqram üçün pseudocode? Bu funksiya, daha - insert_node. Alden? Auditoriya: Mən nə ilk şey idi node və I yeni pointer yaratmaq eyni işarə başlatılmış siyahısı işarə edir ki, bir şey. JASON HIRSCHORN: OK. Belə ki, yeni göstərici yaratmaq edirik siyahısına deyil, node. Auditoriya: Sağ. Bəli. JASON HIRSCHORN: OK. Və sonra biz nə istəyirik? Bundan sonra nə var? Nə node haqqında? Biz bir node yoxdur. Biz yalnız bir dəyəri var. Biz bir node daxil etmək istəyirsinizsə, biz nə biz hətta bilərsiniz əvvəl ilk nə etmək lazımdır O daxil düşünmək? Auditoriya: Oh, sorry. biz bir node üçün yer malloc lazımdır. JASON HIRSCHORN: Əla. Nə edək - OK. Yüksək çata bilməz. OK. Biz aşağı getmək üçün gedir və sonra edirik biz iki sütun istifadə edirik. Mən getmək bilməz - OK. Yeni node yaratmaq. Siz Siyahısına başqa göstərici yarada mövcud kimi və ya sadəcə siyahısını istifadə edə bilərsiniz. Siz, həqiqətən, bunu etmək lazım deyil. Beləliklə, biz yeni node yaratmaq. Böyük. Yəni biz ilk nə var. Növbəti nədir? Auditoriya: gözləyin. Biz indi yeni node yaratmaq və ya olmalıdır biz əmin etmək gözləmək lazımdır node heç bir dublikatları var siyahıda əvvəl biz bunu yaratmaq? JASON HIRSCHORN: Yaxşı sualdır. Sonrakı çünki ki keçirilməsi edək biz yaratmaq olacaq zaman əksəriyyəti yeni node. Belə ki, burada davam edəcəyik. Amma yaxşı bir sual var. Biz bunu yaratmaq və biz tapmaq Əgər bir cüt, nə olmalıdır biz qaytarılması əvvəl bunu? Auditoriya: Bu pulsuz. JASON HIRSCHORN: Bəli. Yəqin ki, onu azad. OK. Biz sonra biz nə etməliyəm yeni node yaratmaq? Annie? Auditoriya: Biz qoymaq node sayı? JASON HIRSCHORN: Exactly. Biz sayı qoymaq - biz kosmik malloc. Mən tərk gedirəm bütün bir xətt kimi. Amma doğru istəyirik. Biz sonra yer malloc və biz daxil sayı qoymaq Biz hətta göstərici bilərsiniz null bir hissəsi. Dəqiq doğru. Və sonra nə sonra? Biz board bu şəkil çəkdi. Beləliklə, biz nə etməliyəm? Auditoriya: Biz siyahı ilə getmək. JASON HIRSCHORN: siyahısını gedin. OK. Və biz hər node üçün nə kontrol yoxdur. Kurt, nə biz yoxlamaq yoxdur hər node üçün? Auditoriya: baxın n dəyər olub ki, node n dəyəri daha böyükdür bizim node. JASON HIRSCHORN: OK. Mən gedirəm - OK, evet. Belə ki, n var - Mən dəyər əgər demək gedirəm Bu node daha sonra nə edəcəyik? Auditoriya: Yaxşı, onda biz daxil doğru əvvəl şey. JASON HIRSCHORN: OK. Belə ki, bu daha çox var əgər, sonra biz daxil etmək istəyirik. Amma biz doğru əvvəl o əlavə etmək istəyirsiniz biz də olmaq lazımdır, çünki track saxlanılması, sonra, əvvəl nə. Belə ki, əvvəl daxil edin. Beləliklə, biz yəqin ki, bir şey buraxılmış əvvəllər haqqında. Biz yəqin ki, saxlanılması lazımdır haqqında neler track. Amma biz orada geri almaq lazımdır. Belə ki, nə dəyəri azdır? Kurt, biz nə edəcəyik dəyəri az deyil? Auditoriya: Sonra yalnız davam Bu son bir halda. JASON HIRSCHORN: Mən ki, istəyirəm. Belə ki, növbəti node getmək. Bu son bir halda - biz yəqin ki, yoxlanılması edirik vəziyyəti baxımından. Lakin Bəli, növbəti node. Və ki, çox aşağı əldə edir belə ki, biz burada hərəkət edəcəyik. Amma əgər - hamı bu edə bilərsiniz? Biz bərabər edirsinizsə biz nə etməliyəm? Dəyəri biz daxil çalışdığınız Əgər Bu node dəyərinə bərabərdir? Bəli? Auditoriya: [işitilemez]. JASON HIRSCHORN: Bəli. Bunu nəzərə alaraq - Marcus doğru deyil. Biz bəlkə edə bilərdi fərqli bir şey. Amma burada, biz onu yaratdıq ki, verilmiş biz azad və sonra qaytarmalıdır. Boy Oh. Ki, daha yaxşıdır? Necə ki? OK. Biz nə sonra pulsuz və [Işitilemez] qayıtmaq? OK. Biz bir şey eksik? Beləliklə, biz track saxlanılır əvvəlki node? Auditoriya: Mən getmək olardı sonra yeni bir node yaratmaq. JASON HIRSCHORN: OK. Belə ki, başında biz yəqin ki, will - Bəli, biz yeni bir pointer yaratmaq bilər əvvəlki node göstərici kimi node və cari node göstərici. Belə ki, burada daxil edək. Yaratmaq cari və əvvəlki qovşaqlarının göstəricilər. Amma biz o göstəricilərinə tənzimləmək edirsiniz? Biz ki, kodu harada etməliyəm? Jeff? Auditoriya: - dəyər şərait? JASON HIRSCHORN: Hansı xüsusi bir? Auditoriya: yalnız qarışıq alıram. Dəyəri, bu node-dən çox olduqda ki, siz getmək istəyirəm ki, demək deyil növbəti node? JASON Hirschhorn: Belə ki, bizim dəyər əgər Bu node dəyəri daha çox. Auditoriya: Bəli, sonra istəyirəm sağ, xətti aşağı daha getmək? JASON Hirschhorn: Right. Beləliklə, biz burada daxil etməyin. Dəyəri, sonra bu node azdırsa biz növbəti node getmək - sonra və ya biz əvvəl daxil edin. Auditoriya: Bu olan, gözləyin node və dəyəri? JASON Hirschhorn: Yaxşı sualdır. Dəyər bu funksiya müəyyən faizlə biz sunulur nə. Belə ki, dəyər biz sunulur sayı. Belə ki, onun dəyəri, bu az olduqda node, biz daxil üçün vaxt lazımdır. Dəyəri, bu node-dən çox olduqda biz növbəti node getmək. Və geri orijinal sual, baxmayaraq ki, burada - Auditoriya: dəyər Əgər Bu node daha. JASON Hirschhorn: Və biz burada nə etməliyəm? Sweet. Bu doğru deyil. Mən yalnız yazmaq üçün gedirəm yeniləmə göstəricilər. Amma bəli, cari ilə siz onu yeniləmə olacaq növbəti bir qeyd. Başqa bir şey itkin etdiyiniz? Mən bu yazın gedirəm gedit daxil kodu. Mən bunu isə, siz bir ola bilər kodlaşdırma işləmək üçün neçə dəqiqə daha Bu C. Mən giriş pseudocode var. Başlamadan əvvəl tez qeyd. Biz edə tamamilə ola bilər bütün bu başa Bu funksiyaların üç. Onlara doğru həllər var Mən sizə uşaqlar üçün e-poçt ki, bölmə sonra və bu olacaq CS50.net yerləşdiriləcək. Mən sizə təşviq etmir bölmələrdə baxmaq getmək. Mən bu cəhd təşviq sizin öz, sonra təcrübə istifadə cavab yoxlamaq üçün problemləri. Bu bütün hazırlanmışdır yaxından aid və riayət nə Siz problem set var. Mən bu təcrübə təşviq yoxdur öz və sonra üçün kodu istifadə cavab yoxlamaq. Mən hash hərəkət etmək istəyirəm, çünki bölməsində bir nöqtədə masalar. Beləliklə, biz bütün vasitəsilə almaq bilər. Amma biz indi kimi çox edəcəyik. OK. Us başlasın. Asam, necə biz yeni node yaratmaq edirsiniz? Auditoriya: Siz * struktur yoxdur. JASON Hirschhorn: Beləliklə, biz burada up var. Oh, sorry. Siz * struct deyirdik. Auditoriya: Və sonra [? cür?] node və ya c node. JASON Hirschhorn: OK. Mən bunu new_node zəng etmək üçün gedirəm belə ki, biz ardıcıl qalmaq bilər. Auditoriya: Və siz qurmaq istəyirik ilk node rəhbərlik. JASON Hirschhorn: OK. Belə ki, indi bu işarə edən - bu hələ yeni node yaratmayıb. Bu yalnız işarə edir Siyahıda ilk node. Nasıl yeni node yaratmaq edirsiniz? Mən yeni node yaratmaq üçün yer lazımdır. Malloc. Və necə böyük? Auditoriya: struct ölçüsü. JASON Hirschhorn: The struct ölçüsü. Və struct nə deyirlər? Auditoriya: Node? JASON Hirschhorn: Node. Belə ki, malloc (sizeof (node)); bizə yer verir. Və bu xətt - bir şey bu xətt düzgün deyil. Bir struct bir pointer new_node mı? Ki, ümumi bir adı var. Bu nədir - node, dəqiq. Bu * Bir node var. Və biz sağ sonra nə etməliyəm biz Asan bir şey malloc? Biz nə ilk şey nədir? Nə iş deyil, əgər? Auditoriya: Oh, yoxlamaq əgər node işarə? JASON Hirschhorn: Exactly. Beləliklə, siz new_node əgər bərabərdir bərabərdir null, biz nə edəcəyik? Bu bool, bu funksiyanı qaytarır. Məhz. Yaxşı görünür. Orada əlavə bir şey? Biz sonunda şeyi əlavə edəcəyik. Amma bu günə qədər yaxşı görünür. Cari və əvvəlki göstəricilərinə yaradın. Michael, bu necə etməliyəm? Auditoriya: Siz olardı bir node etmək *. Siz bir deyil etmək istədiyiniz new_node lakin üçün qovşaqlarının biz artıq var. JASON Hirschhorn: OK. Belə ki, cari node biz istəyirik. Hesab edirəm ki, proq zəng edəcəyik. Bütün hüquqlar. Biz saxlamaq istədiyiniz karar biz bilmək lazımdır iki çünki nə əvvəl var. Nə üçün başlatılmış almaq edirsiniz? Auditoriya: bizim siyahıda Onların dəyəri. JASON Hirschhorn: The Belə ki, nə bizim siyahıda ilk şey? Və ya necə biz bilirik olduğu bizim siyahıda başlayan? Auditoriya: o keçdi deyil funksiyası daxil? JASON Hirschhorn: Right. Bu sağ burada keçildi. Bu funksiyası keçdi belə əgər siyahısı başlamaq, nə biz olmalıdır bərabər cari müəyyən? Auditoriya: Siyahı. JASON Hirschhorn: Siyahı. Dəqiq doğru. İndi ünvanı malikdir bizim siyahısı start. Və nə Əvvəlki haqqında? Auditoriya: Siyahı minus bir? JASON Hirschhorn: var əvvəl heç bir şey. Belə ki, biz heç bir şey demek üçün nə edə bilər? Auditoriya: Null. JASON Hirschhorn: Bəli. Bu yaxşı bir fikir kimi səslənir. Perfect. Təşəkkür edirəm. Siyahısını gedin. Constantine, nə qədər biz gedir siyahısını getmək? Auditoriya: Biz null çatmaq qədər. JASON Hirschhorn: OK. Belə ki, əgər loop üçün isə. Biz nə edirik? Auditoriya: Bəlkə bir loop üçün? JASON Hirschhorn: nin loop üçün nə edək. OK. Auditoriya: Və biz demək - cari göstərici qədər null bərabər deyil. JASON Hirschhorn: Biz bilirik əgər vəziyyəti, necə biz bir loop yaza bilərsiniz bu şərtlə ki, off əsaslanır. Biz bir loop hansı istifadə etməli? Auditoriya: baxmayaraq. JASON Hirschhorn: Bəli. Based çox əhəmiyyət kəsb edir Siz bildirib nə off. Biz yalnız biz getmək istəyirsinizsə edəcəyini yalnız şey bilirik, bunu edəcək bir müddət loop etmək mənada. Cari bərabər null yoxdur, baxmayaraq dəyəri bu node az olduqda. Akshar, mənə bu xətti vermək. Auditoriya: Əgər cari-> n n dəyərindən az. Və ya tərsinə. Ki, bracket keçin. JASON Hirschhorn: Sorry. Auditoriya: bracket dəyişdirin. JASON Hirschhorn: Belə ki, əgər dəyərindən artıq. Ki, ilə confusing çünki Yuxarıda şərh, mən gedirəm. Amma bəli. Bizim dəyəri bu azdırsa node, biz nə edəcəyik? Oh. Mən burada var. Əvvəl daxil edin. OK. Necə ki, biz etməliyəm? Auditoriya: o mənə hələ də varmı? JASON Hirschhorn: Bəli. Auditoriya: Siz - new_node-> gələn. JASON Hirschhorn: Belə ki, nə var ki, bərabər gedir? Auditoriya: Bu bərabər cari olacaq. JASON Hirschhorn: Exactly. Və belə ki, digər - biz yeniləmək başqa nə lazımdır? Auditoriya: keçmiş null bərabər yoxlayın. JASON Hirschhorn: prev varsa - əgər prev null bərabərdir. Auditoriya: Bu gedən deməkdir müdiri olmaq üçün. JASON Hirschhorn: Deməkdir Bu baş olmaq var. Beləliklə biz nə etməliyəm? Auditoriya: Biz baş yoxdur new_node bərabərdir. JASON Hirschhorn: Head new_node bərabərdir. Və niyə siyahı, burada baş? Auditoriya: başçısı qlobal Çünki başlanğıc yeri olan dəyişən,. JASON Hirschhorn: Sweet. OK. Və - Auditoriya: Sonra başqa yoxdur prev> Növbəti new_node bərabərdir. Və sonra doğru qayıtmaq. JASON Hirschhorn: Harada biz new_node son qoydu? Auditoriya: Mən - Mən başlanğıc seçin. JASON Hirschhorn: Belə ki, nə line? Auditoriya: sonra bəyanat Məlum əgər yoxlanılması. JASON Hirschhorn: Right here? Auditoriya: Mən istədiyiniz new_node-> n dəyərinə bərabərdir. JASON Hirschhorn: yaxşı səslənir. Yəqin ki, bu mənada edir - biz deyil biz nəyi siyahısı bilmək lazımdır biz yalnız məşğul olduğunuz çünki bir siyahısı ilə. Belə ki, daha yaxşı bir funksiyası bəyannamə Bu yalnız bu xilas edir tamamilə və yalnız daxil baş daxil bir dəyər. Biz hətta bilmək lazım deyil biz daxil olduğunuz siyahısı Amma indi üçün davam edəcək sonra yenilənməsi sonra onu dəyişdirmək slaydlar və Kodu. Belə ki, indi yaxşı görünür. Əgər dəyər - bu xətt edə bilər? Varsa - Nuhun, burada nə edirsiniz. Auditoriya: dəyər Əgər n Curr-> daha - JASON Hirschhorn: necə biz növbəti node getmək? Auditoriya: Curr-> n edir new_node bərabər. JASON Hirschhorn: Belə n edir struct hansı hissəsi? Tam. Və new_node bir node bir göstəricisidir. Beləliklə, biz proq hansı hissəsi yeniləmək lazımdır? Deyil n, onda digər hissəsi nədir? Nuh digər hissəsi budur. Auditoriya: Oh, gələcək. JASON Hirschhorn: Next, dəqiq. Məhz. Next doğru biridir. Və biz başqa nə lazımdır , Nuh yeniləmək üçün? Auditoriya: The göstəricilər. JASON Hirschhorn: Belə ki, biz cari yeniləndi. Auditoriya: Əvvəlki-> gələn. JASON Hirschhorn: Bəli. OK, biz fasilə lazımdır. Burada kim bizə kömək edə bilər? Manu, biz nə etməliyik? Auditoriya: Siz qurmaq üçün var bu proq-> gələn bərabər. Amma əvvəlki line əvvəl bunu. JASON Hirschhorn: OK. Başqa bir şey? Akshar. Auditoriya: Mən sizə etdiyiniz düşünmürəm Növbəti proq-> dəyişdirmək üçün nəzərdə. Mən sizə Curr bərabərdir üçün nəzərdə etdiyiniz düşünürsünüz Curr-> növbəti node getmək yanında. JASON Hirschhorn: Belə sorry, harada? Nə line On? Bu xətt? Auditoriya: Bəli. Etmək Curr Növbəti Curr-> bərabərdir. JASON Hirschhorn: Belə ki, doğru cari çünki bir node göstərici. Və biz onu növbəti qeyd etmək istəyirəm Hal-hazırda əldə nə node işarə etdi. Curr özü növbəti var. Amma biz əgər curr.next yeniləmək üçün, biz faktiki qeyd yenilənməsi olunacaq özü deyil, bu pointer işarə edilmişdir. Bu xətti, baxmayaraq. Avi? Auditoriya: Əvvəlki-> gələn proq bərabərdir. JASON Hirschhorn: Belə ki, yenə, əgər prev a bir node pointer, prev-> gələn nədir node faktiki göstərici. Belə ki, bu yenilənməsi olunacaq Curr bir node göstərici. Biz yeniləmək istəmirəm bir node bir göstərici. Biz əvvəlki yeniləmək istəyirəm. Belə ki, necə edə bilərəm? Auditoriya: Bu yalnız prev olardı. JASON Hirschhorn: Right. Prev bir node bir göstəricisidir. İndi biz bir onu dəyişən edirik bir node yeni göstərici. OK us aşağı hərəkət edək. Nəhayət, bu son vəziyyəti. Jeff, biz burada nə etməliyəm? Auditoriya: dəyər Əgər Curr-> n bərabər. JASON Hirschhorn: Sorry. Allah mənim Oh. Nə? Value == Curr-> n. Nə edəcəyik? Auditoriya: Siz bizim new_node azad istədiyiniz, və sonra saxta qayıtmaq ediyorum. JASON Hirschhorn: Bu nə bu günə qədər yazıblar. Heç bir şey yoxdur biz əvvəl əlavə? OK. Nin cəhd edək. Control son çata bilər qeyri-etibarsız funksiyası. Avi, nə olub? Auditoriya: Siz geri qoymaq ehtimal edilir isə loop kənarda doğru? JASON Hirschhorn: Mən bilmirəm. Siz məni istəyirsiniz? Auditoriya: ağla etməyin. No JASON Hirschhorn: Akshar? Auditoriya: Mən sizə demək düşünürəm sonunda geri yalan qoymaq isə loop. JASON Hirschhorn: Belə ki, Siz getmək istəyirsiniz? Auditoriya: isə loop xaricində kimi. Belə ki, o deməkdir ki, isə loop çıxmaq əgər Siz son əldə etdik ki heç bir şey baş. JASON Hirschhorn: OK. Beləliklə, biz burada nə etməliyəm? Auditoriya: Siz yalan qayıtmaq orada həmçinin. JASON Hirschhorn: Oh, biz həm yerlərdə bunu? Auditoriya: Bəli. JASON Hirschhorn: OK. Biz getmək lazımdır? Allah mənim Oh. Üzgünüm. Mən ekran üçün üzr istəyirik. Bu cür bizə həyata freaking oldu. Belə bir seçim seçin. Zero, kodu başına, proqram fit. Bir şey edər. Nin üç daxil edək. The insert uğurlu deyil. Mən çap gedirəm. Mən heç bir şey yoxdur. OK. Bəlkə yalnız bir fluke idi. Bir daxil edin. Uğurlu deyil. OK. Nin həqiqətən tez gdb vasitəsilə run edək gedir nə kontrol. Və gdb saxla. / Adı üçün proqram gdb bizi olur. Bir çox idarə etmək deyilmi? Flashing? Yəqin ki. Gözlərinizi bağlayın və bəzi dərin almaq Əgər yorğun almaq əgər nəfəs buna baxaraq. Mən gdb edirəm. Gdb mən nə ilk şey nədir? Biz anlamaq üçün var nə burada neler. Baxaq. Biz rəqəm altı dəqiqə var neler həyata. Əsas ayırın. Və sonra mən nə etməliyəm? Carlos? Run. OK. Nin bir seçim seçin bildirin. Və N nə edir? Next. Bəli. Auditoriya: siz qeyd mi - Siz rəhbəri idi ki, demədim başında null başlatılmış. Amma siz OK idi düşündüm. JASON Hirschhorn: Gidelim - nin baxaq gdb, sonra geri getmək lazımdır. Əgər siz artıq var kimi səslənir neler haqqında bəzi fikirlər. Beləliklə, biz bir şey əlavə etmək istəyirəm. OK. Biz daxil etdik. Bir int daxil edin. Biz üç daxil olacaq. Və sonra mən bu xətt edirəm. Necə mən ayıklama başlamaq getmək yoxdur daxil funksiyası məlum? Allah mənim Oh. Bir çox var. Ki, bir çox həyata freaking olunur? Auditoriya: Oh, o, vəfat. JASON Hirschhorn: Mən yalnız onu çıxarmışlar. OK. Auditoriya: Bəlkə də var tel digər sonu. JASON Hirschhorn: Wow. Beləliklə, alt xətt - nə demək idi? Auditoriya: Mən texniki istehza Bu sinif çətinliklər. JASON Hirschhorn: Bilirəm. Yalnız əgər mən bir hissəsi üzərində nəzarət var idi. [Işitilemez] Bu böyük səslənir. Niyə uşaqlar haqqında düşünür başlamaq deyil biz səhv edə bilərdi, və biz geri 90 saniyə olacaq. Avica, mən necə getmək üçün xahiş gedirəm onu debug daxilində insert_node. Biz son off sol harada, belə deyil. Necə insert_node daxili getmək yoxdur, Avica, neler yoxlamaq? Nə gdb komanda? Break daxilində məni deyil. Marquise bilir? Auditoriya: Nə? JASON Hirschhorn nə gdb komanda Mən bu funksiyası daxilində getmək üçün istifadə? Auditoriya: Addım? JASON Hirschhorn: via addım Me inside edir ki, S.. OK. New_node bir yer mallocing. Bütün onun gedən kimi görünür. Nin new_node yoxlamaq edək. Bəzi yaddaş ünvanı var. Yoxlamaq edək - bütün doğru deyil. Belə ki, burada hər şey görünür düzgün iş. Auditoriya: fərqi nədir P və ekran arasında? JASON Hirschhorn: P çap üçün dayanır. Və belə ki, nə xahiş edirik və bu arasında fərq? Bu halda, heç bir şey. Amma ümumiyyətlə var bəzi fərqlər. Və siz gdb dərslik baxmaq lazımdır. Lakin bu halda, heç bir şey. Biz, baxmayaraq ki, çap istifadə edirlər, çünki biz daha çox nə etmək lazım deyil bir dəyər çap. OK. Belə ki, biz, bizim kodu xətti 80 var siyahısına bərabər node * proq qəbulu. Us proq çap edək. Bu siyahı bərabərdir. Sweet. Gözləyin. Bu bir şey bərabərdir. Bu doğru görünmür. Orada getmək. Bu gdb, sağ, çünki əgər siz bu etdiyiniz xətt var hələ icra deyil. Beləliklə, siz həqiqətən yazın lazımdır xətti icra yanında onun nəticələrini görən əvvəl. Belə ki, burada biz. Biz yalnız bu xətt icra, Əvvəlki null bərabərdir. Belə ki, yenə biz əvvəlki çap əgər biz qəribə bir şey görmək deyil. Amma biz həqiqətən ki, icra əgər line, sonra baxarıq ki line işləmişdir ki,. Beləliklə, biz proq var. , Həm də yaxşı. Sağ? İndi biz burada bu xətt istəyirik. Curr bərabər null deyil isə. Yaxşı, Curr bərabər nə edir? Biz yalnız null bərabər gördüm. Biz onu çap. Mən bir daha onu çap edəcəyik. Belə ki, isə loop icra gedir? Auditoriya: Xeyr JASON Hirschhorn: Mən yazdığınız zaman ki, line, biz bütün yol atladı bax dibinə, yalan qaytarın. Və sonra biz yalan qayıtmaq olacaq və proqram geri və gördük kimi nəhayət, çap, daxil uğurlu deyil. Belə ki, heç nə hər hansı bir fikir var biz bu düzeltmek üçün nə etmək lazımdır? Mən görmək qədər gözləyin gedirəm əlində bir neçə qalxmaq. Biz bu icra etməyib. Unutmayın, bu ilk idi Biz bunu şey. Mən bir neçə etmək niyyətində deyiləm. Mən bir neçə gedirəm. Bir neçə iki deməkdir. Mən artıq iki gözləmək lazımdır. İlk durub, Curr, default null bərabərdir tərəfindən. Bu loop yalnız icra Curr null deyil. Belə ki, necə bu ətrafında əldə edə bilərsiniz? Mən üç əlləri görmək. Mən artıq üç gözləmək lazımdır. Marcus, siz nə düşünürsünüz? Auditoriya: Yaxşı, siz ehtiyac varsa , bir dəfə daha icra yalnız bir do-isə loop dəyişdirmək. JASON Hirschhorn: OK. Ki, baxmayaraq ki, bizim problemi həll edəcək? Auditoriya: Bu halda heç bir çünki siyahısı boş olması. Beləliklə siz yəqin ki, yalnız əlavə etmək lazımdır bir bəyanat ki, əgər loop çıxışları sonra sonunda olmalıdır siz qeyd olan siyahısı, yalnız onu əlavə edə bilərsiniz. JASON Hirschhorn: Mən ki, istəyirəm. Ki, hissi verir. Loop çıxışları varsa - burada yalan qayıtmaq lazımdır, çünki. Belə ki, loop çıxışları, onda biz istəyirik bəlkə siyahısına sonu və ya heç bir şey var, əgər bir siyahı başlamaq Bu, hansı sonuna kimi eyni. Belə ki, indi biz daxil etmək istəyirəm burada bir şey. Belə ki, necə kodu, Marcus görünür? Auditoriya: Əgər siz artıq node var, əgər malloced, yalnız deyə bilər new_node-> gələn null çünki bərabərdir Bu sonunda olmalıdır. Və ya new_node-> gələn null bərabərdir. JASON Hirschhorn: OK. Üzr istəyirik. New_node-> gələn null bərabərdir biz sonunda istəyirik, çünki. Ki, bu da qoymaq deyil Necə biz siyahısına qoymaq edirsiniz? Sağ. Yalnız bərabər qəbulu var. No necə, həqiqətən, siyahısına qoymaq? Işarə edərək nə siyahısı sonu? Auditoriya: Head. JASON Hirschhorn: Bağışlayın? Auditoriya: Baş işarə edir siyahısı sonuna. JASON Hirschhorn: heç bir şey var, varsa siyahısı, baş işarə edir siyahısı sonu. Belə ki, üçün işləmək lazımdır ilk durub. Bir neçə var nə haqqında, əgər siyahıda şeyi? Biz qurmaq istəmirik Than new_node bərabər rəhbərlik. Nə biz orada nə istəyirsiniz? Bəli? Yəqin ki, əvvəlki. Ki, işləyəcək? Əvvəlki yalnız Xatırladaq ki, bir node bir göstərici. Və əvvəlki bir yerli dəyişir. Belə ki, bu xətt bir yerli dəyişən müəyyən edəcək, , əvvəlki bərabər və ya Bu yeni node işarə. Bu, həqiqətən onu qoymaq olmaz Bizim siyahıda olsa. Necə ki, bizim siyahıda qoymaq edirsiniz? Akchar? Auditoriya: Mən sizə edirəm cari növbəti-> yoxdur. JASON Hirschhorn: OK. Curr-> gələn. Belə ki, yenə biz aşağı olduğunuz yeganə səbəbi budur ki, nə bərabər cari edir? Auditoriya: null Bərabər. JASON Hirschhorn: Və nə biz növbəti null-> əgər olur? Biz nə almaq olur? Biz bir seqmentasiya günah almaq lazımdır. Auditoriya: Do Curr null bərabərdir. JASON Hirschhorn: Bu eyni şey Önceki kimi, baxmayaraq ki, var, çünki biz müəyyən edirik yerli dəyişən Bu yeni node bərabər. Bizim şəkil geri edək bir şey daxil. Biz sonunda daxil olduğunuz demək siyahısı, burada belə. Biz ki, bir cari göstərici var null işarə və bir əvvəlki point ki, 8 işarə edir. Belə ki, nə biz Avi, yeniləmək lazımdır? Auditoriya: Previous-> gələn? JASON Hirschhorn: Previous-> gələn nə biz yeniləmək istəyirəm, çünki ki, həqiqətən onu daxil olacaq siyahının sonu. Biz hələ, baxmayaraq ki, bir səhv var biz daxil olacaq ki,. Ki, səhv nədir? Bəli? Auditoriya: Bu geri olacaq Bu halda yalan? JASON Hirschhorn: Oh, edir yalan qayıtmaq olacaq. Amma başqa bir səhv var. Beləliklə, biz doğru geri qoymaq lazımdır. Auditoriya: edirmi əvvəlki hələ bərabər siyahısı üst null? JASON Hirschhorn: Belə əvvəlki hələ çox əvvəlində null bərabərdir. Belə ki, necə ki, artıq əldə edə bilərsiniz? Bəli? Auditoriya: Mən sizə bir çek edə bilər bu halda isə loop görmək əvvəl boş siyahısı. JASON Hirschhorn: OK. Belə ki, burada gedək. Bir çek etməyin. Varsa - Auditoriya: Belə ki, baş bərabərdir null bərabərdir. JASON Hirschhorn: Əgər baş bərabərdir null bərabərdir - Bu boş siyahısı ki, əgər bizə lazımdır. Və sonra siz Auditoriya: nə baş yeni bərabərdir. JASON Hirschhorn: Head new_node bərabərdir? Və başqa nə biz nə etmək lazımdır? Auditoriya: Və sonra doğru qayıtmaq. JASON Hirschhorn: Not olduqca. Biz bir addım itkin edirik. Auditoriya: new_node növbəti null qeyd etmək var. JASON Hirschhorn: Məhz, Alden. Və sonra biz doğru qayıtmaq bilər. OK. Amma bu hələ şeyi etmək üçün yaxşı bir fikirdir siyahısı sonunda, sağ? Bütün hüquqlar. Biz hələ həqiqətən almaq bilər siyahısı sonuna. Biz etdiyiniz əgər bu kodu gözəl siyahısı son və bəzi var siyahıda şeyi? Sağ? Biz hələ Marcus fikrim yoxdur, çünki. Biz bu loop çıxmaq ola bilər, çünki biz siyahısına sonunda istəyirik. Belə ki, biz hələ də bu istəyirik burada aşağı kod? Auditoriya: Bəli. JASON Hirschhorn: Bəli. Və biz bu dəyişdirmək lazımdır? True. Ki, səs yaxşı hər kəs üçün bu günə qədər? Kimsə Yox Mu hər hansı bir - Avi, siz əlavə bir şey var? Auditoriya: Xeyr JASON Hirschhorn: OK. Beləliklə, biz dəyişikliklər bir neçə etdik. Biz əvvəl bu çek etdik boş siyahısı üçün getdi. Beləliklə, biz boş siyahısı qayğı etdik. Və burada biz daxil qayğı siyahısı sonunda bir şey. Belə ki, bu isə loop götürülməsi kimi görünür arasında şeyi qayğı, haradasa siyahısında əgər şeylər siyahısında var. OK. Us yenidən bu proqramı run edək. Uğurlu deyil. Auditoriya: Siz onu etməyib. JASON Hirschhorn: Oh, Mən bunu etməyib. Yaxşı point, Michael. Nin əlaqəli etmək əlavə edək. Line 87 bir səhv var. Line 87. Alden, bu mənə verdi xətt idi. Nə oldu? Auditoriya: Bu null olmalıdır. JASON Hirschhorn: Əla. Məhz hüququ. Bu null olmalıdır. Yenə edək. Tərtib edir. OK. Nin üç daxil edək. Daxil uğurlu oldu. Onu çap edək. Oh, yalnız biz yoxlamaq bilər. Amma biz görülən deyil hələ funksiyası çap. Nin başqa bir şey daxil edək. Biz nə daxil olmalıdır? Auditoriya: Seven. JASON Hirschhorn: Seven? Auditoriya: Bəli. JASON Hirschhorn: Biz San günah var. Beləliklə, biz bir var, lakin biz aydın iki ala bilmir. Bu 5:07 edir. Beləliklə, biz bu debug bilər üç dəqiqə. Amma burada bizi tərk gedirəm və masalar hash hərəkət. Ancaq yenə də, bu kodu cavablar Mən bir az sizə e-poçt. Biz buna çox yaxındır. Mən anlamaq üçün təşviq nə burada gedən və bunu düzeltmek edir. Mən sizə bu kodu e-poçt göndereceğiz plus həll yaxşı - sonra yəqin ki, həll. Ilk bu kodu. Mən biz əvvəl nə etmək istədiyiniz digər şey Salonun biz bir şey azad deyil, var. Mən sizə göstərmək istəyirəm nə valgrind kimi görünür. Biz valgrind sərhədləri run əgər Bizim proqram haqqında. / bağlıdır. Yenə də, bu slayd görə, biz bir növü ilə valgrind run lazımdır bu halda seçim, - Sızması kontrol = tam. Belə ki, valgrind yazmaq bildirin - Sızması kontrol = tam. Belə ki, bu valgrind davam edəcək Bizim proqram haqqında. İndi proqram həqiqətən çalışır. Beləliklə, biz yalnız kimi run olacaq əvvəl daxil bir şey qoymaq Mən üç qoymaq üçün gedirəm. Ki, işləyir. Mən bir şey qoymaq üçün cəhd etmək niyyətində deyiləm biz olacaq başqa, çünki bu halda bir seg saxta almaq. Mən yalnız çıxmaq üçün gedirəm. İndi burada aşağı görmək sızma və yığın xülasə. Bu yaxşı şeylər var Siz kontrol etmək istəyirəm. Belə ki, yığın xülasə - o deyir ki, istifadə Çıxışda - bir blok səkkiz bayt. Ki, bir blok edir node biz malloced. Michael, bir node səkkiz əvvəl bildirib bu tam var sokması, çünki və göstərici. Belə ki, bizim node var. Və sonra biz malloc istifadə edib yeddi dəfə və biz azad bir şey altı dəfə. Amma biz pulsuz çağırıb heç vaxt, mən yoxdur Bu söhbət nə fikir. Amma bu demək kifayətdir ki, zaman proqram çalışır, malloc çağrıldığını Bəzi yerlərdə ki, biz narahat ehtiyac yoxdur. Belə ki, malloc yəqin adlanırdı bəzi yerlərdə. Biz narahat ehtiyac yoxdur. Amma bu həqiqətən bizə edir. Bu ilk line us edir. Biz ki, blok ayrıldı. Və ki, burada edə bilərsiniz sızma xülasə. Still müyəssər - bir blok səkkiz bayt. Ki, yaddaş deməkdir - ki, yaddaş sızan var. Konkret itirdi - yaxşı bir şey üçün itirilmiş olunur. Ümumiyyətlə, siz olacaq orada bir şey görmək. Hələ müyəssər ümumiyyətlə olduğu Siz lazımdır harada, şeyi görəcəksiniz nə code olmalıdır görmək üçün baxmaq azad ancaq azad unuttum var. Və sonra bu, belə deyil, əgər biz pulsuz hər şeyi əgər, biz kontrol edə bilərsiniz. Yalnız proqram run edək bir şey qoyaraq deyil. Siz çıxış istifadə burada görəcəksiniz - sıfır blokları sıfır bayt. Yəni biz sol heç bir şey idi deməkdir Bu proqram zaman tərk. Belə ki, pset6 dönüş əvvəl, valgrind run və əmin yoxdur etmək hər hansı bir yaddaş proqram sızması. Siz valgrind ilə hər hansı bir sualınız varsa, çatmaq üçün çekinmeyin. Amma bu onu necə istifadə edir. Çox sadə - Siz görmek çıxış istifadə var - Hər hansı bir blok hər hansı bir bytes. Beləliklə, biz insert node iş idi. Mən burada iki digər funksiyaları var idi - qovşaqlarının və pulsuz qovşaqlarının çap. Yenə bu ki, funksiyaları siz təcrübə üçün yaxşı olacaq onlar sizə yalnız kömək edəcək, çünki bu nümunə təlimlər, həm də problemin müəyyən. Onlar hər şeyi olduqca yaxından xəritəsi Siz nə olacaq problem müəyyən. Amma əmin etmək istəyirəm biz hər şeyə toxunmaq. Və hash masalar da vacibdir biz bölməsində bu işle həftə - və ya problem set. Belə ki, biz bölmə bitirmək olacaq hash masalar söhbət. Fark Əgər mən bir az hash table. Yəni biz söhbət etdiyiniz nə deyil Lakin, haqqında. Biz müxtəlif gedir hash masalar növü. Və onun əsas, bir hash masa bir çox bir şey deyil array plus bir hash funksiyası. Biz yalnız bir bit üçün danışmaq olacaq hamı nə anlayır etmək hash funksiyası var. Və mən ki, indi söyləyirəm iki şeyi daha heç bir şey - bir sıra və bir hash funksiyası. Və burada addımlar vasitəsilə bu fəaliyyət göstərir. Bizim array var. Bizim funksiyası var. Xüsusilə, hash funksiyaları lazımdır Bu şeyi bir neçə etmək. Mən xüsusi danışmaq üçün gedirəm bu problem müəyyən. Bu yəqin ki, olacaq simli almaq. Və nə geri olacaq? Nə data type? Alden? Sizin hash funksiyası qayıtmaq? Tam. Belə ki, bu nə hash edir masa ibarətdir - serialın şəklində bir masa və bir hash funksiyası. Necə işləyir? Bu üç addımlar çalışır. Biz bir əsas verir. Bu halda, biz bir string verəcəyik. Biz addım bir başına hash funksiyası zəng əsas və biz bir dəyər almaq. Xüsusilə, biz demək lazımdır biz bir tam almaq. Ki, tam, çox xüsusi var ki, tam ola bilər nə məhdudiyyətlər. Bu, məsələn, bizim array ölçüsü üç edir. Belə ki, tam nə nömrələri ola bilər. Üçün etibarlı dəyərlər aralığında nədir ki, tam, bu qaytarılması növü funksiyası hash? Zero, bir və iki. Hash funksiyası point etmək serialda yer anlamaq bizim əsas gedir yerləşir. Yalnız üç mümkün var burada yerləri - sıfır, bir, ya iki. Belə ki, bu funksiya daha yaxşı qaytarılması sıfır, bir, ya iki. Bu array bəzi etibarlı indice. Və sonra, qaytarır harada asılı olaraq açıq orada array bilərsiniz dəyəri bracket. Biz əsas qoymaq harada var. Beləliklə, biz balqabaq atmaq, Biz sıfır çıxmaq. Array bracket 0, biz balqabaq qoymaq. Biz bir çıxmaq, pişiklər atmaq. Biz bir pişik qoymaq. Biz hörümçək qoydu. Biz iki çıxmaq. Biz array bracket iki at hörümçək qoydu. Bu, belə gözəl olardı bu kimi çalışmışdır. Amma təəssüf ki, biz görəcəksiniz kimi Bu bir az daha mürəkkəb var. Biz orada hər hansı bir sualınız almaq əvvəl bu əsas bir hash masa set-up? Bu, məhz bir resim deyil biz board çəkdi nə. Amma bəri biz, board onu çəkdi bunun getmək niyyətində deyiləm. Əsasən düymələri, sehrli qara qutusu - və ya bu halda, cürə qutusu - Bir hash funksiyası buketler onlara qoyur. Bu misalda biz istəyirik ad qoyulması deyil. Biz bağlı telefon qoyulması edirik bucket adı sayı. Amma çox yaxşı bilər yalnız bucket adını qoydu. Bu nə yalnız bir şəkil biz board çəkdi. Biz baxmayaraq, potensial pitfalls var. Və iki xüsusi var Mən artıq getmək istəyirəm ki, slaydlar. Birinci haqqında bir hash funksiyası. Belə ki, sual nə yaxşı hash funksiyası edir? Mən iki cavab vermək. Bu ilk deterministic var ki. Hash funksiyaları kontekstində, Bu nə deməkdir? Bəli? Auditoriya: Bu tapa bilərsiniz daimi vaxt index? JASON Hirschhorn: Bu Bu nə deməkdir deyil. Amma yaxşı bir tahmin var. Başqa heç bir tahmin var Bu nə deməkdir? Yaxşı bir hash funksiyası deterministic edir? Annie? Auditoriya: əsas yalnız eşlenen bilər ki, hash cədvəldə bir yerə. JASON Hirschhorn: var doğru. Siz balqabaq qoymaq hər zaman, həmişə sıfır qaytarır. Siz balqabaq və hash qoymaq əgər funksiyası sıfır qaytarır, lakin var bir şey qaytarılması ehtimalı sıfır başqa böyük - belə ki, bəlkə bəzən bir qayıda bilər və ya iki digər dəfə - yaxşı bir hash funksiyası deyil. Siz doğru edirik. Sizin hash funksiyası qayıtmaq lazımdır Bu halda eyni dəqiq tam, eyni dəqiq string. Bəlkə eyni dəqiq tam qaytarır eyni dəqiq simli üçün asılı olmayaraq kapitallaşma. Lakin bu halda o, hələ də var deterministic çünki çox şeylər eyni dəyər üzərində eşlenen olunur. Ki, gözəl. Kimi uzun yalnız var bir giriş üçün çıxdı. OK. İkinci odur ki, bu etibarlı göstəriciləri qaytarır. Biz əvvəllər gündəmə gətirdi. Bu hash funksiyası - boy oh - bir hash funksiyası olmalıdır etibarlı göstəriciləri qayıtmaq. Belə demək - nin bu misal geri gedək. Mənim hash funksiyası sayar sözü məktublar. Bu hash funksiyası var. Və tam qaytarır. Mən söz var Belə ki, bu bir geri olacaq. Və burada A qoymaq olacaq. Mən söz yarasa qoymaq əgər? Bu üç geri olacaq. Harada bat getmək edir? Uyğun deyil. Amma bu, haradasa getmək lazımdır. Bu, bütün sonra, mənim hash table, və hər şey bir yerdə getmək lazımdır. Belə ki, burada bat getmək lazımdır? Hər hansı bir fikir? Guesses? Yaxşı guesses? Auditoriya: Zero. JASON Hirschhorn: Niyə sıfır? Auditoriya: Çünki üç modulo üç sıfır? JASON Hirschhorn: Üç modulo üç sıfır. Böyük bir tahmin, ki, doğru deyil. Belə ki, bu halda olmalıdır yəqin ki, sıfır getmək. Belə ki, yaxşı bir şəkildə təmin etmək üçün bu hash funksiyası yalnız etibarlı göstəriciləri qaytarır masa ölçüsü ilə modulunu üçün. Siz nə bu yekunları modulunu varsa üç, həmişə almaq olacaq sıfır, bir, və iki arasında bir şey. Bu həmişə yeddi qaytarır, və əgər həmişə üç modulunu, siz həmişə eyni şey almaq üçün gedir. Belə ki, hələ deterministic var Siz modulunu əgər. Amma təmin edəcək ki, siz bir şey almaq heç vaxt - yalnış sənaye. Ümumiyyətlə, bu modulo baş verməlidir Sizin hash funksiyası daxilində. Belə ki, bu barədə narahat ehtiyac yoxdur. Siz yalnız təmin edə bilər bu düzgün indice edir. Bu hər hansı bir sual potensial tələ? OK. Və biz gedin. Sonrakı potensial tələ, və Bu böyük biridir. Nə əgər iki düymələri xəritəsi eyni dəyəri? Belə ki, bu idarə etmək üçün iki yol var. Birinci xətti adlanır Mən ki, yoxlamağa artıq getmək niyyətində deyil. Amma ilə tanış olmalıdır necə ki, işləyir və nə deyil. Mən artıq getmək üçün gedirəm ikinci ki, bir çox biridir, çünki insanlar yəqin ki, həlledici sona çatacaq onların problem set istifadə etmək. Əlbəttə ki, yoxdur. Amma problem dəsti, bir çox insanlar üçün bir hash masa yaratmaq üçün seçə edirlər həyata keçirilməsi üçün ayrı zəncirləmə ilə onların lüğət. Belə ki, bu nə deməkdir artıq getmək olacaq bir hash masa yaratmaq üçün ayrı-ayrı chaining. Mən balqabaq qoymaq. Bu sıfır qaytarır. Mən burada balqabaq qoymaq. Sonra qoymaq - başqa Halloween temalı şey nədir? Auditoriya: Candy. JASON Hirschhorn: Candy! Bu, böyük bir var. Mən konfet, və konfet qoymaq da mənə sıfır verir. Mən nə etməliyəm? Hər hansı bir fikir? Bütün növ bilirik, çünki ayrı nə chaining edir. Belə ki, hər hansı bir fikir nə? Bəli. Auditoriya: string verilməsi əslində hash cədvəldə. JASON Hirschhorn: Biz gedirik burada yaxşı fikir cəlb edir. OK. Auditoriya: hashtable var [Işitilemez] işarə edən göstərici bir siyahının başında. Və sonra balqabaq ilk dəyəri var ki bağlı siyahı və konfet ola ki bağlı siyahı ikinci dəyər. JASON Hirschhorn: OK. Marcus ki, görkəmli idi. Mən ki, qırmaq gedirəm. Marcus nə deyib deyil balqabaq üzerine. Ki, pis olardı. Başqa bir yerdə konfet qoymaq etməyin. Biz sıfır həm onları qoymaq olacaq. Amma biz ilə məşğul olacaq tərəfindən sıfır onlara qoyaraq sıfır siyahısını yaratmaq. Və biz bir siyahısını yaratmaq olacaq sıfıra eşlenen ki, hər şey. Və biz yaratmaq öyrənildi ən yaxşı yolu inkişaf və shrink bilər ki, bir siyahı dinamik ərzində deyil başqa array. Belə bir çox ölçülü array. Amma yalnız bir bağlı siyahısını yaratmaq üçün. Belə ki, nə o, təklif - Mən yeni almaq üçün gedirəm - , göstəricilər ilə bir sıra yaratmaq göstəricilər bir sıra. OK. Hər hansı bir fikir və ya ipucu nə növü Bu göstəricilər olmalıdır? Marcus? Auditoriya: üçün Pointers - JASON Hirschhorn: siz Çünki bir bağlı siyahı, belə davam etdi - Auditoriya: Node göstəricilərinə? JASON Hirschhorn: Node göstəricilər. Əgər bizim bağlı olan hər şey siyahı qovşaqlarının sonra onlar node göstəricilərinə olmalıdır. Onlar ilkin nə bərabər edirsiniz? Auditoriya: Null. JASON Hirschhorn: Null. Belə ki, bizim boş şey var. Balqabaq qaytarır sıfır. Nə edəcəyik? Onun vasitəsilə mənə gəzmək? Əslində, Marcus artıq mənə verdi. Başqası onun vasitəsilə mənə gəzmək. Biz nə biz - Bu çox oxşar görünür biz yalnız nə etdiklərinizi. Avi. Auditoriya: Mən bir tahmin etmək gedirəm. Beləliklə, siz konfet almaq zaman. JASON Hirschhorn: Bəli. Yaxşı, biz balqabaq var. Bizim ilk əldə edək. Biz balqabaq var. Auditoriya: OK. Balqabaq qaytarır sıfır. Belə ki, qoyun. Və ya, həqiqətən, siz qoyun bağlı siyahısı. JASON Hirschhorn: necə etmək bağlı siyahı qoymaq? Auditoriya: Oh, faktiki syntax? JASON Hirschhorn: Just gəzmək - Daha demək. Nə edəcəyik? Auditoriya: Siz yalnız daxil bu ilk node kimi. JASON Hirschhorn: OK. Belə ki, biz node, balqabaq var. İndi nasıl daxil edirsiniz? Auditoriya: Siz təyin pointer üçün. JASON Hirschhorn: Hansı pointer? Auditoriya: sıfır göstərici. JASON Hirschhorn: Belə ki, Bu point edir? Auditoriya: indi null etmək. JASON Hirschhorn: Yaxşı, Bu null işarə edir. Amma balqabaq qoyulması alıram. Beləliklə, harada qeyd edilməlidir? Auditoriya: balqabaq etmək. JASON Hirschhorn: balqabaq etmək. Məhz. Belə ki, bu balqabaq göstərir. Və bu göstərici yoxdur balqabaq nöqtədə? Qədər Auditoriya: Null. JASON Hirschhorn: null etmək. Məhz. Beləliklə, biz yalnız bir şey daxil bağlı siyahısına daxil. Biz yalnız bunu bu kodu yazdı. Demək olar ki, biz demək olar ki, var tamamilə cadar. İndi biz konfet daxil edin. Bizim konfet də sıfıra gedir. Beləliklə, biz konfet ilə nə etməliyəm? Auditoriya: Bu və ya asılıdır biz bu sort üçün çalışırıq deyil. JASON Hirschhorn: var doğru. Bu asılıdır və ya biz bu sort üçün çalışırıq. Biz deyilik güman edək bu sort üçün gedir. Auditoriya: Yaxşı, sonra biz müzakirə kimi əvvəl, yalnız qoymaq üçün sadə oldu sağ əvvəlində belə göstərici konfet sıfır bal. JASON Hirschhorn: OK. Tutun. Mənə burada konfet yaratmaq imkan verir. Belə ki, bu göstərici - Auditoriya: Bəli, indi olmalıdır konfet işarə etmək. Sonra göstərici olan var balqabaq konfet point. JASON Hirschhorn ki kimi? Və biz başqa almış sıfıra xəritəsi şey? Auditoriya: Bəli, yalnız eyni şey? JASON Hirschhorn: eyni şey. Belə ki, bu halda, əgər biz bunu etməsək onu sıralanır saxlamaq istəyirəm olduqca sadə səslənir. Biz Indice olan göstərici almaq bizim hash funksiyası ilə verilir. Biz yeni node ki, nöqtə var. Və sonra bu işarə edilmişdir nə Əvvəllər - da bu halda null da ikinci halda balqabaq - Bu işarə nə ki, əvvəl, biz növbəti daxil et yeni node. Biz bir şey daxil olduğunuz əvvəlində. Əslində bu çox asandır sıralaması siyahısını saxlamaq üçün çalışırıq. Ancaq yenə də, axtarış olacaq Burada daha çətinləşmişdi. Biz həmişə sonuna getmək lazımdır. OK. Ayrı zəncirləmə haqqında hər hansı bir sualınız? Necə ki, işləyir? İndi xahiş edin. Mən, həqiqətən, əmin bütün etmək istəyirəm biz rəhbərlik əvvəl bu başa düşürük. Auditoriya: Niyə balqabaq qoymaq yoxdur və eyni daxil konfet hash table hissəsi? JASON Hirschhorn: Yaxşı sualdır. Niyə biz eyni onları qoymaq yoxdur hash table hissəsi? Yaxşı, bu halda bizim hash funksiyası returns onların hər ikisi üçün sıfır. Belə ki, onlar indice sıfır getmək lazımdır biz olacaq yerləşir ki, çünki onlara baxmaq əgər biz heç onlara baxmaq istəyirəm. Yenə xətti yoxlamağa yanaşma ilə biz sıfır onlara həm qoymaq deyil. Amma ayrı-ayrı zəncirvari yanaşma, biz sıfır həm onları qoymaq olacaq və sonra sıfır off siyahısını yaratmaq. Və biz balqabaq yazmaq istəmirəm sadəcə ki, sonra biz will çünki balqabaq olduğunu güman daxil heç vaxt. Biz yalnız bir şey saxlamaq pis olacaq ki, yer. Sonra olacaq heç bir Heç bizə şans - biz heç bir cüt idi, onda biz yalnız bizim ilkin dəyəri silmək olardı. Biz bu yanaşma bunu nə ki, var. Biz seçdi niyə və ya var - lakin, yenə biz ayrı-ayrı chaining yanaşma seçdi, bir çox digər yanaşmalar var olan bir seçə bilər. Ki, sual cavab verirmi? OK. Carlos. Linear probing cəlb - biz sıfır bir toqquşma aşkar etdikdə, biz görmək üçün növbəti spot görünür ki, açıq idi və orada qoyun. Və sonra biz növbəti idman baxmaq və açıq idi görmek və orada qoyun. Belə ki, biz növbəti mövcud tapmaq açıq spot və orada qoyun. Hər hansı digər suallar? Bəli, Avi. Auditoriya: o qədər təqib kimi, Siz növbəti spot nə deməkdir? Bu hash table və ya əlaqəli siyahısı. JASON Hirschhorn: xətti üçün proqramlaşdırma, heç bir bağlı siyahıları. Hash masa növbəti spot. Auditoriya: OK. Belə ki, hash table olacaq ölçüsü başlatılmış - strings sayı kimi Siz daxil ki? JASON Hirschhorn: Görsən bu, həqiqətən böyük olmaq istəyirəm. Bəli. Burada biz bir şəkil yalnız board çəkdi. Yenə biz burada bir toqquşma var. 152 at. Və biz yaradılmışdır görəcəksiniz off bir bağlı siyahı. Yenə hash table ayrı-ayrı chaining yanaşma biri deyil problemləri müəyyən etmək üçün etmək altı lakin biridir ki, bir çox tələbələr edirlər. Belə ki qeyd, gəlin danışaq Biz problem altı haqqında rəhbərlik qarşısında və sonra mən sizinlə bir hekayə bölüşmək lazımdır. Biz üç dəqiqə var. Problem altı seçin. Siz dörd funksiyaları var - yük, ölçüsü, və boşaltmaq yoxlayın. Load - yaxşı, biz davam etdik yalnız indi yük artıq. Biz board yük çəkdi. Və biz hətta bir çox kodlaşdırma açılmış bir bağlı siyahısına daxil daxil. Belə ki, yük daha çox deyil biz yalnız bunu etdik nə. Siz bir dəfə Check edir bir şey yükləndi. Bu eyni proses var. Siz atmaq eyni İlk iki hissələri hash funksiyası daxil bir şey və onun dəyərini almaq. Amma indi biz bunu daxil deyilik. İndi biz bunun üçün arıyorsanız. Mən nümunə kodu tapmaq üçün yazılı bir bağlı siyahısında bir şey. Mən təcrübə təşviq. Amma daxilən bir şey tapmaq bir şey daxil olduqca oxşar. Həqiqətən, biz tapmaq bir şəkil çəkdi bir bağlı siyahısında bir şey hərəkət siz sonuna var qədər vasitəsilə. Və sonunda var və ola bilər, əgər onu tapmaq, sonra orada deyil. Belə ki, mahiyyətcə, çek var. Next ölçüsü. Ölçüsü keçmək edək. Nəhayət boşaltmaq var. Boşaltmaq biz tərtib yoxdur biridir board və ya hələ kodlu. Amma mən onu kodlaşdırma cəhd təşviq Örnek bağlı siyahı nümunəsi. Amma daxilən boşaltmaq pulsuz oxşar - və ya demək yoxlamaq üçün eynidir. Siz olacaq indi hər dəfə istisna olmaqla vasitəsilə, sadəcə yoxlanılması deyilik orada sizin dəyəri var, əgər baxın. Amma siz ki, node alaraq və edirik mahiyyətcə, onu azad. Bu boşaltmaq bunu soruşur nə var. Siz malloced etdik pulsuz hər şey. Belə ki, siz bütün siyahısını olacaq yenə bütün hash keçir masa yenidən. Bu dəfə yoxlamaq yoxdur var nə görmək. Just var nə azad. Və nəhayət ölçüsü. Size həyata keçirilməlidir. Siz ölçüsü həyata deyilsə - Mən bu kimi demək lazımdır. Tam ölçüsü həyata olmayan o cümlədən kod bir line şərh qayıtmaq, siz səhv ölçüsü edir. Belə ki, tam dizayn, əmin ölçüsü bal, tam bir edirik o cümlədən kodu line, qaytarılması bəyanat. Və hələ Akchar qablaşdırmaq yoxdur. Can qunduz. Mən sizə uşaqlar təşəkkür demək istəyirdi bölmə gələn. Xoşbəxt Halloween var. Bu, mənim kostyum deyil. Cümə axşamı günü bu qalıcı olacaq Mən ofis saat görmək əgər. Və bir daha merak əgər background bu kostyum kimi hiss 2011 bölmə yoxlamaq üçün pulsuz Mən niyə bir hekayə üçün balqabaq kostyum geyən. Və bir kədərli hekayəsidir. Belə ki, əmin olun yaxın bəzi toxumaların. Amma ki, hər hansı bir varsa Mən ətrafında qalmaq lazımdır suallar kənarda bölmə sonra. Good luck problemi üzrə altı seçin. Və həmişə olduğu kimi, hər hansı bir varsa suallar, Mənə bildirin.