>> 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.