>> JASON Hirschhorn: Sveiki visi į septintajame skirsnyje.
Mes kurso septynių savaitę.
Ir tai būsimi ketvirtadienis yra Helovinas, todėl esu
apsirengęs kaip moliūgų.
Aš negalėjau pasilenkti ir padėkite ant mano batai, tai štai kodėl aš
tiesiog dėvėti kojines.
Aš taip pat nedėvi nieko pagal tai, kad aš negaliu priimti jį išjungti, jei ji
blaško jus.
Atsiprašau iš anksto už tai.
Jums nereikia įsivaizduoti kas vyksta.
Aš dėvėti boksininkų.
Taigi viskas gerai.
>> Turiu ilgesnę istoriją apie tai, kodėl aš apsirengęs kaip moliūgų, bet aš ruošiuosi
išsaugoti, kad vėliau šiame skyriuje nes aš noriu pradėti.
Mes turime daug įdomių dalykų eiti per šią savaitę.
Dauguma iš jų yra tiesiogiai susiję su šiuo savaitės problema rinkinys, rašybos.
Mes ketiname būti vyksta per susijęs sąrašus ir maišos lenteles
už visą skyrių.
Aš įdėti šį sąrašą kiekvieną savaitę, iš sąrašo išteklių jums gali padėti jums su
šio kurso medžiaga.
Jei nuostolingai arba jei ieškote kai daugiau informacijos, patikrinkite vienas iš
šie ištekliai.
>> Vėlgi, pset6 yra rašybos klaidų, šią savaitę pset.
Ir jis taip pat skatina jus, ir aš paskatinti jus, naudoti kai kurių kitų
ištekliai specialiai šiam pset.
Visų pirma, tris aš nurodyta ant ekrano -
gdb, kurį mes buvome susipažinę su ir naudojo, o dabar, yra
bus labai naudinga šią savaitę.
Taigi, aš įdėti, kad čia.
Tačiau, kai jūs dirbate su C, Jūs visada turėtumėte naudoti gdb į
derinti savo programas.
Šią savaitę taip pat Valgrind.
Ar kas nors žino, kas Valgrind daro?
>> PUBLIKA: Jis tikrina, atminties nutekėjimas?
>> JASON Hirschhorn: Valgrind tikrina atminties nutekėjimas.
Taigi, jei jūs malloc kažką savo programa, jūs klausia atminties.
Ne jūsų programos pabaigoje, jūs turite rašyti nemokamai viską, ką
malloced duoti atmintį atgal.
Jei nenorite rašyti be pabaigoje ir jūsų programa daro išvadą,
viskas automatiškai būti išlaisvinti.
Ir jau mažoms programoms, tai ne tai, kad didelis spręsti.
Bet jei rašote nebeveikia programa, kuri neturi mesti,
nebūtinai, per keletą minučių ar pora pora sekundžių, tada atminties nutekėjimas
gali tapti didžiulis spręsti.
>> Taigi pset6, tikimasi, kad turėsite nulis Atminties nutekėjimas su
jūsų programa.
Norėdami patikrinti, ar atminties nutekėjimas, paleisti Valgrind ir duosiu jums keletą gražus
išėjimo leidžia jums žinoti, ar ar viskas buvo nemokamai.
Mes praktiškai su juo vėliau šiandien, tikiuosi.
>> Galiausiai, skirt komanda.
Jūs naudojote kažką panašaus į jį į pset5 su žvilgtelėti įrankis.
Leido jums pažvelgti į vidų.
Taip pat naudojama skirt, taip pat už problema nustatyti spec.
Bet leido jums palyginti du failus.
Galima palyginti su bitmap failo ir info antraštes personalo tirpalu ir
Jūsų sprendimas pset5 jei pasirinkote jį naudoti.
Skirt leis jums tai padaryti, taip pat.
Galite palyginti teisingą atsakymą dėl šios savaitės problema nustatyti jūsų atsakymą
ir pamatyti, jei ji linijos aukštyn arba pamatyti kur klaidos.
>> Taigi tie trys geri įrankiai, jums reikia naudoti šią savaitę, ir
tikrai patikrinti savo programą su šiomis trimis priemonėmis
Prieš įjungdami jį in
Vėlgi, kaip jau minėjau kiekvieną savaitę, jei turite kokių nors atsiliepimų man - tiek
pozityvus ir konstruktyvus -
nedvejodami eikite į svetainę prie šios skaidrės apačioje
ir įėjimo jis ten.
Aš tikrai vertiname bet ir visi atsiliepimai.
Ir jei galite man duoti konkrečius dalykus, Galiu padaryti, siekiant pagerinti arba, kad aš
daro gerai, kad jūs norėtumėte mane toliau, manau, kad į širdį ir
tikrai stengiuosi klausytis Jūsų atsiliepimai.
Aš negaliu pažadėti aš ruošiuosi daryti viskas, nors, pavyzdžiui, dėvėti
moliūgų kostiumas kiekvieną savaitę.
>> Taigi, mes ketiname praleisti didžiąją skyriuje, kaip jau minėjau, kalbame apie
susiję sąrašus ir maišos lenteles, kurios bus tiesiogiai taikomi
problema nustatyti šią savaitę.
Susiję sąrašai mes pereiti per palyginti greitai, nes mes praleido teisingą bitų
laiko vyksta per jį skyriuje.
Ir todėl mes gauti tiesiai į kodavimo problemų susijusių sąrašus.
Ir tada gale mes kalbame apie maišos lenteles ir kaip jie taikomi šios
savaitės problema nustatyti.
>> Jūs matėte šį kodą prieš.
Tai konstrukto, ir ji yra apibrėžti kažkas naujo vadinama mazgas.
Ir viduje mazgas yra sveikasis skaičius čia ir yra rodyklė į
kitas mazgas.
Mes matėme anksčiau.
Tai buvo artėja ir dabar porą savaičių.
Ji sujungia patarimų, kurių mes dirbti su, ir structs, kurios leidžia
mums derinti dviejų skirtingų viskas į vieną duomenų tipą.
>> Yra daug vyksta ekrane.
Bet visa tai turėtų būti gana susipažinęs su Jumis.
Pirmoje eilutėje, mes paskelbti naują mazgas.
Ir tada viduje, kad naujas mazgas, aš nustatyti tame mazge sveikasis skaičius į vieną.
Matome kitą eilutę darau printf komandą, bet aš papilkintas
printf komandą, nes tikrai svarbi yra ši eilutė čia -
new_node.n.
Ką taškas reiškia?
>> PUBLIKA: Eiti į mazgą ir įvertinti n vertę už jį.
>> JASON Hirschhorn: Štai visiškai teisus.
Dot reiškia prieiti N daliai Šios naujos mazgas.
Tai kitą eilutę ką daro?
Michael.
>> PUBLIKA: Tai sukuria kitą mazgą kad bus atkreipti dėmesį į naujas mazgas.
>> JASON Hirschhorn: Taigi jis nėra sukurti naują mazgą.
Jis sukuria ką?
>> PUBLIKA: rodyklę.
>> JASON Hirschhorn: rodyklė į mazgą, kaip nurodyta šio mazgo * čia.
Taigi jis sukuria žymeklį į mazgą.
Ir kuris mazgas ji nukreipta į Michael?
>> PUBLIKA: Naujas mazgas?
>> JASON Hirschhorn: Naujas mazgas.
Ir tai nukreipta ten, nes mes kadangi tai, kad naujas mazgas adresą.
Ir dabar šioje eilutėje matome du skirtingi būdai
išreiškia tą patį.
Ir aš norėjau atkreipti dėmesį, kaip jos du dalykai yra vienodi.
Pirmoje eilutėje, mes dereference rodyklė.
Taigi mes einame į mazgą.
Štai ką ši žvaigždė reiškia.
Mes matėme, kad anksčiau su rodyklėmis.
Eiti į tą mazgą.
Tai skliausteliuose.
Ir tada prieigą per dot operatorius n elementu tame mazge.
>> Taigi, kad manimi atsižvelgiant sintaksę matėme čia ir dabar
naudojant jį su rodykle.
Žinoma, jis gauna natūra užimtas, jei rašote tuos skliaustus -
kad žvaigždė ir taškas.
Ji gauna šiek tiek užimtas.
Taigi, mes turime tam tikrą sintaksinę cukraus.
Ir ši eilutė čia -
ptr_node-> n.
Tai nėra tas pats dalykas.
Taigi, šios dvi eilutes kodo yra lygiaverčiai ir darys
tą patį dalyką.
>> Bet aš norėjau atkreipti tiems, prieš eiti toliau, kad jūs suprantate,
kad tikrai šis dalykas čia yra tiesiog sintaksinis cukrus dereferencing
rodyklė ir tada vyksta n dalis, kad struct.
Bet apie šią skaidrę klausimų?
Gerai.
>> Taigi, mes ketiname eiti per pora veiklos, kad jūs galite padaryti
susiję sąrašus.
Susijęs sąrašas, priminti, yra iš serijos mazgai, kurie nurodo į vienas kitą.
Ir mes paprastai prasideda su rodykle vadinama galva, apskritai, kad atkreipia dėmesį į
pirmas dalykas, sąrašą.
Taigi pirmoje eilutėje čia mes turime originalų L pirmas.
Taigi, kad dalykas, jūs galite galvoti - tai tekstą čia jūs galite galvoti, kaip
tiesiog rodyklė mes saugomi kažkur, kad taškai
į pirmąjį elementą.
Ir šioje susiję sąrašas mes turime keturis mazgus.
Kiekvienas mazgas yra didelis langas.
Didesnis langas viduje didelis laukas yra sveikoji dalis.
Ir tada mes turime rodyklės dalį.
>> Šie langeliai yra nubraižyta ne masto, nes, kaip didelis yra
baitais sveikas?
Kaip didelis dabar?
Keturi.
Ir koks didelis yra žymeklis?
Keturi.
Taigi tikrai, jei mes atkreipti tai masto abu langelius
būtų vienodo dydžio.
Tokiu atveju, mes norime įterpti kažkas į susijusį sąrašą.
Taigi galite pamatyti žemyn čia mes įterpti penkių Mes ėjimas per
susijęs sąrašas, surasti, kur yra penki eina, o tada įkiškite ją.
>> Leiskite pertrauka, kad ir eiti šiek tiek lėčiau.
Aš einu, kad rodytų į laivą.
Taigi, mes turime mazgas penki kad mes sukūrėte mallocs.
Kodėl visi juokiasi?
Juokauju.
Gerai.
Taigi mes malloced penkių.
Mes sukūrėme šį mazgą kažkur kitur.
Mes turime tai pasiruošę eiti.
Mes prasidės priekio mūsų sąraše su dviem.
Ir mes norime įterpti į išrūšiuotų mados.
>> Taigi, jei mes matome du ir mes norime įdėti iš penkių, ką mes darome, kai mes matome,
kažkas mažiau už mus?
Ką?
Mes norime įterpti penkis į šį susijęs sąrašas, laikant jį surūšiuoti.
Matome numeris du.
Taigi, ką mes galime padaryti?
Marcus?
>> PUBLIKA: Call žymiklį į kitą mazgą.
>> JASON Hirschhorn: Ir kodėl mes einame į kitą?
>> PUBLIKA: Kadangi tai kitas mazgas sąraše.
Ir mes tik žinome, kad kitą vietą.
>> JASON Hirschhorn: Penkiese yra didesnis nei du, ypač.
Kadangi mes norime išlaikyti ją surūšiuoti.
Taigi, penki yra didesnis nei du.
Taigi, mes pereiti į kitą.
Ir dabar mes pasiekti keturis.
Ir kas atsitinka, kai mes pasiekti keturis?
>> Penki yra didesnis kaip keturi.
Taigi mes nesustoti.
Ir dabar mes bent šešių.
Ir ką mes matome šeštą?
Taip, Carlos?
>> PUBLIKA: Šeši yra didesnis negu penki.
>> JASON Hirschhorn: Six didesnis negu penki.
Štai kur mes norime įdėti penkių.
Tačiau turėkite omenyje, kad jei mes tik vieną žymeklį čia -
tai yra mūsų papildomas žymeklis, kad tai važiuojantiems per sąrašą.
Ir mes nukreipta į šešių.
Mes prarado sekti ką ateina iki šešių.
Taigi, jei norime įterpti kažką į šis sąrašas laikant jį rūšiuojami, mes
tikriausiai reikia kaip daug patarimų?
>> PUBLIKA: Du.
>> JASON HIRSCHORN: Du.
Vienas sekti srovę vienas ir vienas sekti
pirmesnis.
Tai tik atskirai susiję sąrašas.
Tai tik eina viena kryptimi.
Jei mes turėjome dvigubai susijęs sąrašas, kur viskas buvo nukreipta į daiktą
po jo ir prieš jį patį, tada mes ne reikia padaryti, kad.
Tačiau šiuo atveju mes nenorime prarasti kelio, kas buvo prieš mus, jei
mes turime įterpti penkis kažkur viduryje.
Pasakykite mums buvo įterpti devynis.
Kas nutiktų, jei mes gavome aštuonių?
>> Auditorija: Jūs turite su gauti, kad nulinį tašką.
Užuot nulinį tašką jūs turite pridėti elementą ir tada
tai rodo, kad devynių.
>> JASON HIRSCHORN: Būtent.
Taigi, mes gauname aštuoni.
Mes pasiekiame sąrašo pabaigoje, nes tai yra nukreipta į null.
Ir dabar, vietoj to, ji nurodo, kad null turime tai rodo, kad mūsų naujas mazgas.
Ir mes nustatyti žymeklį Mūsų naujas mazgas null.
Ar kas nors turi kokių nors klausimų, apie įterpiant?
Ką daryti, jei aš nerūpi išlaikyti surūšiuoti sąrašą?
>> PUBLIKA: Laikykis jį pradžioje arba pabaigoje.
>> JASON HIRSCHORN: Laikykis jį pradžia arba pabaiga.
Kuris iš turėtume daryti?
Bobby?
Kodėl pabaiga?
>> PUBLIKA: Kadangi pradžia jau užpildyti.
>> JASON HIRSCHORN: Gerai.
Pradžioje jau užpildyti.
Kas nori ginčytis su Bobby.
Marcus.
>> PUBLIKA: Na jūs tikriausiai norite klijuoti jį pradžioje, nes
kitaip, jei jūs įtraukėte ją pabaigos jūs turite
feed visą sąrašą.
>> JASON HIRSCHORN: Būtent.
Taigi, jei mes galvoti apie runtime, Runtime įterpti pabaigoje
būtų n, tai dydis.
Kas didelis O Runtime įterpti pradžioje?
Pastovus laikas.
Taigi, jei jums nerūpi išlaikyti kažkas rūšiuojami, daug geriau tiesiog
įterpti šio sąrašo pradžioje.
Ir tai galima padaryti nuolat laiko.
>> Gerai.
Kitas operacija susirasti, kokią kitą - mes suformuluoti tai paieškoje.
Bet mes ketiname ieškoti per susijęs sąrašas tikrą objektą.
Vaikinai mačiau kodą ieškoti anksčiau paskaitoje.
Bet mes tarsi ką tik padarė jį su įterpti, arba bent jau įterpiant
kažkas rūšiuojami.
Jūs pažiūrėkite pro vyksta mazgas pagal mazgas, kol rasite numerį, kad jūs
ieško.
Kas atsitiks, jei jūs pasieksite Sąrašo pabaigoje?
Pasakykite Aš ieškau devynių ir I pasiekti sąrašo galą.
Ką mes darome?
>> PUBLIKA: Grįžti klaidingas?
>> JASON HIRSCHORN: Grįžti klaidinga.
Mes ne jį rasti.
Jei pasiekiate sąrašo galą ir tu negali rasti skaičių esate
ieško, tai ne ten.
Bet apie klausimus rasti?
Jei tai buvo surikiuota sąrašas, kas būtų skiriasi mūsų paieškos?
Taip.
>> PUBLIKA: Tai būtų rasti pirmąjį vertę tai daugiau nei vienas
jūs ieškote, ir tada grįžti klaidinga.
>> JASON HIRSCHORN: Būtent.
Taigi, jei tai rūšiuotų sąrašą, jei mes gauti kažkas, kad didesnis nei
Mes ieškome, mes nereikia nuolat vyksta į sąrašo pabaigą.
Mes galime tuo momentu return false nes mes neketiname jį rasti.
Klausimas dabar yra, mes kalbėjome apie išlaikyti susijusius sąrašus rūšiuojami,
išlaikyti juos pramaišiui.
Tai bus kažkas esate turbūt teks galvoti apie
kai kodavimo problema, jei jūs nustatote penkių pasirinkti maišos lentelę su atskira
Grupavimo metodas, kuris mes kalbame apie vėliau.
>> Bet tai verta laikyti sąrašą surūšiuoti ir tuomet galės gal turi
sparčiau paieškos?
Ar tai geriau greitai įterpti kažkas nuolat runtime bet tada
Ilgiau ieškoti?
Tai kompromisas tiesiai ten, kad jums gauti nuspręsti, kas yra labiau tinkama
jūsų konkrečią problemą.
Ir nebūtinai vienas visiškai teisingas atsakymas.
Bet tai tikrai sprendimas jums padaryti, ir tikriausiai gerai gintis
kad, tarkim, komentarą ar du, kodėl pasirinkote vieną virš kito.
>> Galiausiai, naikinti.
Mes matėme ištrinti.
Tai panašu į paiešką.
Ieškome elemento.
Pasakykite, mes stengiamės išbraukti šešis.
Taigi matome šešias čia.
Dalykas, kad mes turime įsitikinti, kad mes padaryti, kad viskas, ką yra nukreipta į
šešių - kaip matome žingsnio du žemyn čia -
kokia manimi nukreipta į šešis turi praleisti šešis dabar ir būti pakeistas į
kokia šešių nukreipta į.
Mes nenorime, kad kada nors našlaičio ramybės mūsų sąraše, pamiršusi nustatyti, kad
ankstesnis rodyklę.
Ir tada kartais, priklausomai nuo apie programą, jie bus tiesiog
visiškai ištrinti šį mazgą.
Kartais jūs norite grįžti vertė tai šiame mazge.
Štai kaip ištrinti darbus.
Bet kokie klausimai ištrinti?
>> PUBLIKA: Taigi, jei jūs ketinate ištrinti tai, ar jūs tiesiog naudoti nemokamai, nes
matyt buvo malloced?
>> JASON HIRSCHORN: Jei norite atlaisvinti vietos kažkas, kad yra būtent tai teisinga ir jūs
malloced jį.
Pasakykite, norėjome grąžinti šią vertę.
Mes galime grįžti šešių ir tada nemokamai šis mazgas ir kvietimas nemokamai jį.
Arba mes tikriausiai skambinti nemokamai pirmas ir tada grįžti šešių.
>> Gerai.
Taigi pereikime prie praktikos kodavimo.
Mes ketiname kodą tris funkcijas.
Pirmasis vadinasi insert_node.
Taigi jūs turite kodą, kad aš Jums elektroniniu paštu ir jei jūs žiūrite tai vėliau
galite prieiti prie kodo linked.c ant CS50 svetainėje.
Bet linked.c, yra keletas skeletas kodas, kuris jau
buvo parašyta jums.
Ir tada ten pora funkcijas vykdantiems jums reikia parašyti.
>> Pirmiausia mes ketiname rašyti insert_node.
Ir kas insert_node nėra Is įterpia sveikasis skaičius.
Ir jūs suteikiant sveikasis skaičius į susietą sąrašą.
Ir visų pirma, jūs turite į tą sąrašą nuolat rūšiuoti
nuo mažiausio iki didžiausio.
Be to, jūs nenorite, kad įterpti jokių dublikatus.
Galiausiai, jūs galite pamatyti insert_node grąžina bool.
Taigi, jums turėtų leisti vartotojui žinoti ar įterpti buvo
sėkmingas grąžinant true arba false.
Šio programos pabaigoje -
ir šiame etape nereikia nerimauti išlaisvinant nieko.
Taigi, visi jūs darote, yra atsižvelgiant sveikasis skaičius ir įterpti jį į sąrašą.
>> Štai ką aš prašau jūsų padaryti dabar.
Vėlgi linked.c, kurį visi turime, yra skeletas kodas.
Ir jūs turėtumėte pamatyti link apačios imties funkcija deklaracija.
Tačiau prieš einant į kodavimo jį C, aš labai rekomenduojame jums eiti
per veiksmus mes jau praktikuojančių kiekvieną savaitę.
Mes jau išgyveno tai nuotrauka.
Taigi, reikia turėti tam tikrą supratimą kaip tai veikia.
Bet aš norėčiau paskatinti jus rašyti kai prieš pasinerdamas in Pseudocode
Ir mes ketiname eiti per Pseudocode kaip grupė.
Ir tada, kai parašiau savo Pseudocode, ir kai mes parašiau mūsų
Pseudocode kaip grupę, galite eiti į kodavimo jį C
>> Kaip heads up, insert_node funkcija turbūt sudėtingiausia iš
trys mes ketiname rašyti, nes aš pridėjo keletą papildomų suvaržymų
Jūsų programavimo, ypač jūs nesiruošia įterpti bet
dublikatus ir kad sąrašas turėtų būti surūšiuoti.
Taigi tai yra ne trivialus programa kad jums reikia koduoti.
Ir kodėl gi ne jums imtis 06:55 minučių tiesiog gauti darbo
Pseudocode ir kodas.
Ir tada mes pradėsime vyksta kaip grupė.
Vėlgi, jei turite kokių nors klausimų, tiesiog pakelti savo ranką ir aš ateiti aplink.
.
>> Mes taip pat paprastai padaryti tai -
ar aš ne aiškiai pasakyti jums gali dirbti su žmonėmis.
Tačiau akivaizdu, aš labai rekomenduojame jums, Jei turite klausimų, prašyti
kaimynas sėdi šalia tavęs ar net dirbti su kuo nors
kitur, jei norite.
Tai nebūtinai turi būti individuali tylus veikla.
>> Pradėkime rašyti kai Pseudocode ant lentos.
Kas gali duoti man pirmąją eilutę Pseudocode šią programą?
Dėl šios funkcijos, o - insert_node.
Alden?
>> PUBLIKA: Taigi pirmas dalykas, kurį aš padariau buvo sukurti naują žymeklį į mazgą ir I
inicializuoti ji nukreipta į tą patį dalykas, kad sąrašas yra nukreipta.
>> JASON HIRSCHORN: Gerai.
Taigi jūs kuriate naują žymeklį į sąrašą, o ne mazgas.
>> PUBLIKA: Teisė.
Taip.
>> JASON HIRSCHORN: Gerai.
Ir tada, ką mes norime padaryti?
Kas po to?
Ką apie mazgą?
Mes neturime mazgas.
Mes tiesiog turi vertę.
Jei norime įterpti viršūnę, ką mes reikia padaryti pirmiausia, kol mes netgi galite
galvoti apie jį įdėsite?
>> PUBLIKA: Oi, atsiprašau.
turime malloc vietos mazgas.
>> JASON HIRSCHORN: Puikus.
Darom -
Gerai.
Negali pasiekti, kad didelis.
Gerai.
Mes ketiname eiti, ir tada mes naudojame du stulpelius.
Aš negaliu eiti, kad -
Gerai.
Sukurti naują mazgas.
Jūs galite sukurti kitą žymeklį į sąrašą arba galite tiesiog naudoti sąrašą, jis egzistuoja.
Jūs tikrai nereikia daryti.
>> Taigi, mes sukurti naują mazgą.
Didysis.
Štai ką mes darome pirmą kartą.
Kas toliau?
>> PUBLIKA: palaukti.
Jei mes sukurti naują mazgą dabar arba turėtume laukti, kad įsitikinti, kad
nėra jokių mazgo dublikatai sąraše, kol mes jį sukurti?
>> JASON HIRSCHORN: Geras klausimas.
Leiskite turėti, kad vėliau, nes Dauguma laiko mes kursite
naujas mazgas.
Taigi mes toliau, kad čia.
Bet tai geras klausimas.
Jei mes jį sukurti ir randame Dublikatas, kas turėtų
mes prieš grįžtant?
>> PUBLIKA: nemokamai jį.
>> JASON HIRSCHORN: Taip.
Tikriausiai išlaisvinti ją.
Gerai.
Ką daryti, kai mes sukurti naują mazgą?
Annie?
>> Auditorija: Mes atliekame skaičius mazgas?
>> JASON HIRSCHORN: Būtent.
Mes atliekame numerį - mes malloc erdvę.
Aš ruošiuosi palikti, kad visi kaip viena eilutė.
Bet tu teisus.
Mes malloc erdvę, ir tada mes įdėti numeris in
Mes netgi galite nustatyti pelės žymeklį jo dalis null.
Būtent dešinėje.
Ir tada ką apie po to?
Mes parengė šį paveiksliuką ant lentos.
Taigi, ką mes galime padaryti?
>> Auditorija: Mes eiti per sąrašą.
>> JASON HIRSCHORN: eiti per sąrašą.
Gerai.
Ir ką mes patikrinti kiekvieno mazgo.
Kurt, ką mes patikrinti ne kiekvieną mazgą?
>> PUBLIKA: Patikrinkite, ar n vertė kad mazgas yra didesnis nei n vertę
mūsų mazgas.
>> JASON HIRSCHORN: Gerai.
Aš ruošiuosi daryti -
Taip, gerai.
Taigi, tai n -
Aš ruošiuosi pasakyti, ar vertė yra didesnė nei šis mazgas, tada ką mes darome?
>> PUBLIKA: Na, tada mes įterpti tiesiai prieš, kad dalykas.
>> JASON HIRSCHORN: Gerai.
Taigi, jei jis didesnis nei tai, tai mes norime įterpti.
Bet mes norime įterpti jį tiesiai prieš nes mes taip pat turėtų būti
sekti, tada, kas buvo anksčiau.
Taigi įterpti anksčiau.
Taigi, mes tikriausiai kažką praleido anksčiau.
Mes tikriausiai reikia išlaikyti kelio, kas vyksta.
Bet mes grįžti ten.
Taigi, kas vertė yra mažesnė kaip?
Kurt, ką mes darome, jei vertė yra mažesnė kaip?
>> PUBLIKA: Tada tiesiog nesustoti nebent tai naujausia.
>> JASON HIRSCHORN: Man patinka, kad.
Taigi, eikite į kitą mazgą.
Nebent tai naujausia -
mes tikriausiai tikrinti, kad bet kurios būklės sąlygas.
Bet taip, kitą mazgas.
Ir tai vis per mažas, todėl mes perkelti čia.
Bet jei -
nors mato tai?
Jei mes lygūs, ką mes galime padaryti?
Jei vertė mes bandome įterpti yra lygi mazgo vertės?
Taip?
>> PUBLIKA: [nesigirdi].
>> JASON HIRSCHORN: Taip.
Atsižvelgiant į tai -
Markas yra teisus.
Galėjome galbūt padaryta kažkas kita.
Tačiau turint omenyje, kad mes sukūrėme jį čia turėtume išlaisvinti ir tada grįžti.
O berniukas.
Ar taip geriau?
Kaip tai?
Gerai.
Laisvas ir tada ką mes grįžti [nesigirdi]?
Gerai.
Ar mes ko nors trūksta?
Taigi, kur mes sekti iš anksto mazgas?
>> PUBLIKA: Aš manau, kad tai būtų eiti po sukurti naują mazgą.
>> JASON HIRSCHORN: Gerai.
Taigi pradžioje mes tikriausiai -
Taip, mes galime sukurti žymeklį į naują mazgas, kaip ir ankstesniais mazgo rodyklė ir
dabartinis mazgas rodyklę.
Taigi galime įterpti, kad čia.
Sukurti dabartinė ir ankstesnė rodykles į mazgus.
Bet kai mes pakoreguoti tas rodykles?
Kur mes tai darome kodą?
Jeff?
>> PUBLIKA: - vertė sąlygos?
>> JASON HIRSCHORN: Kuri vienas pirma?
>> PUBLIKA: Aš tiesiog supainioti.
Jei vertė yra didesnė nei ši mazgas, nėra tai reiškia, kad norite eiti
į kitą mazgą?
>> JASON Hirschhorn: Taigi, jei mūsų vertė yra didesnis nei šio mazgo vertę.
>> PUBLIKA: Taip, tada jūs norėtumėte eiti toliau žemyn linija, tiesa?
>> JASON Hirschhorn: Teisė.
Taigi mes ne įterpti jį čia.
Jei vertė yra mažesnė nei šio mazgo, tada mes einame į kitą mazgą - ar tada mes
įterpti anksčiau.
>> PUBLIKA: Palaukite, kuris tai mazgas ir kuris vertė?
>> JASON Hirschhorn: Geras klausimas.
Vertė už šią funkciją apibrėžimą yra tai, ką mes pateikta.
Taigi vertė yra skaičius, mes suteikta.
Taigi, jei reikšmė yra mažesnė, nei tai mazgas, mes turime laiko įterpti.
Jei vertė yra didesnė nei ši mazgas, mes einame į kitą mazgą.
Ir atgal prie pradinio klausimo, nors, kur -
>> PUBLIKA: Jei vertė yra didesnė nei šis mazgas.
>> JASON Hirschhorn: Ir taip ką mes darome čia?
Saldus.
Tai yra teisinga.
Aš tik ketina rašyti atnaujinti patarimų.
Bet taip, su dabartine jūs ją atnaujinti
atkreipia dėmesį į kitą.
Kitoks mes trūkstamus?
Taigi, aš ruošiuosi rašykite kodą į gedit.
Ir nors aš tai padaryti, jūs galite turėti pora daugiau minučių dirbti kodavimo
tai C
>> Taigi turiu įvesties Pseudocode.
Greita Pastaba kol mes pradėti.
Mes negalime visiškai baigti tai visi
trys iš šių funkcijų.
Yra teisingas jų sprendimo kad aš atsiųsime į tave vaikinai
po skirsnio, ir ji bus būti paskelbtas CS50.net.
Taigi aš ne rekomenduojame jums eiti pažvelgti į skirsnius.
Raginu jus išbandyti juos ant savo savo, ir tada naudokite praktika
problemos, kaip patikrinti savo atsakymus.
Jie visi buvo sukurta glaudžiai susiję ir laikytis, ką
jūs turite padaryti dėl problemų rinkinį.
Taigi aš rekomenduojame jums praktiškai tai savo ir tada naudokite kodą
patikrinti savo atsakymus.
Nes aš noriu pereiti į maišos lentelės tam tikru skyriuje taško.
Taigi, mes galime ne gauti per visa tai.
Bet mes padarysime, kiek mes galime dabar.
>> Gerai.
Leiskite mums pradėti.
Asam, kaip mes sukurti naują mazgą?
>> Auditorija: Jūs struct *.
>> JASON Hirschhorn: Taigi mes turėti, kad čia.
Oi, atsiprašau.
Jūs sakėte struct *.
>> PUBLIKA: Ir tada [? natūra?] mazgas arba c mazgas.
>> JASON Hirschhorn: Gerai.
Aš ruošiuosi jį vadiname new_node todėl gali likti nuoseklūs.
>> PUBLIKA: Ir jūs norite nustatyti, kad į galvą, pirmasis mazgas.
>> JASON Hirschhorn: Gerai.
Taigi dabar tai nukreipta į - todėl šis nebuvo sukurta nauja mazgas dar.
Tai yra tik nukreipta į Pirmasis mazgas sąraše.
Kaip aš galiu sukurti naują mazgą?
Jei man reikia erdvės sukurti naują mazgą.
Malloc.
Ir kaip didelis?
>> PUBLIKA: iš struct dydis.
>> JASON Hirschhorn: dydis struct.
Ir kas manimi struct vadinama?
>> PUBLIKA: Mazgas?
>> JASON Hirschhorn: Mazgas.
Taigi malloc (sizeof (mazgas)); suteikia mums vietos.
Ir tai yra linija -
vienas dalykas yra netikslus šioje eilutėje.
Ar new_node Rodyklė į struct?
Tai bendrinis pavadinimas.
Kas tai yra -
mazgas, tiksliai.
Tai mazgas *.
Ir ką mes darome iš karto po mes malloc kažką, Asanos?
Kas pirmas dalykas, mes galime padaryti?
Ką daryti, jei jis neveikia?
>> Auditorija: O, patikrinti, ar jis atkreipia dėmesį į mazgą?
>> JASON Hirschhorn: Būtent.
Taigi, jei jūs new_node lygu lygu null, ką mes darome?
Tai grąžina bool, šią funkciją.
Būtent.
Gerai atrodo.
Viskas ten pridėti?
Mes pridėti dalykų pabaigoje.
Bet tai kol kas gerai atrodo.
Sukurti dabartinius ir ankstesnius nurodymus.
Mykolas, kaip man tai padaryti?
>> PUBLIKA: Jums reikės padaryti mazgas *.
Jūs turite padaryti vieną ne už new_node bet
mazgai jau turime.
>> JASON Hirschhorn: Gerai.
Taigi dabartinis mazgas mes apie.
Aš vadinu Val.
Gerai.
Mes nusprendėme, kad norime du, nes mums reikia žinoti
kas prieš jį.
Ką jie gauti inicializuoti?
>> PUBLIKA: Jų vertė į mūsų sąrašą.
>> JASON Hirschhorn: Taigi, kas yra pirmas dalykas, dėl savo sąrašą?
Arba kaip mes žinome, kur pradžioje mūsų sąraše?
>> Auditorija: Ar ne ji išlaikė į funkciją?
>> JASON Hirschhorn: Teisė.
Jis buvo priimtas čia.
Taigi, jei jis patenka į funkciją, pradėti sąrašo, ką turėtume
nustatyta srovė lygi?
>> PUBLIKA: Sąrašas.
>> JASON Hirschhorn: Sąrašas.
Būtent dešinėje.
Dabar ji turi adresą mūsų sąrašo pradžia.
O ką apie praėjusią?
>> PUBLIKA: Sąrašas minus vienas?
>> JASON Hirschhorn: Yra nieko prieš jį.
Taigi, ką mes galime padaryti, nieko reikšti?
>> PUBLIKA: NULL.
>> JASON Hirschhorn: Taip.
Tai skamba kaip gera idėja.
Tobula.
Ačiū.
Eiti per sąrašą.
Konstantinas, kaip ilgai mes einame eiti per sąrašą?
>> PUBLIKA: Iki Pasiekiame null.
>> JASON Hirschhorn: Gerai.
Taigi, jei, nors, už linijos.
Ką mes darome?
>> PUBLIKA: Gal už linijos?
>> JASON Hirschhorn: Darom už linijos.
Gerai.
>> PUBLIKA: Ir mes pasakyti -
iki dabartinio rodyklė nėra lygus nulis.
>> JASON Hirschhorn: Taigi, jei mes žinome, sąlyga, kaip mes galime parašyti kilpa
pagrįsta ne tokios būklės.
Kokios kilpa turėtume naudoti?
>> PUBLIKA: Nors.
>> JASON Hirschhorn: Taip.
Tai suteikia daugiau prasmės, pagrįstą nuo to, ką jūs pasakėte.
Jei mes tiesiog norime eiti į mes jį būtų tiesiog žinau, kad dalykas, būtų
jausmas daryti, o kilpą.
Nors dabartinis nėra lygi nuliui, jei turto vertė yra mažesnė nei šio mazgo.
Akshar, duok man šią eilutę.
>> PUBLIKA: Jei dabartinis-> n n mažesnis už vertę.
Arba pakeisti, kad.
Perjungti šią laikiklį.
>> JASON Hirschhorn: Atsiprašome.
>> PUBLIKA: Pakeisti laikiklį.
>> JASON Hirschhorn: Taigi, jei tai didesnė nei vertė.
Nes tai painu su komentarą aukščiau, aš ruošiuosi daryti.
Bet taip.
Jei mūsų vertė yra mažesnė negu ši mazgas, ką mes darome?
Oh.
Turiu jį čia.
Įdėkite anksčiau.
Gerai.
Kaip mes tai darome?
>> Auditorija: Ar ji vis dar mane?
>> JASON Hirschhorn: Taip.
>> Auditorija: Jūs -
new_node-> šalia.
>> JASON Hirschhorn: Taigi, kas yra kad ketina prilygti?
>> PUBLIKA: Jis vyksta į vienodą srovę.
>> JASON Hirschhorn: Būtent.
Ir taip kita -
ką dar reikia atnaujinti?
>> PUBLIKA: Patikrinkite, ar pro Lygu null.
>> JASON Hirschhorn: Jei ankstesnė -
todėl, jei pask Lygu null.
>> PUBLIKA: Tai reiškia, kad vyksta tapti vadovu.
>> JASON Hirschhorn: Tai reiškia, kad jis tapo vadovu.
Taigi, ką mes galime padaryti?
>> Auditorija: Mes galva Lygu new_node.
>> JASON Hirschhorn: vadovas Lygu new_node.
Ir kodėl galva čia nėra sąraše?
>> PUBLIKA: Kadangi galva yra pasaulinė kintamasis, kuris yra pradinė vieta.
>> JASON Hirschhorn: Sweet.
Gerai.
Ir -
>> PUBLIKA: Tada jums dar ankstesnė-> Kitas Lygu new_node.
Ir tada grąžina true.
>> JASON Hirschhorn: Kur daryti mes nustatome new_node pabaigoje?
>> PUBLIKA: norėčiau -
Aš nustačiau, kad pradžioje.
>> JASON Hirschhorn: Taigi, kas eilutėje?
>> PUBLIKA: Po if tikrinti, ar jis žinomas.
>> JASON Hirschhorn: Štai čia?
>> PUBLIKA: aš padaryti new_node-> n Lygu vertę.
>> JASON Hirschhorn: Skamba gerai.
Turbūt logiška - mes ne reikia žinoti, ką sąrašas mes apie
nes mes tik sprendžiant vieną sąrašą.
Taigi geriau funkcija deklaracija tai tik atsikratyti šio
visiškai ir tiesiog įdėkite vertė į galvą.
Mes net nereikia žinoti ką mes sąrašas viduj
Bet aš nuolat jį dabar ir tada pakeisti jį į atnaujinimo
Slides ir kodas.
Taigi, kad gerai atrodo dabar.
Jei vertė - kas gali padaryti šią eilutę?
Jei -
ką mes darome čia, Nojus.
>> PUBLIKA: Jei vertė yra didesnė nei Pylimas-> n -
>> JASON Hirschhorn: Kaip padaryti mes einame į kitą mazgą?
>> PUBLIKA: Valiuta-> n lygi new_node.
>> JASON Hirschhorn: Taigi n kokia dalis struct?
Sveikasis skaičius.
Ir new_node yra rodyklė į mazgą.
Taigi, kokia dalis Valiuta turėtume atnaujinti?
Jei ne n, tada kas kita dalis?
Nojus, kas kitas dalis.
>> Auditorija: O kitą.
>> JASON Hirschhorn: Kitas, tiksliai.
Būtent.
Kitas yra teisingas.
Ir ką dar turime atnaujinti, Nojų?
>> PUBLIKA: The patarimų.
>> JASON Hirschhorn: Taigi mes atnaujinti srovę.
>> PUBLIKA: Ankstesnis-> šalia.
>> JASON Hirschhorn: Taip.
Gerai, mes sustabdyti.
Kas gali padėti mums iš čia?
Manu, ką mes turėtume daryti?
>> Auditorija: Jūs turite nustatyti ji lygi Valiuta-> kito.
Bet tai, kad iki praėjusių linija.
>> JASON Hirschhorn: Gerai.
Kitoks?
Akshar.
>> PUBLIKA: Aš nemanau, kad jūs esate skirtas pakeisti Val-> šalia.
Manau, jūs reiškė daryti Valiuta lygu Pylimas-> šalia pereiti į kitą mazgą.
>> JASON Hirschhorn: Taigi atsiprašau, kur?
Apie tai, kas eilutėje?
Ši eilutė?
>> PUBLIKA: Taip.
Padaryti Valiuta Lygu Valiuta-> šalia.
>> JASON Hirschhorn: Taigi, kad teisinga , nes dabartinė yra
Rodyklė į mazgą.
Ir mes norime, kad ji rodytų į kitą mazgas, kas darosi dabar
nurodė.
Pati Valiuta turi kitą.
Bet jei mes atnaujinti curr.next, mes bus atnaujinti faktinę dėmesį
pati ne ten, kur tai rodyklė rodė.
Ką apie šią eilutę, nors.
Avi?
>> PUBLIKA: Ankstesnis-> šalia Lygu Val.
>> JASON Hirschhorn: Taigi dar kartą, jei pask yra Rodyklė į mazgą, pask-> šalia yra
Tikrasis žymiklį mazgas.
Taigi, tai bus atnaujinti žymiklį į mazgas Val.
Mes nenorime, kad atnaujinti į mazgo rodyklė.
Mes norime, kad atnaujinti ankstesnę.
Taigi, kaip mes tai darome?
>> PUBLIKA: Tai tiesiog būti ankstesnė.
>> JASON Hirschhorn: Teisė.
Ankstesnis yra rodyklė į mazgą.
Dabar mes jį pakeisti į nauja rodyklė į mazgą.
Gerai Leiskite mums judėti žemyn.
Galiausiai, ši paskutinė sąlyga.
Jeffas, ką mes čia darome?
>> PUBLIKA: Jei vertė yra lygi Valiuta-> n.
>> JASON Hirschhorn: Atsiprašome.
Dieve mano.
Ką?
Reikšmė == Valiuta-> n.
Ką mes darome?
>> Auditorija: Jūs norite išlaisvinti mūsų new_node, ir tada jūs return false.
>> JASON Hirschhorn: Tai, ką mes parašėme šiol.
Ar kas nors ką nors pridėti kol mes padaryti?
Gerai.
Pabandykime ją.
Kontrolė gali pasiekti pabaigos iš ne void funkcija.
Avi, kas vyksta?
>> Auditorija: Ar turėjo įdėti grąžą tiesa ne iš while cikle?
>> JASON Hirschhorn: Aš nežinau.
Ar norite mane?
>> PUBLIKA: Never mind.
Ne.
>> JASON Hirschhorn: Akshar?
>> PUBLIKA: Manau, kad jums skirtas įdėti return false pabaigoje
iš while cikle.
>> JASON Hirschhorn: Taigi, kur Jūs norite eiti?
>> PUBLIKA: kaip ne while cikle.
Taigi, jei išeisite iš while cikle, tai reiškia, kad jūs pasiekėte galą ir
Nieko neatsitiko.
>> JASON Hirschhorn: Gerai.
Taigi, ką mes darome čia?
>> Auditorija: Jūs return false ten taip pat.
>> JASON Hirschhorn: O, mes daryti abiejose vietose?
>> PUBLIKA: Taip.
>> JASON Hirschhorn: Gerai.
Jei mes einame?
Dieve mano.
Aš atsiprašau.
Atsiprašau už ekrano.
Jis rūšies freaking mus.
Taigi pasirinkite pasirinktį.
Nulis, už kodą, meta programą.
Vienas įdeda kažką.
Leiskite įdėti tris.
Įterpti nebuvo sėkmingas.
Aš ruošiuosi atsispausdinti.
Aš neturiu nieko.
Gerai.
Gal tai buvo tik atsitiktinumas.
Įdėkite vieną.
Nėra sėkmingas.
Gerai.
Tegul eina per GDB tikrai greitai sužinoti, kas vyksta.
>> Prisiminti gdb. / Pavadinimo savo programa bus mums į GDB.
Yra tai, kad daug dirbti?
Mirksi?
Tikriausiai.
Užmerkite akis ir šiek tiek giliai kvėpuoti, jei jums nusibodo
žiūri jį.
Aš GDB.
Kas pirmas dalykas, kurį aš padaryti GDB?
Mes turime išsiaiškinti, kas čia vyksta.
Pažiūrėkime.
Mes turime šešias minutes išsiaiškinti , kas vyksta.
Break pagrindinis.
Ir tada ką daryti?
Carlos?
Pradėti.
Gerai.
Leiskite pasirinkti pasirinktį.
Ir ką N daryti?
Kitas.
Taip.
>> Auditorija: Ar ne jūs paminėti -
tu negali sakyti, kad vadovas buvo inicializuoti nulis pradžioje.
Bet aš maniau, jūs sakėte, kad buvo gerai.
>> JASON Hirschhorn: Vykime - pažvelkime į GDB, ir tada mes grįžti.
Bet tai skamba kaip jūs jau turite kai apie tai, kas vyksta idėjos.
Taigi norime įterpti kažką.
Gerai.
Mes įterpti.
Įveskite int.
Mes įterpti tris.
Ir tada aš į šią eilutę.
Kaip aš galiu eiti pradėti derinimo įterpti žinomas funkciją?
Dieve mano.
Tai daug.
Ar tai freaking daug?
>> Auditorija: O, tai mirė.
>> JASON Hirschhorn: Aš tiesiog iškedentas jį.
Gerai.
>> PUBLIKA: Gal tai Kitame gale laido.
>> JASON Hirschhorn: Oho.
Taigi Esmė -
ką tu sakai?
>> PUBLIKA: sakiau techninės ironija sunkumai šioje klasėje.
>> JASON Hirschhorn: aš žinau.
Jei tik aš turėjo kontroliuoti tos dalies.
[Nesigirdi]
Tai skamba puikiai.
Kodėl vaikinai pradėti galvoti apie ką mes galėjome padaryti neteisingai,
ir mes dar 90 sekundžių.
>> Avica Aš ruošiuosi paprašyti jus, kaip eiti viduje insert_node derinti jį.
Taigi, tai yra, kai mes paskutinį kartą baigėte.
Kaip aš galiu eiti į vidų insert_node, Avica, išnagrinėti, kas vyksta?
Kas GDB komanda?
Pertrauka nebūtų priimti mane į vidų.
Ar Markizė žinoti?
>> PUBLIKA: Kas?
>> JASON Hirschhorn: Kas GDB komanda Aš naudoju vidun šią funkciją?
>> PUBLIKA: žingsnis?
>> JASON Hirschhorn: žingsnis per S. Tai užima man viduje.
Gerai.
New_node mallocing šiek tiek erdvės.
Kad visi atrodo jos vyksta.
Panagrinėkime new_node.
Jis gavo šiek tiek atminties adresą.
Leiskite patikrinti -
tai viskas teisinga.
Taigi čia viskas atrodo dirbti teisingai.
>> PUBLIKA: Koks skirtumas tarp P ir ekrano?
>> JASON Hirschhorn: P reiškia spausdinti.
Ir tokiu būdu jūs esate klausia, kas skirtumas tarp to, ir tai?
Šiuo atveju, nieko.
Bet apskritai yra tam tikrų skirtumų.
Ir jūs turėtumėte pažvelgti į GDB vadove.
Tačiau šiuo atveju, nieko.
Mes linkę naudoti spausdinti, nors, nes mums nereikia daryti daug daugiau nei
spausdinti vieną reikšmę.
>> Gerai.
Taigi mes esame mūsų kodas yra 80 eilutėje, nustatant mazgas * Val lygų sąrašą.
Leiskite mums atsispausdinti Val.
Jis lygus sąrašą.
Saldus.
Palaukti.
Jis lygus kažką.
Tai neatrodo teisinga.
Čia mes eiti.
Tai yra todėl, kad GDB, tiesa, jei tai linija jūs jį
nebuvo įvykdyta dar.
Taigi, tau reikia iš tikrųjų įvesti šalia vykdyti liniją
prieš pamatyti savo rezultatus.
Taigi čia mes esame.
Mes tiesiog vykdomas šią eilutę, ankstesnis Lygu null.
Taigi dar kartą, jei mes spausdinti Ankstesnis mes nematome nieko keista.
Bet jei mes iš tikrųjų įvykdyti, kad linija, tada matysime
kad linija dirbo.
>> Taigi, mes turime Val.
Tai yra tiek geras.
Teisė?
Dabar mes šioje eilutėje čia.
Nors Pylimas nėra vienodas null.
Na, ką Valiuta lygūs?
Mes tik pamačiau tai prilygo null.
Mes atspausdintas jį.
Aš spausdinti iš naujo.
Taigi, yra tai, kad kilpa ketina vykdyti?
>> PUBLIKA: Ne
>> JASON Hirschhorn: Taigi, kai įvedžiau, kad linija, matote mes šoktelėjo visą kelią
žemyn į dugną, return false.
Ir tada mes ketiname return false ir grįžti į mūsų programą ir
galiausiai atsispausdinti, kaip matėme, įterpti nebuvo sėkmingas.
Taigi, kas nors turi kokių nors idėjų, ką mes turime daryti, kad išspręsti šią problemą?
Aš laukti, kol matau Rankų pora eiti.
Mes nevykdė tai.
Turėkite omenyje, tai buvo pirmoji dalykas, mes darome.
Nesiruošiu daryti pora.
Aš ruošiuosi padaryti nedaug.
Kadangi pora tai du.
Lauksiu daugiau nei dviejų.
>> Pirmasis intarpas, Pylimas, pagal nutylėjimą lygu null.
Ir tai kilpa tik vykdo jei Pylimas nėra lygus nuliui.
Taigi, kaip aš galiu gauti apie tai?
Matau tris rankas.
Lauksiu daugiau nei tris.
Marcus, ką jūs manote?
>> PUBLIKA: Na, jei jūs turite jį vykdyti daugiau nei vieną kartą, jūs tiesiog
pakeisti jį į do-while cikle.
>> JASON Hirschhorn: Gerai.
Ar, kad išspręsti mūsų problemą, nors?
>> PUBLIKA: Šiuo atveju nėra, nes Faktas, kad sąrašas yra tuščias.
Taip, tada jūs tikriausiai tiesiog reikia pridėti pareiškimas, kad jei kilpos išėjimai
tada jūs turite būti pabaigoje sąrašas, kuriame jums atkreipti
gali tiesiog įdėkite jį.
>> JASON Hirschhorn: Man patinka, kad.
Tai turi prasmę.
Jei kilpa išeina -
nes jis bus return false čia.
Taigi, jei kilpos išėjimų, tada mes ne sąrašo pabaigoje, o gal
pradėti iš sąrašo, jei ten nieko nėra tai, kuris yra toks pat kaip pabaigoje.
Taigi, dabar mes norime įterpti kažkas čia.
Taigi, kaip veikia šis kodas atrodo, Markas?
>> PUBLIKA: Jei jau turite mazgas malloced, galima tiesiog pasakyti
new_node-> šalia Lygu null nes ji turi būti pabaigoje.
Arba new_node-> šalia Lygu null.
>> JASON Hirschhorn: Gerai.
Atsiprašau.
New_node-> šalia Lygu null nes mes pabaigoje.
Tai nereiškia jį in
Kaip mes įdėti ją į sąrašą?
Teisė.
Tai tiesiog nustatyti jį lygūs.
Ne kaip mes iš tikrųjų įdėti ją į sąrašą?
Kas nukreipta į galutinio sąrašo?
>> PUBLIKA: vadovas.
>> JASON Hirschhorn: Atsiprašome?
>> PUBLIKA: vadovas yra nukreipta į sąrašo pabaigą.
>> JASON Hirschhorn: Jei ten nieko sąrašas, galva nukreipta į
galutinio sąrašo.
Taigi, kad bus dirbti pirmą kartą įkišus.
Ką apie jei yra pora dalykų sąrašo?
Nei mes nenorime nustatyti galva lygi new_node.
Ką mes norime ten daryti?
Taip?
Tikriausiai ankstesnė.
Ar tai veikia?
Prisiminkite, kad praėjusią yra tik Rodyklė į mazgą.
Ir praėjusią yra vietos kintamąjį.
Taigi ši eilutė bus nustatyti kintamąjį, ankstesnės, yra lygi arba
nukreipta į šios naujos mazgas.
Tai bus ne iš tikrųjų jį mūsų sąraše, nors.
Kaip mes įdėti ją į mūsų sąraše?
Akchar?
>> PUBLIKA: Manau, kad jums padaryti dabartinę-> šalia.
>> JASON Hirschhorn: Gerai.
Pylimas-> šalia.
Taigi dar kartą, vienintelė priežastis, kodėl mes žemyn Štai, ką srovė lygi?
>> PUBLIKA: Lygu null.
>> JASON Hirschhorn: Ir taip, kas atsitiks, jei mes null-> kitas?
Ką mes ketiname gauti?
Mes susisieksime segmentavimo kaltės.
>> Auditorija: Ar Valiuta Lygu null.
>> JASON Hirschhorn: Tai tas pats kaip Ankstesnio, nors, nes ten
vietos kintamąjį mes kuriame lygios šios naujos mazgas.
Grįžkime į mūsų nuotrauką įterpti kažką.
Pasakykite, mes įterpti pabaigoje sąrašo, todėl čia.
Mes turime dabartinę žymeklį, kad yra nukreipta į niekinis ir ankstesniame punkte
tai nukreipta į 8.
Taigi, ką reikia atnaujinti, AVI?
>> PUBLIKA: Atgal-> kitas?
>> JASON Hirschhorn: Atgal-> šalia yra kas norime atnaujinti, nes tai
tikrai bus įterpti jį sąrašo pabaigoje.
Mes vis dar turime vieną klaidą, nors, kad mes ketiname paleisti į.
Kas tai klaida?
Taip?
>> PUBLIKA: Ji ketina grįžti klaidinga šiuo atveju?
>> JASON Hirschhorn: Oi, tai yra ketina grįžti klaidinga.
Bet yra ir kitas klaidas.
Taigi mums reikės įdėti mainais tiesa.
>> Auditorija: Ar praėjusią dar lygūs niekinis ne sąrašo viršuje?
>> JASON Hirschhorn: Taigi praėjusią dar Lygu null pačioje pradžioje.
Taigi, kaip mes galime gauti per tai?
Taip?
>> PUBLIKA: Aš manau, kad jūs galite padaryti čekį prieš while cikle pamatyti, jei ji yra
tuščias sąrašas.
>> JASON Hirschhorn: Gerai.
Taigi eikime čia.
Ar patikrinti.
Jei -
>> PUBLIKA: Taigi, jei galvos Lygu lygu null.
>> JASON Hirschhorn: Jei galva Lygu lygu null -
kad bus mums pasakyti, jei jis tuščias sąrašas.
>> PUBLIKA: Ir tada jūs padaryti galva Lygu naujas.
>> JASON Hirschhorn: vadovas Lygu new_node?
Ir ką dar turime padaryti?
>> PUBLIKA: Ir tada grąžina true.
>> JASON Hirschhorn: Ne visai.
Mes trūksta vieno žingsnio.
>> PUBLIKA: New_node kitą turi nurodyti null.
>> JASON Hirschhorn: Būtent, Alden.
Ir tada mes galime grįžti tiesa.
Gerai.
Bet tai vis dar gera idėja daryti dalykus prie sąrašo pabaigoje, tiesa?
Gerai.
Mes vis dar gali realiai gauti į sąrašo pabaigą.
Taigi tai kodas gerai, jei mes ne pabaigos sąrašą ir yra keletas
dalykų sąrašo?
Teisė?
Kadangi mes vis dar turime Marcus idėja.
Mes galime išeiti iš šio ciklo, nes mes ne iš sąrašo gale.
Taigi mes vis dar norime, kad tai kodą žemyn čia?
>> PUBLIKA: Taip.
>> JASON Hirschhorn: Taip.
Ir ką mes turime pakeisti tai?
Tiesa.
Ar tai garso gera visiems iki šiol?
Kas nors turi bet koks -
Avi, jūs turite ką nors pridėti?
>> PUBLIKA: Ne
>> JASON Hirschhorn: Gerai.
Taigi, mes padarėme keletą pakeitimų pora.
Mes padarėme šį patikrinimą, kol mes ėjo už tuščią sąrašą.
Taigi mes pasirūpinta tuščią sąrašą.
Ir čia mes rūpinosi įterpiant kažkas ne sąrašo gale.
Taigi atrodo, kad šio, o kilpos paėmimo priežiūros dalykų, tarp jų,
kažkur sąrašo, jei yra Yra dalykų sąraše.
>> Gerai.
Leiskite mums paleisti šią programą iš naujo.
Nėra sėkmingas.
>> Auditorija: Jūs neįskriejo.
>> JASON Hirschhorn: O Aš ne padaryti jį.
Gera vieta, Michael.
Leiskite pridėti markę susiję.
87 eilutė nėra klaida.
Line 87.
Alden, tai buvo linija jūs man davė.
Kas negerai?
>> PUBLIKA: Ji turi būti nulis.
>> JASON Hirschhorn: Puikus.
Visiškai teisus.
Ji turėtų būti niekinis.
Padarykime dar kartą.
Užpildykite.
Gerai.
Leiskite įdėti tris.
Įterpti buvo sėkmingas.
Leiskite ją išspausdinkite.
O, jei tik mes galėtume patikrinti.
Bet mes ne padaryti spausdinti funkciją dar.
Leiskite įvesti ką nors kita.
Ką mes turėtume dalyvauti?
>> PUBLIKA: Septyni.
>> JASON Hirschhorn: Septyni?
>> PUBLIKA: Taip.
>> JASON Hirschhorn: Mes turime seg kaltės.
Taigi, mes turime vieną, bet mes aiškiai negali gauti du.
Tai 05:07.
Taigi, mes galime derinti tai tris minutes.
Bet aš ruošiuosi palikti mums čia ir pereiti prie maišos lenteles.
Bet vėl, už šio kodekso atsakymai Aš atsiųsime jį jums šiek tiek.
Mes esame labai arti jos.
Aš labai rekomenduojame jums išsiaiškinti, tai, kas vyksta čia ir ją išspręsti.
Taigi, aš atsiųsime jums šį kodą gerai plius sprendimas -
tikriausiai sprendimas vėliau.
Pirmiausia šis kodas.
>> Kitas dalykas, kurį noriu padaryti, kol mes apdaila mes neišsilaisvino nieko.
Taigi, aš noriu parodyti jums, ką Valgrind atrodo.
Jei mes paleisti Valgrind ribas mūsų programą. / susijusios.
Vėlgi, atsižvelgiant į šios skaidrės, mes turėtų veikti Valgrind su kai tipo
galimybė, šiuo atveju - Nuotėkio patikrinimas = pilna.
Taigi galime rašyti Valgrind - Nuotėkio patikrinimas = pilna.
Taigi, tai bus paleisti Valgrind mūsų programą.
Ir dabar programa iš tikrųjų veikia.
Taigi, mes ketiname paleisti jį kaip anksčiau, įdėti ką nors į vidų
Aš ruošiuosi įdėti į trijų.
Tai veikia.
Aš nesiruošia bandyti įdėti į kažką kitur, nes mes ketiname
gauti SEG klaidinga atveju.
Taigi, aš tik ketina mesti.
>> Ir dabar jūs matote čia apačioje ištekėti ir krūvos santrauka.
Tai yra gerų dalykų, kad norite patikrinti.
Taigi krūva santrauka - ji sako, naudojimo at Exit - aštuonių baitų vieno bloko.
Tai vienas blokas mazgas mes malloced.
Maiklai, tu sakei, kol mazgas yra aštuoni kanda, nes ji sveikasis skaičius
ir rodyklę.
Štai mūsų mazgas.
Ir tada jis sako, kad mes naudojamas malloc septynis kartus ir mes išlaisvino
kažkas šešis kartus.
Bet mes niekada vadinama nemokama, todėl turiu ne idėja, ką tai kalbu.
>> Bet pakanka pasakyti, kad kai jūsų programa veikia, malloc yra vadinama
kai kuriose kitose vietose, kad mes nereikia jaudintis.
Taigi malloc tikriausiai buvo vadinama kai kuriose vietose.
Mums nereikia jaudintis, kur.
Bet tai tikrai mus.
Pirmoji eilutė yra mums.
Mes palikome šį bloką.
Ir jūs galite pamatyti, kad čia ir nuotėkio santrauka.
Vis dar pasiekiamas -
aštuonių baitų vieno bloko.
Tai reiškia, kad atminties -
mes nutekėjo, kad atmintyje.
Tikrai neteko -
kažkas prarandama gera.
Paprastai jums nebus nematau nieko ten.
Vis dar pasiekiamas paprastai yra kur pamatysite dalykų, kur jūs norite
pažiūrėkite, kokiu kodu jūs turėtumėte išlaisvinome tačiau pamiršote nemokamai.
>> Ir tada, jei tai buvo ne tas atvejis, jei mes padarėme viską, nemokama,
mes galime patikrinti, kad.
Leiskite tiesiog paleisti programą ne išleisti ką nors.
Pamatysite žemyn čia naudojimui išėjimo -
nulis baitų nulinės blokų.
Tai reiškia, kad mes turėjome nebelikę kai ši programa išėjo.
Taigi, prieš sukant pset6, paleisti Valgrind ir įsitikinkite, kad jūs neturite
bet atminties nutekėjimas į savo programą.
Jei turite kokių nors su Valgrind klausimų, jaustis laisvai pasiekti.
Bet tai, kaip jūs jį naudoti.
Labai paprasta - pamatyti, jei jūs turi naudoti bent išėjimo -
Bet kokia blokų baitai.
>> Taigi, mes dirbome įterpti mazgo.
Aš turėjau du kitas funkcijas čia - spausdinti mazgų ir nemokama mazgus.
Vėlgi, tai yra funkcijos, kurios yra bus geras jums patirties
nes jie padės jums ne tik šios imties pratimai, bet taip pat
į problemą nustatyti.
Jie map ant gana glaudžiai dalykų jūs ketinate daryti,
problema nustatyti.
Bet aš noriu įsitikinti, mes paliesti viską.
Ir maišos lentelės taip pat yra labai svarbus ką mes darome skyrių šį
savaitę - arba problemą, rinkinį.
>> Taigi, mes ketiname baigti skyrių kalbame apie maišos lenteles.
Jei pastebėjote aš padariau mažai maišos lentelė.
Tai ne tai, ką mes kalbame apie, tačiau.
Mes kalbame apie skirtingų tipas hash lenteles.
Ir savo esme, maišos lentelės yra ne daugiau kaip
masyvas plius maišos funkcija.
Mes ketiname kalbėti truputį tik įsitikinkite, kad visi supranta, ką
maišos funkcija.
Ir aš sakau, kad dabar ji yra nieko daugiau nei dviejų dalykų -
masyvas ir maišos funkcija.
Ir čia yra priemonių, per kuri tai veikia.
>> Yra mūsų masyvo.
Yra mūsų funkcija.
Visų pirma, maišos funkcijos turi padaryti keletą dalykų su šiuo klausimu.
Aš ruošiuosi kalbėti konkrečiai apie šią problemą nustatyti.
Tai tikriausiai bus imtis eilutę.
Ir kas jis ketina grįžti?
Kokių duomenų tipas?
Alden?
Jūsų maišos funkcija grįžti?
Sveikasis skaičius.
Taigi tai, ką maišos lentelė sudaryta iš -
į masyvo formos stalas ir maišos funkcija.
Kaip tai veikia?
Jis veikia trimis etapais.
Mes suteikti jai klavišą.
Tokiu atveju, mes suteiksime jai eilutę.
Mes vadiname maišos funkcijos per vieną žingsnį mygtuko ir mes gauname vertę.
>> Tiksliau, mes pasakyti mes gauname sveikąjį skaičių.
Tai sveikas, yra labai specifinė ribos, ką, kad sveikasis skaičius gali būti.
Šiame pavyzdyje, mūsų masyvas yra dydžio trijų.
Taigi, ką numerius galima, kad sveikas būtų.
Kas yra Galiojančių reikšmių diapazonas kad sveikasis skaičius, grįžimo tipo tai
maišos funkciją?
Nulis, vienas ir du.
Iš maišos funkcija yra ta, kad išsiaiškinti masyvo vietą
kur pagrindinis mūsų vyksta.
Yra tik trys įmanoma vietų čia -
nulis, vienas arba du.
Taigi, ši funkcija geriau grąžinimas nulis, vienas arba du.
Kai galioja Indice šiame masyve.
>> Ir tada priklausomai nuo to, kur jis grįžta, matote ten masyvas atvira
BRACKET vertę.
Štai kur mes įdėti raktą.
Taigi, mes mesti moliūgų, mes gauname iš nulio.
Tuo masyvo laikiklis 0, mes įdėti moliūgų.
Mes mesti katėms, kurią mes gauname iš vieno.
Mes įdėti katė viename.
Mes įdėti į vorą.
Mes gauname iš dviejų.
Mes atliekame voras masyvo laikiklis dvi.
Tai būtų taip malonu, jei jis dirbo, kaip kad.
Tačiau, deja, kaip matysime, tai šiek tiek sudėtingiau.
>> Prieš mes ten kokių nors klausimų, apie tai pagrindinė
steigti iš maišos lentelės?
Tai tiksliai, vaizdas ką mes patraukė ant lentos.
Bet kadangi mes išsitraukė jį ant lentos, aš neketinu eiti į jį toliau.
Iš esmės raktai, magija black box "- ar šiuo atveju, žalsvai mėlyna dėžutė - iš
maišos funkcija iškelia juos į kibirus.
Ir šiame pavyzdyje mes ne išleisti pavadinimą.
Mes dedame susietą telefoną numeris pavadinimo kibirą.
Bet tu gali labai gerai tiesiog įdėti pavadinimą į kibirą.
>> Tai tiesiog tai, ką paveikslėlį mes patraukė ant lentos.
Mes turime galimų sunkumų, nors.
Ir ten du yra ypač slides, kad aš noriu eiti per.
Pirmasis yra apie maišos funkcija.
Taigi, aš paklausiau klausimą, ką daro gera maišos funkciją?
Duodu du atsakymus.
Pirmasis yra tai, kad determinuota.
Atsižvelgiant į maišos funkcijų kontekste Ką tai reiškia?
Taip?
>> PUBLIKA: Tai galima rasti rodiklis nuolat laiko?
>> JASON Hirschhorn: Tai yra ne tai, ką jis reiškia.
Bet tai geras spėjimas.
Kas nors turi atspėti ką tai reiškia?
Tai gera maišos funkcija yra determinuota?
Annie?
>> PUBLIKA: Tai raktas gali būti priskiriamos tik į vieną vietą maišos lentelėje.
>> JASON Hirschhorn: Štai visiškai teisus.
Kiekvieną kartą, kai jūs įtraukėte į moliūgų, ji visada grąžina nulį.
Jeigu jūs įtraukėte į moliūgų ir jūsų maišos funkcija grąžina nulį, tačiau turi
tikimybė grįžti kažką dar didesnė už nulį -
tai gal jis gali grąžinti vieną, kartais arba kiti du kartus -
kad nėra gerai maišos funkcija.
Jūs esate visiškai teisus.
Jūsų maišos funkcija turi grąžinti lygiai tas pats sveikasis skaičius, šiuo atveju,
lygiai tas pats eilutę.
>> Gal ji grąžina tą patį tiksliai sveikasis skaičius už tą pačią tikslią eilutę
nepriklausomai kapitalizuoti.
Tačiau tokiu atveju jis vis dar determinuota, nes daug dalykų
atvaizduojami ant tos pačios vertės.
Tai gerai.
Tol, kol yra tik vienas produkcija tam tikru indėliu.
>> Gerai.
Antras dalykas yra tai, kad grąžina galiojančius indeksus.
Mes išvedė, kad anksčiau.
Tai maišos funkcija -
Oh boy -
maišos funkcija turėtų grįžti galiojančius indeksus.
Taigi sako -
grįžkime į šiame pavyzdyje.
Mano maišos funkcija skaičiuoja iki kad žodžio raidės.
Štai maišos funkcija.
Ir grąžina, kad sveikasis skaičius.
Taigi, jei aš turiu žodį A, tai ketina grąžinti vieną.
Ir tai vyksta įdėti čia.
Ką daryti, jei aš įdėti žodis bat?
Ji ketina grįžti tris.
Kur šikšnosparnių eiti?
>> Jis netelpa.
Bet reikia eiti kažkur.
Čia yra mano maišos lentelė juk ir viskas turi eiti kažkur.
Taigi, kur turėtų lazda eiti?
Bet mintis?
Spėlionės?
Geri spėlionės?
>> PUBLIKA: nulis.
>> JASON Hirschhorn: kodėl nulis?
>> PUBLIKA: Kadangi trys modulį trijų yra nulis?
>> JASON Hirschhorn: Trys modulį trijų yra nulis.
Tai yra puikus spėjimas, ir tai teisinga.
Taigi, šiuo atveju ji turėtų tikriausiai eiti iki nulio.
Taigi geras būdas užtikrinti, kad šis maišos Funkcija grąžina tik galiojančius indeksai yra
į modulį jį lentelės dydį.
Jei modulį viskas, ką šis grąžą trijų, jūs visada ketinate gauti
kažkas tarp nulis, vienas, o du.
Ir jei tai visada grįžta septyni, ir jūs visada modulį iš trijų, jūs
visada bus gauti tą patį.
>> Taigi, ji vis dar determinuota jei modulį.
Bet tai bus užtikrinta, kad jums niekada gauti kažką -
negalioja pramonė.
Apskritai, kad modulį turėtų atsitikti viduje jūsų maišos funkcija.
Taigi jums nereikia nerimauti apie tai.
Jūs tiesiog galite užtikrinti, kad tai galioja indeks.
Bet apie tai klausimai potencialas spąstai?
>> Gerai.
Ir mes einame.
Kitas potencialus spąstai, ir tai yra didelis vienas.
Ką daryti, jei du klavišai žemėlapis tos pačios vertės?
Taigi yra du būdai, kaip išspręsti šią.
Pirmasis yra vadinamas linijinis zondavimo, o aš tikiu,
nesiruošia eiti per.
Bet jūs turite būti susipažinę su, kaip kad veikia ir kas tai yra.
>> Antrasis ketinu eiti per nes tai yra vienas, kad daugelis
žmonių tikriausiai galų gale nuspręsti naudoti savo problemų rinkinį.
Žinoma, jūs neturite.
Bet problemos rinkinys, daug žmonių linkę rinktis sukurti maišos lentelę
su atskiru susiejami įgyvendinti jų žodynas.
Taigi, mes ketiname eiti per ką tai reiškia sukurti maišos lentelę
atskiras susiejami.
>> Taigi, aš įdėti į moliūgų.
Ji grąžina nulį.
Ir aš įdėti moliūgų čia.
Tada aš įdėti -
kas kita Helovinas teminius dalykas?
>> PUBLIKA: saldainiai.
>> JASON Hirschhorn: Saldainiai!
Tai puikus vienas.
Aš įdėti saldainiai ir saldainiai taip pat suteikia man nulis.
Ką man daryti?
Any ideas?
Kadangi jūs visi tarsi žinome, ką atskiras susiejami yra.
Taigi kokių nors idėjų, ką daryti?
Taip.
>> PUBLIKA: Eksploatacijos eilutę faktiškai maišos lentelėje.
>> JASON Hirschhorn: Taigi mes ketiname atkreipti gera idėja čia.
Gerai.
>> PUBLIKA: turi Hashtable [Nesigirdi]
žymeklis, kad atkreipia dėmesį į Sąrašo pradžioje.
Ir tada jau moliūgų būti pirmasis vertė toje susijęs sąrašą ir saldainiai būti
Antrasis vertė toje susijęs sąrašą.
>> JASON Hirschhorn: Gerai.
Marcus, kad buvo neįvykdyti.
Aš ruošiuosi nutraukti, kad žemyn.
Marcus sako ne perrašyti moliūgų.
Tai būtų blogai.
Nedėkite saldainiai kažkur kitur.
Mes ketiname juos tiek nulio.
Tačiau mes ketiname spręsti išleisti jas nulio
sukurti sąrašą nulio.
Ir mes ketiname sukurti sąrašą viskas, kas priskiriama prie nulio.
Ir geriausias būdas mes sužinojome, sukurti sąrašas, kuris gali plėstis ir trauktis
dinamiškai nėra per kitas masyvo.
Taigi, ne multi-dimensional array.
Bet tiesiog sukurti susietą sąrašą.
>> Taigi, ką jis pasiūlė -
Aš ruošiuosi gauti nauja -
yra sukurti su rodyklėmis masyvas, rodykles masyvo.
Gerai.
Bet idėja, ar užuomina, ką tipas Šio patarimų turėtų būti?
Marcus?
>> PUBLIKA: rodykles -
>> JASON Hirschhorn: Kadangi jums sakė susijęs sąrašas, taigi -
>> PUBLIKA: Mazgas patarimų?
>> JASON Hirschhorn: Mazgas patarimų.
Jei mūsų bendroje dalykai sąrašas yra mazgai, tada jie
turėtų būti mazgų rodyklės.
Ir ką jie atitiktų iš pradžių?
>> PUBLIKA: NULL.
>> JASON Hirschhorn: NULL.
Taigi mūsų tuščias dalykas.
Moliūgų grįžta nulio.
Ką mes darome?
Pasivaikščiojimas man per jį?
Tiesą sakant, Markas jau davė man.
Kažkas man vaikščioti per ją.
Ką mes darome, kai -
tai atrodo labai panašus į ką mes tik darome.
Avi.
>> PUBLIKA: Aš ruošiuosi atspėti.
Taigi, kai jūs gaunate saldainiai.
>> JASON Hirschhorn: Taip.
Na, mes turime moliūgų.
Leiskite gauti mūsų pirmasis.
Mes turime moliūgų.
>> PUBLIKA: Gerai.
Moliūgų grįžta nulio.
Taigi jūs įdėti ją, kad.
Arba iš tikrųjų, jūs jį susijusioje sąrašą.
>> JASON Hirschhorn: Kaip mes įdėti jį į susietą sąrašą?
>> Auditorija: O, faktinį sintaksė?
>> JASON Hirschhorn: Tiesiog vaikščioti -
pasakyti daugiau.
Ką mes darome?
>> Auditorija: Jūs tiesiog įdėkite tai kaip pirmą mazgas.
>> JASON Hirschhorn: Gerai.
Taigi, mes turime mazgas, moliūgų.
Ir dabar, kaip aš jį įterpti?
>> Auditorija: Jūs priskirti jį į rodyklę.
>> JASON Hirschhorn: Kuris žymeklis?
>> PUBLIKA: rodyklė ant nulio.
>> JASON Hirschhorn: Taigi, kur ar šis punktas?
>> PUBLIKA: nulis dabar.
>> JASON Hirschhorn: Na, ji nukreipta į null.
Bet aš išleisti į moliūgų.
Taigi, kur ji turėtų atkreipti?
>> Auditorija: Kad moliūgų.
>> JASON Hirschhorn: Norėdami moliūgų.
Būtent.
Taigi tai rodo, moliūgų.
Ir kur tai daro rodyklė moliūgų taškas?
Į
>> PUBLIKA: NULL.
>> JASON Hirschhorn: nulis.
Būtent.
Taigi mes tiesiog įterpiamas kažką į susijusį sąrašą.
Mes tiesiog rašė šį kodą tai padaryti.
Beveik mes beveik turiu jį visiškai krekingo.
Dabar mes įterpti saldainiai.
Mūsų saldainiai taip pat eina į nulį.
Taigi, ką mes darome su saldainiais?
>> PUBLIKA: Tai priklauso nuo to, ar ne mes bandome rūšiuoti.
>> JASON Hirschhorn: Štai visiškai teisus.
Tai priklauso nuo to, ar mes bandome rūšiuoti.
Tarkime, mes nesame ketina rūšiuoti.
>> PUBLIKA: Na tada kaip aptarėme anksčiau, tai paprasčiausias tiesiog įdėti ją
pačioje pradžioje, todėl rodyklė nuo nulio kiekis iki saldainiai.
>> JASON Hirschhorn: Gerai.
Laikykis.
Leiskite sukurti saldainiai čia.
Taigi ši rodyklė -
>> PUBLIKA: Taip, dabar turėtų būti nukreipta į saldainių.
Tada iš žymiklį saldainiai taškas moliūgų.
>> JASON Hirschhorn: Kaip tai?
Ir sako, kad mes turime kitą dalykas map iki nulio?
>> PUBLIKA: Na, jūs tiesiog daryti tą patį?
>> JASON Hirschhorn: Ar tą patį.
Taigi šiuo atveju, jei mes ne nori, kad ji surūšiuoti
skamba gana paprasta.
Mes priimame žymiklį indeks pateiktas mūsų maišos funkcija.
Mes turime tą tašką į mūsų naują mazgas.
Ir tada kokia ji buvo nukreipta anksčiau -
šiuo atveju null, į Antruoju atveju moliūgų -
kad ir kokia ji nukreipta į anksčiau, mes pridėsime į kitą iš
Mūsų naujas mazgas.
Mes įterpti kažką pradžioje.
Iš tikrųjų tai yra daug paprasčiau, nei bando išlaikyti sąrašas, surūšiuotas.
Bet vėl, paieška bus daugiau sudėtinga čia.
Mes visada turime eiti iki galo.
>> Gerai.
Bet apie atskirą susiejami klausimų?
Kaip tai veikia?
Paprašykite juos dabar.
Aš tikrai noriu įsitikinti, kad jūs visi suprasti tai, kol mes galvą.
>> PUBLIKA: Kodėl jūs įdėti moliūgų ir saldainiai į patį
dalis maišos lentelės?
>> JASON Hirschhorn: Geras klausimas.
Kodėl mes juos į tą patį dalis maišos lentelės?
Na, šiuo atveju mūsų maišos funkcija grįžta nulio jiems abiems.
Taigi jie turi eiti Indice nulio nes tai, kur mes einame
jų ieškoti, jei mes kada nors norite ieškoti juos.
Vėlgi, su linijiniu zondavimo metodu mes ne įdėti juos abu iki nulio.
Tačiau atskiros grandinės principas, mes ketiname juos abu iki nulio
ir tada sukurti sąrašą nuo nulio.
>> Ir mes nenorime perrašyti moliūgų tiesiog, kad, nes tada mes
manyti, kad moliūgų buvo niekada įdėta.
Jei mes tiesiog laikyti vienas dalykas vieta, kad bus blogai.
Tada nebūtų galimybė iš mūsų kada nors -
jei mes kada nors turėjo dublikatą, tada mes tiesiog ištrinti savo pradinės vertės.
Štai kodėl mes darome šį požiūrį.
Arba tai, kodėl mes pasirinkome - bet vėlgi, mes pasirinko atskirą grupavimo metodą,
kuris yra daug kitų metodų galima pasirinkti.
Ar tai atsakymas į jūsų klausimą?
>> Gerai.
Carlos.
Linijinis zondavimo reikštų -
jei mes pastebėjome susidūrimo nuliniai, mes atrodytų kitame vietoje pamatyti, jei
ji buvo atvira ir padėkite jį ten.
Ir tada mes žiūrime į kitą sportą ir pamatyti, jei tai buvo atviras ir jį ten.
Taigi matome, šalia galima atvira vieta ir padėkite jį ten.
Visi kiti klausimai?
Taip, AVI.
>> PUBLIKA: Kaip sekti iki to, ką reiškia kito vietoje?
Maišos lentelės arba susietą sąrašą.
>> JASON Hirschhorn: Linijinių programavimas, nėra susiję sąrašai.
Šalia dėmė ant maišos lentelėje.
>> PUBLIKA: Gerai.
Taigi maišos lentelė būtų inicializuoti dydį -
kaip stygų skaičius kad jums buvo įterpti?
>> JASON Hirschhorn: Galima būtų noriu, kad ji būtų tikrai didelis.
Taip.
Čia yra tai, ką mes paveikslėlį tiesiog patraukė ant lentos.
Vėlgi, mes turime susidūrimo čia.
ne 152.
Ir pamatysite, mes sukūrėme susijęs sąrašas ne apie tai.
Vėlgi, maišos lentelė atskiras susiejami požiūris yra ne tas, kurį
turi imtis nustatyti problemos šešių, tačiau yra vienas, kad daug "
studentai linkę imtis.
Taigi dėl šio rašto, leiskite mums kalbėti trumpai kol mes galvą apie problemą šešių,
ir tada aš pasidalinti su jumis pasakojimu.
Mes turime tris minutes.
>> Problema nustatyti šešių.
Turite keturias funkcijas -
apkrova, patikrinkite, dydį, ir iškrauti.
Apkrova -
Na, mes jau vyksta perkrovos tik dabar.
Mes atkreipė apkrova ant lentos.
Ir mes net pradėjo kodavimo daug daug įterpiant į susietą sąrašą.
Taigi apkrovai, yra ne daugiau nei kas mes ką tik buvo daryti.
>> Patikrinimas, kai jūs turite kažkas pakrautas.
Tai tas pats procesas, kaip šis.
Tie patys pirmieji dviejų dalių, kur jūs mesti kažkas į maišos funkcija
ir gauti jo vertę.
Bet dabar mes ne įterpti jį.
Dabar mes ieškome už jį.
Aš pavyzdinis kodas parašyta rasti kažkas susietą sąrašą.
Raginu jus praktikuoti tai.
Bet intuityviai rasti kažką yra gana panašus į įterpti kažką.
Iš tiesų, mes patraukė rasti paveikslėlį kažkas susietą sąrašą, juda
per kol jūs turite iki galo.
Ir jei jūs turite iki galo ir negalėjo rasti, tada ji nėra.
Štai patikrinimas iš esmės.
>> Kitas dydis.
Praleiskime dydį.
Galiausiai jūs iškrauti.
Iškelti yra vienas mes negalime parengti ant lentos arba koduojami dar.
Bet raginu jus išbandyti kodavimo jį mūsų mėginio susijęs sąrašo pavyzdys.
Bet iškrauti intuityviai yra panašus į nemokamai -
ar aš turiu galvoje, yra panašus į patikrinti.
Išskyrus dabar kiekvieną kartą jūs ketinate per, jūs ne tik patikrinti,
pamatyti, jei jūs turite savo vertę ten.
Bet jūs vartojate šį mazgą ir išlaisvina jį iš esmės.
Štai ką iškrauti prašo jus padaryti.
Nemokama viskas jūs malloced.
Taigi, jūs ketinate per visą sąrašą vėl išgyvena visą maišos
stalo vėl.
Šį kartą ne patikrinti pamatyti, kas ten.
Tiesiog išlaisvinti, kas ten.
>> Ir pagaliau dydis.
Dydis turėtų būti įgyvendintos.
Jei neturite įgyvendinti dydį -
Aš pasakyti, kad tai, kaip šis.
Jei neturite įgyvendinti dydį tiksliai viena eilutė kodo įskaitant
grįžti pareiškimą, esate daro dydį neteisingai.
Taigi, įsitikinkite, kad dydis, visiškai dizainas taškų, darai tai lygiai vieną
linija kodu, įskaitant Grizimas.
>> Ir nereikia pakuoti dar Akchar.
Entuziastė.
Aš norėjau pasakyti, ačiū vaikinai Atvykimo į skyrių.
Ar Laimingas Helovinas.
Čia yra mano kostiumas.
Aš dėvėti šį ketvirtadienį jei matau jus darbo valandomis.
Ir jei jums įdomu, šiek tiek daugiau fonas, kad šio kostiumo, jausti
nemokamai patikrinti 2011 skyrių dėl sprendimo, kodėl aš istorija
dėvėti moliūgų kostiumas.
Ir tai liūdna istorija.
Taigi, įsitikinkite, kad turite netoliese keletas audinių.
Bet, kad jei turite kokių nors Klausimai aš klijuoti aplink
ne po skyriuje.
Sėkmės problema nustatyti šešių.
Ir kaip visada, jei turite kokių nors klausimai, leiskite man žinoti.