JASON HIRSCHHORN: Karibu kila mtu kwa sehemu ya Saba. Sisi ni katika wiki saba bila shaka. Na hii Alhamisi ujao ni Halloween hivyo mimi amevaa juu kama pumpkin. Sikuweza bend juu ya kuweka na juu ya viatu yangu, hivyo ndiyo sababu mimi nina tu amevaa soksi. Mimi pia si amevaa kitu chochote chini ya hii, hivyo siwezi kuchukua ni mbali kama ni bughudha na wewe. Mimi kuomba msamaha mapema kwa ajili hiyo. Huna haja ya kufikiria nini kinaendelea. Mimi amevaa mabondia. Hivyo ni njema. Mimi na hadithi tena kuhusu kwa nini mimi nina wamevaa kama pumpkin, lakini nina kwenda ila kwa ajili ya baadaye katika sehemu hii kwa sababu mimi unataka kuanza. Tuna mengi ya mambo ya kusisimua kwenda juu ya wiki hii. Wengi wao yanahusiana moja kwa moja hii kuweka wiki tatizo, misspellings. Tunakwenda kwenda juu ya uhusiano orodha na meza hash kwa ajili ya sehemu nzima. Mimi kuweka orodha hii juu ya kila wiki, orodha ya rasilimali kwa ajili yenu kukusaidia na vifaa juu ya kozi hii. Kama hasara au kama kuangalia kwa baadhi ya habari zaidi, angalia moja kati ya rasilimali hizi. Tena, pset6 ni misspellings, pset ya wiki hii. Na pia moyo wewe, na mimi moyo, kwa kutumia baadhi nyingine rasilimali mahsusi kwa ajili ya pset hii. Hasa, tatu nimekuwa waliotajwa juu ya screen - GDB, ambayo tumekuwa ukoo na na wamekuwa wakitumia kwa muda sasa, ni kwenda kuwa na manufaa sana wiki hii. Basi, mimi kuweka kwamba hapa. Lakini, wakati wewe ni kufanya kazi kwa C, unatakiwa kutumia GDB kwa Debug programu yako. Wiki hii pia Valgrind. Je, mtu yeyote kujua nini Valgrind gani? Watazamaji: Ni hundi ya uvujaji kumbukumbu? JASON HIRSCHHORN: Valgrind hundi kwa ajili ya uvujaji wa kumbukumbu. Hivyo kama wewe malloc kitu katika yako mpango, wewe ni kuuliza kwa ajili ya kumbukumbu. Mwishoni mwa mpango wako, una kuandika bure juu ya kila kitu wameweza malloced kutoa kumbukumbu nyuma. Kama huna kuandika bure mwishoni na mpango wako anakuja kumalizia, kila kitu moja kwa moja kuwa huru. Na kwa ajili ya programu ndogo, ni kuwa kubwa mpango huo. Lakini kama wewe ni kuandika mbio tena mpango huo haina kujiondoa, lazima, katika dakika kadhaa au a wanandoa wa sekunde, basi kumbukumbu uvujaji unaweza kuwa mpango mkubwa. Hivyo kwa pset6, matarajio ni kwamba utakuwa na uvujaji zero kumbukumbu na programu yako. Kwa kuangalia kwa uvujaji kumbukumbu, kukimbia Valgrind na nitakupa baadhi nzuri pato kuruhusu kujua kama au si kila kitu bure. Tutaweza mazoezi na baadaye leo, hopefully. Hatimaye, amri tofauti. Unaweza kutumika kitu sawa na ni katika pset5 kwa Peek chombo. Kuruhusiwa wewe kuangalia ndani. Unaweza pia kutumika tofauti, pia, kwa kuweka tatizo spec. Lakini katika kuruhusiwa wewe kulinganisha files mbili. Unaweza kulinganisha bitmap file na info headers ya ufumbuzi wafanyakazi na ufumbuzi wako katika pset5 kama alichagua matumizi yake. Tofauti itawawezesha kufanya hivyo, kama vile. Unaweza kulinganisha jibu sahihi kwa tatizo wiki hii kuweka kwa jibu lako na kuona kama hayo yanaendana au kuona ambapo makosa ni. Basi hizo zana tatu nzuri kwamba unapaswa kutumia kwa wiki hii, na dhahiri kuangalia programu yako na zana hizo tatu kabla ya kumwelekeza in Tena, kama nilizozitaja kila wiki, kama una maoni yoyote kwa ajili yangu - wote chanya na ya kiubunifu - kujisikia huru kwa kichwa na tovuti chini ya slide hii na pembejeo huko. Mimi kwa kweli kufahamu yoyote na maoni yote. Na kama wewe nipe mambo maalum ambayo Mimi siwezi kufanya kuboresha au kwamba mimi nina kufanya vizuri kwamba ungependa mimi kuendelea, mimi kuchukua kwa moyo na kweli kujaribu kwa bidii ili kusikiliza kwa maoni yako. Siwezi kuahidi mimi nina kwenda kufanya kila kitu, ingawa, kama amevaa pumpkin Costume kila wiki. Hivyo sisi ni kwenda kutumia wingi wa sehemu, kama nilivyoeleza, kuzungumza juu ya orodha ya wanaohusishwa na meza hash, ambayo itakuwa moja kwa moja husika na kuweka tatizo wiki hii. Orodha wanaohusishwa tutaweza kwenda juu kiasi haraka kwa sababu tumekuwa alitumia kidogo ya haki ya muda kwenda juu yake katika sehemu. Na hivyo tutaweza kupata moja kwa moja katika coding matatizo kwa orodha wanaohusishwa. Na kisha mwishoni tutaweza kuzungumzia hash meza na jinsi wao kuomba hii tatizo wiki kuweka. Umeona kanuni hii kabla ya. Hii ni struct, na ni kufafanua kitu mpya iitwayo nodi. Na ndani ya node kuna integer haki hapa na pale ni pointer kwa node mwingine. Tumeona hili kabla. Hii imekuwa kuja kwa wiki kadhaa sasa. Inaunganisha kuyatumia, ambayo tumekuwa kufanya kazi pamoja, na structs, ambayo kuruhusu sisi kuchanganya mbili tofauti mambo katika data aina moja. Kuna mengi kinachoendelea juu ya screen. Lakini wote ni lazima kuwa kiasi familiar na wewe. On line ya kwanza, sisi kutangaza node mpya. Na kisha ndani kwamba nodi mpya, mimi kuweka integer katika node kwa moja. Tunaona juu ya mstari wa pili mimi nina kufanya printf amri, lakini nimepata grayed nje amri printf kwa sababu kwa kweli sehemu muhimu ni mstari huu hapa - new_node.n. Gani dot maana yake nini? Watazamaji: Go to node na kutathmini n thamani kwa ajili yake. JASON HIRSCHHORN: Hiyo ni sahihi kabisa. Dot maana kupata n sehemu ya nodi hii mpya. Hii mstari wa pili anafanya nini? Michael. Watazamaji: Ni inajenga node mwingine kwamba uhakika na node mpya. JASON HIRSCHHORN: Kwa hiyo haina kujenga node mpya. Ni inajenga nini? Watazamaji: pointer. JASON HIRSCHHORN: pointer kwa node, kama unahitajika kwa * hii node hapa. Hivyo inajenga pointer kwa nodi. Na ambayo node ni ni akizungumzia kwa, Michael? Watazamaji: New node? JASON HIRSCHHORN: New nodi. Na ni akizungumzia huko kwa sababu tumekuwa aliyopewa ni ya barua pepe ya node mpya. Na sasa katika mstari huu tunaona njia mbili tofauti ya kuonyesha kitu kimoja. Na nilitaka kwa uhakika jinsi hizi mambo mawili ni sawa. Katika mstari wa kwanza, sisi dereference pointer. Kwa hiyo sisi kwenda nodi. Hiyo ni nini nyota hii ina maana. Tumeona kuwa kabla na kuyatumia. Kwenda kwamba nodi. Hiyo ni katika mabano. Na kisha kupata kupitia dot operator n hiki ya kwamba nodi. Hivyo hiyo kuchukua syntax tuliona haki hapa na sasa kuitumia na pointer. Bila shaka, anapata aina ya busy kama wewe ni kuandika mabano hao - kwamba nyota na kwamba dot. Ni anapata kidogo busy. Hivyo tuna baadhi sukari Kiwango cha kisintaksia. Na line haki hii hapa - ptr_node-> n. Kwamba hana kitu kimoja halisi. Hivyo wale mistari miwili ya maadili ya ni sawa na kufanya exact kitu. Lakini nilitaka uhakika wale nje kabla ya sisi kwenda yoyote zaidi ili kuelewa kwamba kweli jambo hili hapa ni tu Kiwango cha kisintaksia sukari kwa dereferencing pointer na kisha kwenda n sehemu ya kwamba struct. Maswali yoyote kuhusu slide hii? OK. Hivyo sisi ni kwenda kupitia wanandoa wa shughuli za kwamba unaweza kufanya juu ya wanaohusishwa orodha. orodha wanaohusishwa, kukumbuka, ni mfululizo wa nodes kwamba uhakika na mtu mwingine. Na sisi kwa ujumla kuanza na pointer kuitwa kichwa, kwa ujumla, kwamba pointi kwa Jambo la kwanza katika orodha. Kadhalika mstari wa kwanza hapa, sisi kuwa na asili L yetu ya kwanza. Ili jambo unaweza kufikiria - hii Nakala haki hapa unaweza kufikiria kama tu pointer tumekuwa kuhifadhiwa mahali fulani kwamba pointi kwa hiki kwanza. Na katika orodha hii wanaohusishwa tuna nodes nne. Kila node ni sanduku kubwa. sanduku kubwa ndani ya kubwa sanduku ni integer sehemu. Na kisha tuna pointer sehemu. Masanduku haya si inayotolewa kwa wadogo kwa sababu jinsi kubwa ni integer katika ka? Jinsi kubwa sasa? Nne. Na jinsi kubwa ni pointer? Nne. Hivyo kweli, kama tulikuwa kuteka hii wadogo wawili masanduku itakuwa na ukubwa huo. Katika kesi hiyo, tunataka kuingiza kitu katika orodha wanaohusishwa. Hivyo unaweza kuona chini hapa sisi ni kuingiza tano Sisi tembeeni katika orodha wanaohusishwa, kupata ambapo tano unaendelea, na kisha kuingiza. Hebu kuvunja kwamba chini na kwenda kidogo polepole zaidi. Mimi nina kwenda kwa uhakika na bodi. Hivyo tuna node zetu tano kwamba tumeunda katika mallocs. Kwa nini kila mtu laughing? Just kidding. OK. Hivyo tumekuwa malloced tano. Tumeunda node hii mahali pengine. Sisi kuwa ni tayari kwenda. Sisi kuanza mbele ya orodha yetu na mbili. Na tunataka kuingiza kwa mtindo sorted. Hivyo kama sisi kuona wawili na tunataka kuweka katika tano, je, sisi kufanya wakati tunaona kitu kidogo kuliko sisi? Nini? Tunataka kuingiza tano katika hili orodha wanaohusishwa, kuweka yamepangwa. Tunaona namba mbili. Hivyo tunafanya nini? Marcus? Watazamaji: Wito pointer nodi ijayo. JASON HIRSCHHORN: Na kwa nini sisi kwenda moja ijayo? Watazamaji: Kwa sababu ni node ya pili katika orodha. Na sisi tu kujua kwamba eneo nyingine. JASON HIRSCHHORN: Na tano ni kubwa miaka miwili, hasa. Kwa sababu tunataka kuweka ni sorted. Hivyo tano ni zaidi ya miaka miwili. Kwa hiyo sisi kuendelea na moja ijayo. Na sasa sisi kufikia nne. Na kile kinachotokea wakati sisi kufikia nne? Tano, ni mkubwa kuliko nne. Kwa hiyo sisi kuendelea. Na sasa tuko saa sita. Na nini sisi kuona katika sita? Ndiyo, Carlos? Watazamaji: Sita ni zaidi ya tano. JASON HIRSCHHORN: Sita ni zaidi ya tano. Hivyo kwamba ni wapi tunataka kuingiza tano. Hata hivyo, kukumbuka kwamba kama sisi tu na pointer moja hapa - hii ni pointer yetu ya ziada kwamba apitaye kupitia orodha. Na sisi ni akizungumzia sita. Tumekuwa waliopotea wimbo wa nini huja kabla ya sita. Hivyo kama tunataka kuingiza kitu katika hii orodha kuweka sorted, sisi pengine wanahitaji kuyatumia ngapi? Watazamaji: Two. JASON HIRSCHORN: Two. Moja kwa kuweka wimbo wa sasa moja na moja kwa kuweka wimbo wa mmoja uliopita. Hii ni tu orodha moja moja wanaohusishwa. Ni tu unaendelea mwelekeo mmoja. Kama tungekuwa na orodha mara mbili wanaohusishwa, ambapo kila kitu akizungumzia jambo baada yake na kitu kabla yake, kisha sisi bila haja ya kufanya hivyo. Lakini katika kesi hii hatutaki kupoteza wimbo wa nini alikuja mbele yetu katika kesi tunahitaji kuingiza tano mahali fulani katikati. Sema tulikuwa kuingiza tisa. Nini kitafanyika wakati tulipata nane? Watazamaji: You d na kupata kwamba null uhakika. Badala ya kuwa na null hatua d na kuongeza hiki na kisha kuwa ni uhakika na tisa. JASON HIRSCHORN: Hasa. Ili tuweze kupata nane. Sisi kufikia mwisho wa orodha kwa sababu hii ni akizungumzia null. Na sasa, badala ya kuwa ni uhakika na null sisi kuwa ni uhakika na node wetu mpya. Na sisi kuweka pointer katika node wetu mpya wa null. Je, mtu yeyote una maswali yoyote kuhusu kuingiza? Nini kama mimi hawajali kutunza orodha yamepangwa? Watazamaji: Fimbo yake katika mwanzo wala mwisho. JASON HIRSCHORN: Fimbo yake katika mwanzo wala mwisho. Ambayo moja tunapaswa kufanya nini? Bobby? Kwa nini mwisho? Watazamaji: Kwa sababu mwanzo tayari kujazwa. JASON HIRSCHORN: OK. mwanzo ni ikaanza kujaa maji. Nani anataka wanasema dhidi ya Bobby. Marcus. Watazamaji: Naam pengine unataka fimbo yake mwanzoni kwa sababu vinginevyo kama wewe kuweka katika mwisho wewe d na tindanga orodha nzima. JASON HIRSCHORN: Hasa. Hivyo kama sisi ni kufikiri kuhusu Runtime, Runtime ya kuingiza mwishoni itakuwa n, ukubwa wa jambo hili. Nini kubwa O Runtime ya kuingiza mwanzoni? Mara kwa mara wakati. Hivyo kama wewe hawajali kutunza kitu yamepangwa, bora zaidi tu kuingiza katika mwanzo wa orodha hii. Na ambayo yanaweza kufanyika katika wakati mara kwa mara. OK. Kazi ya pili ni kupata, ambayo wengine - tumekuwa phrased hii kama search. Lakini tunakwenda kuangalia njia wanaohusishwa orodha kwa baadhi kitu. You guys tumeona kanuni kwa ajili ya kutafuta kabla ya katika hotuba. Lakini sisi aina ya tu alifanya hivyo kwa kuingiza, au angalau kuingiza kitu yamepangwa. Wewe kuangalia njia ya, kwenda node na node, mpaka kupata idadi hiyo wewe ni kutafuta. Kile kinachotokea kama wewe kufikia mwisho wa orodha? Sema mimi nina kuangalia kwa mimi tisa na kufikia mwisho wa orodha. Tufanye nini? Watazamaji: Kurudi uongo? JASON HIRSCHORN: Kurudi uongo. Sisi hakuwa na kupata hiyo. Kama kufikia mwisho wa orodha na hakuwa kupata idadi uko kutafuta, si huko. Maswali yoyote kuhusu kupata? Kama hii ilikuwa orodha sorted, gani kuwa tofauti kwa ajili ya kutafuta yetu? Yeah. Watazamaji: Itakuwa kupata thamani ya kwanza kwamba zaidi ya moja wewe ni kuangalia kwa na kisha kurudi uongo. JASON HIRSCHORN: Hasa. Hivyo kama ni orodha sorted, kama sisi kupata kitu ambacho ni zaidi kuliko yale sisi ni kuangalia kwa, hatuna haja ya kuendelea hadi mwisho wa orodha. Tunaweza katika hatua hiyo kurudi uongo kwa sababu sisi siyo kwenda kupata hiyo. swali ni sasa, tumekuwa kuongelea kutunza orodha wanaohusishwa yamepangwa, kushika yao zisizochambuliwa. Hiyo kwenda kuwa kitu wewe ni pengine ni kwenda na kufikiri kuhusu wakati coding kuweka tatizo tano kama wewe kuchagua hash meza na tofauti chaining mbinu, ambayo tutaweza kuzungumzia baadaye. Lakini ni thamani yake kwa kuweka orodha sorted na kisha kuwa na uwezo wa labda na utafutaji wepesi? Au ni bora kwa haraka kuingiza kitu katika Runtime mara kwa mara lakini kisha na tena kutafuta? Hiyo ni tradeoff haki pale kwamba wewe kupata kuamua nini ni sahihi zaidi kwa shida yako maalum. Na kuna si lazima moja jibu sahihi kabisa. Lakini ni hakika uamuzi kupata kufanya, na pengine nzuri ya kutetea kwamba katika, kusema, maoni au mbili kwa nini alichagua moja juu ya nyingine. Hatimaye, kufuta. Tumeona kufuta. Ni sawa na kutafuta. Sisi kuangalia kwa kipengele. Kusema sisi ni kujaribu kufuta sita. Hivyo tunaona sita hapa. jambo ambalo sisi kuhakikisha sisi kufanya ni kwamba chochote ni akizungumzia sita - kama tunaona katika hatua mbili chini hapa - chochote ni akizungumzia mahitaji sita kwa ruka sita sasa na kubadilishwa kwa chochote sita ni akizungumzia. Hatutaki milele yatima wengine wa orodha yetu na kusahau kuweka kwamba pointer uliopita. Na kisha wakati mwingine, kulingana juu ya mpango, wao itabidi tu kufuta node hii kabisa. Wakati mwingine utasikia wanataka kurudi thamani hiyo katika node hii. Hivyo ndivyo kufuta kazi. Maswali yoyote juu ya kufuta? Watazamaji: Hivyo kama wewe ni kwenda kufuta yake, bila wewe tu kutumia bure kwa sababu labda ilikuwa malloced? JASON HIRSCHORN: Kama unataka bure kitu ambacho ni kweli kabisa na wewe malloced yake. Sema sisi walitaka kurudi thamani hii. Tunaweza kurudi sita na kisha bure node hii na bure wito juu yake. Au pengine tunatarajia kuwaita bure kwanza na kisha kurudi sita. OK. Hivyo basi hoja juu ya mazoezi ya coding. Tunakwenda na kanuni majukumu matatu. moja ya kwanza iitwayo insert_node. Hivyo kuwa kificho kwamba mimi yaliyopelekwa wewe, na kama wewe ni kuangalia hii baadaye unaweza kupata code katika linked.c kwenye tovuti CS50. Lakini katika linked.c, kuna baadhi ya mifupa kificho kwamba tayari yameandikwa kwa ajili yenu. Na kisha kuna kazi wanandoa unahitaji kuandika. Kwanza tunakwenda kuandika insert_node. Na nini insert_node gani ipo kuwekeza integer. Na wewe ni kutoa integer katika orodha wanaohusishwa. Na hasa, unahitaji kuweka orodha yamepangwa wadogo na kubwa. Pia, hawataki kuingiza marudio yoyote. Hatimaye, kama unaweza kuona insert_node anarudi bool. Hivyo wewe ni zinatakiwa kuruhusu user kujua kama au si kuingiza mara mafanikio na kurudi kweli au uongo. Mwishoni mwa mpango huu - na kwa hatua hii huna haja ya na wasiwasi juu ya kumkomboa kitu chochote. Hivyo wote ni kufanya ni kuchukua integer na kuingiza katika orodha. Hiyo ni nini mimi nina kuuliza kufanya sasa. Tena, katika linked.c, ambayo wote wanayo, ni mifupa code. Na unapaswa kuona kuelekea chini sampuli kazi tamko hilo. Hata hivyo, kabla ya kwenda katika coding ni katika C, mimi sana moyo kwenda kupitia hatua tumekuwa kufanya mazoezi kila wiki. Tumekuwa tayari wamekwenda kupitia picha ya hili. Hivyo unapaswa kuwa na baadhi ya ufahamu ya jinsi hii matendo. Lakini napenda moyo kuandika baadhi pseudocode kabla ya kupiga mbizi in Na sisi ni kwenda juu ya pseudocode kama kikundi. Na kisha mara moja umefanya hati yako pseudocode, na mara moja tumekuwa imeandikwa wetu pseudocode kama kundi, unaweza kwenda katika coding katika C. Kama vichwa juu, insert_node kazi pengine ni trickiest ya tatu tunakwenda kuandika kwa sababu mimi aliongeza baadhi ya vikwazo ziada kwa programu yako, hasa kwamba wewe si kwenda kuingiza yoyote marudio na kwamba orodha wanapaswa kubakia sorted. Hivyo hii ni mpango zisizo yasiyo na maana kwamba unahitaji na kanuni. Na kwa nini wewe kuchukua 06:55 dakika tu kupata kazi ya pseudocode na kanuni. Na kisha tutaanza kwenda kama kikundi. Tena, kama una maswali yoyote tu kunyanyua mkono wako na mimi itabidi kuja karibu. . Sisi pia kwa ujumla kufanya haya - au mimi si wazi kusema wanaweza kufanya kazi na watu. Lakini ni wazi, mimi sana moyo, kama una maswali, kuuliza jirani ameketi karibu na wewe au hata kazi na mtu mwingine kama unataka. Hii haina kuwa mtu shughuli kimya. Hebu kuanza na kuandika baadhi ya pseudocode kwenye ubao. Ambaye anaweza nipe mstari wa kwanza wa pseudocode kwa mpango huu? Kwa ajili ya kazi hii, badala - insert_node. Alden? Watazamaji: Kwa hivyo jambo la kwanza mimi ilikuwa kujenga pointer mpya ya node na mimi kuanzishwa ni akizungumzia sawa kitu kwamba orodha akizungumzia. JASON HIRSCHORN: OK. Hivyo wewe ni kujenga pointer mpya orodha, si kwa nodi. Watazamaji: Haki. Yeah. JASON HIRSCHORN: OK. Na kisha nini tunataka kufanya? Nini baada ya hayo? Nini kuhusu node? Hatuna nodi. Sisi tu kuwa na thamani. Kama tunataka kuingiza node, sisi kufanya nini haja ya kufanya kwanza kabla ya sisi wanaweza hata kufikiri juu ya kuingiza? Watazamaji: Oh, sorry. tunahitaji malloc nafasi kwa nodi. JASON HIRSCHORN: Excellent. Hebu kufanya - OK. Hawezi kufikia kuwa juu. OK. Sisi ni kwenda chini, na kisha sisi ni kutumia safu mbili. Siwezi kwenda kwamba - OK. Kujenga node mpya. Unaweza kuunda pointer mwingine kuorodhesha au unaweza kutumia tu orodha kama ipo. Si kweli haja ya kufanya hivyo. Hivyo sisi kujenga node mpya. Kubwa. Hiyo ni nini cha kufanya kwanza. Nini hapo? Watazamaji: Ngoja. Je, sisi kujenga nodi mpya sasa au tunapaswa kusubiri kuhakikisha kwamba hakuna marudio ya node kwenye orodha ya kabla ya sisi kujenga? JASON HIRSCHORN: swali Good. Hebu kushikilia kwamba kwa ajili ya baadaye kwa sababu wengi wa wakati tutaweza kuwa na kujenga node mpya. Hivyo tutaweza kuendelea kuwa hapa. Lakini hiyo ni swali zuri. Kama sisi kujenga na sisi kupata duplicate, kile lazima sisi kufanya kabla ya kurejea? Watazamaji: Free yake. JASON HIRSCHORN: Yeah. Pengine bure yake. OK. Tufanye nini baada ya sisi kujenga node mpya? Annie? Watazamaji: Sisi kuweka idadi katika node? JASON HIRSCHORN: Hasa. Sisi kuweka idadi - sisi malloc nafasi. Mimi nina kwenda kuondoka kwamba wote kama mstari mmoja. Lakini wewe ni haki. Sisi malloc nafasi, na kisha sisi kuweka idadi in Tunaweza hata kuweka pointer sehemu yake null. Hiyo ni kweli kabisa. Na kisha nini kuhusu baada ya hayo? Tulianzisha picha hii kwenye ubao. Hivyo tunafanya nini? Watazamaji: Sisi kupitia orodha. JASON HIRSCHORN: Nenda kwa njia ya orodha. OK. Na nini sisi kuangalia kwa katika kila nodi. Kurt, je, sisi kuangalia kwa katika kila node? Watazamaji: Angalia iwapo n thamani ya kwamba node ni mkubwa kuliko n thamani ya nodi yetu. JASON HIRSCHORN: OK. Mimi nina kwenda kufanya - yeah, OK. Hivyo ni n - Mimi nina kwenda kusema kama thamani ni zaidi kuliko node hii, basi tunafanya nini? Watazamaji: Naam, kisha sisi kuingiza jambo la haki kabla ya hapo. JASON HIRSCHORN: OK. Hivyo kama ni mwingi kuliko huu, kisha tunataka kuingiza. Lakini tunataka kuingiza haki kabla ya kwa sababu sisi pia bila haja ya kuwa kuweka wimbo, basi, ya nini kabla ya. Hivyo kuingiza kabla ya. Hivyo sisi pengine amekosa kitu mapema juu. Sisi pengine haja ya kuwa na kutunza wimbo wa nini kinaendelea. Lakini tutaweza kupata huko nyuma. Basi nini thamani ni chini ya? Kurt, tunafanya nini kama thamani ni chini ya? Watazamaji: Basi tu kuendelea isipokuwa ni moja ya mwisho. JASON HIRSCHORN: Mimi kama hiyo. Hivyo kwenda node ijayo. Isipokuwa ni moja mwisho - sisi ni pengine kuangalia kwa kuwa katika suala la hali hiyo. Lakini yeah, node ijayo. Na kwamba kupata chini sana, hivyo tutaweza hoja juu ya hapa. Lakini kama - kila mtu anaweza kuona hayo? Kama sisi ni sawa tunafanya nini? Kama thamani sisi ni kujaribu kuingiza ni sawa na thamani node huyu? Yeah? Watazamaji: [inaudible]. JASON HIRSCHORN: Yeah. Kutokana na suala hili - Marcus ni haki. Tungeweza labda kufanyika kitu tofauti. Lakini kutokana na kwamba tumeunda yake, hapa tunapaswa bure na kisha kurudi. Oh boy. Ni kwamba bora? Jinsi hiyo? OK. Free na kisha sisi kufanya nini kurudi, [inaudible]? OK. Je, sisi kukosa kitu? Hivyo ambapo ni sisi kuweka wimbo ya nodi kabla ya? Watazamaji: Nadhani ingekuwa kwenda baada ya kujenga node mpya. JASON HIRSCHORN: OK. Hivyo mwanzoni sisi itabidi pengine - yeah, tunaweza kujenga pointer mpya node, kama pointer uliopita node na sasa pointer nodi. Basi hebu kuingiza kwamba hapa. Kujenga sasa na uliopita kuyatumia kwa nodes. Lakini wakati wa kufanya sisi kurekebisha kuyatumia hayo? Wapi sisi kufanya hivyo katika kanuni? Jeff? Watazamaji: - hali ya thamani? JASON HIRSCHORN: Ni moja hasa? Watazamaji: Mimi tu kuchanganyikiwa. Kama thamani ni zaidi ya node hii, haina maana kwamba unataka kwenda nodi ijayo? JASON HIRSCHHORN: Hivyo kama thamani yetu ni zaidi ya thamani ya node hii. Watazamaji: Yeah, basi d wanataka kwenda zaidi chini ya mstari, sawa? JASON HIRSCHHORN: Haki. Hivyo hatuna kuingiza hapa. Kama thamani ni chini ya node hii, basi sisi kwenda node ijayo - au basi sisi kuingiza kabla ya. Watazamaji: Ngoja, ambayo ni hii node na ambayo ni ya thamani? JASON HIRSCHHORN: swali Good. Thamani kwa hii ufafanuzi kazi ni nini sisi ni kupewa. Hivyo thamani ni idadi sisi ni kupewa. Hivyo kama thamani ni chini ya hii node, tunahitaji muda kuingiza. Kama thamani ni zaidi ya node hii, sisi kwenda node ijayo. Na nyuma kwa swali la kwanza, ingawa, ambapo - Watazamaji: Kama thamani ni zaidi kuliko node hii. JASON HIRSCHHORN: Na hivyo tunafanya nini hapa? Tamu. Hiyo ni sahihi. Mimi tu kwenda kuandika update ya kuyatumia. Lakini ndiyo, na moja sasa ungependa update kwa uhakika na moja ijayo. Kitu kingine chochote sisi ni kukosa? Hivyo nina kwenda kwa aina hii kificho katika gedit. Na wakati mimi kufanya hivyo, unaweza kuwa na dakika kadhaa zaidi ya kufanya kazi juu ya coding hii katika C. Hivyo nina pembejeo pseudocode. kumbuka haraka kabla ya sisi kuanza. Tunaweza kuwa na uwezo kabisa kumaliza hili katika tatu ya kazi hizi. Kuna ufumbuzi sahihi kwao kwamba nami email nje kwenu guys baada ya sehemu, na itakuwa kuwa posted kwenye CS50.net. Hivyo mimi si moyo kwenda kuangalia sehemu. Mimi moyo jaribu hizi juu yako wenyewe, na kisha kutumia mazoezi matatizo ya kuangalia majibu yako. Hawa wote wamekuwa iliyoundwa kwa karibu kuhusiana na na kuambatana na nini una kufanya juu ya kuweka tatizo. Hivyo mimi moyo kufanya mazoezi ya hii juu yako mwenyewe na kisha kutumia kanuni kwa kuangalia majibu yako. Kwa sababu mimi nataka kuendelea na hash meza wakati fulani katika sehemu. Hivyo tupate si kupata njia yote. Lakini tutaweza kufanya mengi tunaweza sasa. OK. Hebu tuanze. ASAM, ni jinsi gani sisi kujenga node mpya? Watazamaji: Huwezi Struct *. JASON HIRSCHHORN: Hivyo sisi na kwamba hapa. Oh, sorry. Walikuwa wakisema struct *. Watazamaji: Na kisha [? aina gani?] node au c nodi. JASON HIRSCHHORN: OK. Mimi nina kwenda kuiita new_node ili tuweze kukaa thabiti. Watazamaji: Na unataka kuweka kwamba kwa kichwa, node ya kwanza. JASON HIRSCHHORN: OK. Hivyo sasa hii akizungumzia - hivyo hii hakuumba nodi mpya bado. Hii ni akizungumzia tu node kwanza katika orodha. Je, mimi kujenga node mpya? Kama mimi haja ya nafasi ya kujenga node mpya. Malloc. Na jinsi kubwa? Watazamaji: ukubwa wa struct. JASON HIRSCHHORN: ukubwa wa struct. Na nini struct wito? Watazamaji: Node? JASON HIRSCHHORN: Node. Hivyo malloc (sizeof (node)); inatupa nafasi. Na ni mstari huu - jambo moja ni sahihi juu ya mstari huu. Ni new_node pointer kwa struct? Hiyo ni jina ya kurefusha maisha. Ni nini - node, hasa. Ni node *. Na tunafanya nini haki baada ya sisi malloc kitu, Asan? Nini jambo la kwanza sisi nini? Nini kama haifanyi kazi? Watazamaji: Oh, kuangalia kama ni anazungumzia node? JASON HIRSCHHORN: Hasa. Hivyo kama wewe new_node sawa na usawa null, tunafanya nini? Hii anarudi bool, kazi hii. Hasa. Inaonekana ni nzuri. Kitu chochote kuongeza huko? Tutaweza kuongeza mambo mwishoni. Lakini kwamba hadi sasa inaonekana nzuri. Kujenga kuyatumia sasa na uliopita. Michael, ni jinsi gani mimi kufanya hili? Watazamaji: You ingekuwa kufanya node *. Ningependa kufanya moja si kwa new_node lakini kwa nodes sisi tayari. JASON HIRSCHHORN: OK. Hivyo node sasa tuko juu. Mimi nitakuita kwamba curr. Sawa. Tumekuwa aliamua tunataka kuweka mbili kwa sababu tunahitaji kujua nini mbele yake. Je, wao kupata kuanzishwa kwa? Watazamaji: thamani yao katika orodha yetu. JASON HIRSCHHORN: ni hiyo kile Jambo la kwanza katika orodha yetu? Au ni jinsi gani sisi kujua wapi mwanzo wa orodha yetu? Watazamaji: Je, si ni kupita ndani ya kazi? JASON HIRSCHHORN: Haki. Ni ilipitishwa katika haki hapa. Hivyo kama ni kupita katika kazi, mwanzo wa orodha, je, sisi lazima kuweka sasa sawa na? Watazamaji: Orodha. JASON HIRSCHHORN: Orodha. Hiyo ni kweli kabisa. Sasa ina anwani ya mwanzo wa orodha yetu. Na nini kuhusu uliopita? Watazamaji: Orodha minus moja? JASON HIRSCHHORN: Kuna kitu mbele yake. Hivyo tunaweza kufanya nini kwa ishara ya kitu? Watazamaji: Batili. JASON HIRSCHHORN: Yeah. Kwamba inaonekana kama wazo nzuri. Perfect. Asante. Kupitia orodha. Constantine, kwa muda gani sisi ni kwenda kwenda kwa njia ya orodha? Watazamaji: Mpaka Sisi kufikia null. JASON HIRSCHHORN: OK. Hivyo kama, wakati, kwa kitanzi. Nini tunafanya? Watazamaji: Labda kwa kitanzi? JASON HIRSCHHORN: Hebu kufanya kwa kitanzi. OK. Watazamaji: Na sisi kusema kwa - mpaka pointer sasa si sawa na null. JASON HIRSCHHORN: Hivyo, ikiwa tunajua hali, jinsi gani tunaweza kuandika kitanzi msingi mbali hali hiyo. Ni aina gani ya kitanzi tunapaswa kutumia? Watazamaji: Wakati. JASON HIRSCHHORN: Yeah. Kwamba inafanya maana zaidi ya msingi mbali ya nini alisema. Kama sisi tu unataka kwenda katika sisi ingekuwa tu kujua kwamba kitu, ingekuwa kufanya maana ya kufanya wakati kitanzi. Wakati sasa haina sawa null, kama thamani ni chini ya node hii. Akshar, nipe mstari huu. Watazamaji: Kama sasa-> n n chini ya thamani. Au kubadili hiyo. Kubadili kwamba bracket. JASON HIRSCHHORN: Sorry. Watazamaji: Mabadiliko ya bracket. JASON HIRSCHHORN: Hivyo kama ni zaidi ya thamani. Kwa sababu hiyo utata na maoni juu, mimi nina kwenda kufanya hivyo. Lakini ndiyo. Kama thamani yetu ni chini ya hii node, tunafanya nini? Oh. Nina haki hapa. Kuingiza kabla ya. OK. Je, sisi kufanya hivyo? Watazamaji: Je, ni bado mimi? JASON HIRSCHHORN: Yeah. Watazamaji: You - new_node-> ijayo. JASON HIRSCHHORN: Basi nini kwamba kwenda sawa? Watazamaji: Ni kwenda sasa sawa. JASON HIRSCHHORN: Hasa. Na hivyo wengine - kile kingine tunahitaji update? Watazamaji: Angalia kama zamani sawa null. JASON HIRSCHHORN: Kama prev - hivyo kama prev sawa na null. Watazamaji: Hiyo ina maana itakuja kuwa kichwa. JASON HIRSCHHORN: Hiyo njia kuwa ni ya kichwa. Hivyo basi tunafanya nini? Watazamaji: Sisi kichwa ni sawa na new_node. JASON HIRSCHHORN: Mkuu sawa na new_node. Na kwa nini kichwa hapa, si orodha? Watazamaji: Kwa sababu kichwa ni ya kimataifa variable, ambayo ni mahali pa kuanzia. JASON HIRSCHHORN: Sweet. OK. Na - Watazamaji: Kisha huna mwingine prev-> ijayo ni sawa na new_node. Na kisha kurudi kweli. JASON HIRSCHHORN: kufanya wapi sisi kuweka new_node mwisho? Watazamaji: Mimi ingekuwa - Mimi kuweka kwamba mwanzoni. JASON HIRSCHHORN: Sasa ni nini line? Watazamaji: Baada ya kama taarifa kuangalia kama ni kujulikana. JASON HIRSCHHORN: Haki hapa? Watazamaji: Ningependa kufanya new_node-> n sawa na thamani. JASON HIRSCHHORN: Sauti nzuri. Pengine ni mantiki - hatufanyi haja ya kujua nini orodha sisi ni juu ya kwa sababu sisi ni kushughulika tu na orodha moja. Hivyo bora kazi tamko kwa hii ni kujikwamua hii kabisa na tu kuingiza thamani katika kichwa. Hatuwezi hata haja ya kujua nini orodha tuko in Lakini mimi atayaweka kwa ajili ya sasa na kisha mabadiliko hayo juu ya kuongezea slides na kanuni. Hivyo kwamba inaonekana nzuri kwa sasa. Kama thamani - ambao wanaweza kufanya mstari huu? Kama - tunafanya nini hapa, Nuhu. Watazamaji: Kama thamani ni zaidi kuliko curr-> n - JASON HIRSCHHORN: Je, sisi kwenda node ijayo? Watazamaji: curr-> n ni sawa na new_node. JASON HIRSCHHORN: Kwa hiyo n ni nini sehemu ya struct? integer. Na new_node ni pointer kwa nodi. Kwa hiyo kile ni sehemu ya curr lazima sisi update? Kama si n, kisha nini sehemu nyingine? Nuhu, nini sehemu nyingine. Watazamaji: Oh, ijayo. JASON HIRSCHHORN: Next, hasa. Hasa. Pili ni moja ya haki. Na kile kingine tunahitaji update, Nuhu? Watazamaji: kuyatumia. JASON HIRSCHHORN: Hivyo sisi updated sasa. Watazamaji: Kabla-> ijayo. JASON HIRSCHHORN: Yeah. OK, tutaweza pause. Ambao wanaweza kutusaidia hapa? Manu, tunapaswa kufanya nini? Watazamaji: Nimepata kuweka ni sawa na curr-> ijayo. Lakini kufanya hivyo kabla ya line uliopita. JASON HIRSCHHORN: OK. Kitu kingine? Akshar. Watazamaji: Sidhani wewe ni maana ya kubadili curr-> ijayo. Nadhani wewe ni maana ya kufanya usawa curr curr-> ijayo kwenda kwa node ijayo. JASON HIRSCHHORN: Kwa hiyo sorry, wapi? Juu ya nini line? Mstari huu? Watazamaji: Yeah. Kufanya curr sawa na curr-> ijayo. JASON HIRSCHHORN: Basi hiyo ni sahihi kwa sababu sasa ni pointer kwa nodi. Na tunataka kwa uhakika na ijayo node ya nini kupata sasa alisema kwa. Curr yenyewe ina ijayo. Lakini kama tulikuwa update curr.next, sisi itakuwa kuhuisha kumbuka halisi yenyewe, si ambapo hii pointer uliokuwa unaelekea. Nini kuhusu mstari huu, ingawa. Avi? Watazamaji: Kabla-> ijayo ni sawa na curr. JASON HIRSCHHORN: Kwa hiyo tena, kama prev ni pointer kwa node, prev-> ya pili ni pointer halisi katika node. Hivyo hii itakuwa kuhuisha pointer katika nodi ili curr. Hatutaki update pointer katika node. Tunataka update uliopita. Hivyo ni jinsi gani sisi kufanya hivyo? Watazamaji: Itakuwa tu kuwa prev. JASON HIRSCHHORN: Haki. Kabla ni pointer kwa nodi. Sasa sisi ni kubadilisha kwa pointer mpya ya node. OK Hebu hoja chini. Hatimaye, hali hii ya mwisho. Jeff, tunafanya nini hapa? Watazamaji: Kama thamani ni sawa na curr-> n. JASON HIRSCHHORN: Sorry. Oh yangu wema. Nini? Thamani == curr-> n. Tufanye nini? Watazamaji: Wewe d bure new_node yetu, na basi d kurudi uongo. JASON HIRSCHHORN: Hii ni nini sisi wameandika hadi sasa. Je, mtu yeyote kuwa na kitu chochote kuongeza kabla ya sisi kufanya? OK. Hebu jaribu hilo. Kudhibiti inaweza kufikia mwisho ya kazi mashirika yasiyo ya utupu. Avi, nini kinaendelea? Watazamaji: Je, wanatakiwa kuweka kurudi kweli nje ya kitanzi wakati? JASON HIRSCHHORN: Mimi sijui. Je, unataka mimi? Watazamaji: Kamwe akili. Hapana JASON HIRSCHHORN: Akshar? Watazamaji: Nadhani maana ya kuweka kurudi uongo mwishoni ya kitanzi wakati. JASON HIRSCHHORN: Hivyo ambapo wala unataka kwenda? Watazamaji: Kama nje kitanzi wakati. Hivyo kama wewe exit kitanzi wakati kwamba njia kwamba Umefikia mwisho na kitu kilichotokea. JASON HIRSCHHORN: OK. Hivyo tunafanya nini katika hapa? Watazamaji: You kurudi uongo huko pia. JASON HIRSCHHORN: Oh, sisi kufanya hivyo katika maeneo yote? Watazamaji: Yeah. JASON HIRSCHHORN: OK. Je, sisi kwenda? Oh yangu wema. Mimi nina sorry. Mimi kuomba msamaha kwa screen. Ni aina ya freaking nje juu yetu. Ili kuchagua chaguo. Zero, kwa kificho, quits mpango. Moja kuwekeza kitu. Hebu kuingiza tatu. kuingiza hakuwa na mafanikio. Mimi nina kwenda magazeti nje. Sina kitu chochote. OK. Labda hiyo ndiyo tu fluke. Kuingiza moja. Si mafanikio. OK. Hebu kukimbia kwa njia ya GDB kweli haraka kuangalia nini kinachoendelea. Kumbuka GDB. / Jina la yako mpango anapata yetu ndani ya GDB. Ni kwamba mengi ya kushughulikia? flashing? Pengine. Karibu na macho yako na kuchukua baadhi ya kina Breaths kama wewe kupata uchovu ya kuangalia saa yake. Mimi nina katika GDB. Nini jambo la kwanza mimi kufanya katika GDB? Sisi tumepewa kufikiri nini kinaendelea hapa. Hebu angalia. Tuna dakika sita na takwimu nini kinaendelea. Kuvunja kuu. Na kisha nini mimi? Carlos? Kukimbia. OK. Hebu kuchagua chaguo. Na nini N nini? Next. Yeah. Watazamaji: Je, si kutaja - hakuwa kusema kwamba kichwa, ilikuwa ni kuanzishwa kwa null mwanzoni. Lakini nilidhani wewe alisema kwamba alikuwa sawa. JASON HIRSCHHORN: Hebu kwenda - hebu angalia katika GDB, na kisha tutaweza kurudi nyuma. Lakini inaonekana kama wewe tayari kuwa na baadhi ya mawazo kuhusu nini kinaendelea. Hivyo tunataka kuingiza kitu. OK. Sisi kuingiza. Tafadhali kuingia int. Tutaweza kuingiza tatu. Na kisha mimi niko kwenye mstari huu. Jinsi gani mimi kwenda kuanza debugging kuingiza inajulikana kazi? Oh yangu wema. Hiyo mengi. Ni kwamba freaking nje mengi? Watazamaji: Oh, alikufa. JASON HIRSCHHORN: Mimi tu vunjwa nje. OK. Watazamaji: Labda ni upande wa pili wa waya. JASON HIRSCHHORN: Wow. Hivyo line chini - gani kusema? Watazamaji: Mimi alisema kejeli ya kiufundi matatizo katika darasa hili. JASON HIRSCHHORN: Mimi najua. Kama mimi tu alikuwa na mamlaka juu ya sehemu hiyo. [Inaudible] Inaonekana kuwa ni kubwa. Mbona wewe guys kuanza kufikiria juu ya nini tunaweza wamefanya makosa, na sisi itakuwa nyuma katika sekunde 90. Avica, mimi naenda kuuliza jinsi ya kwenda ndani ya insert_node Debug yake. Hivyo hii ni mahali ambapo sisi mwisho kushoto mbali. Jinsi gani mimi kwenda ndani ya insert_node, Avica, kuchunguza nini kinaendelea? Nini GDB amri? Break bila kuchukua me ndani. Je, Marquise kujua? Watazamaji: Nini? JASON HIRSCHHORN: Nini GDB amri Mimi kutumia kwenda ndani ya kazi hii? Watazamaji: Hatua? JASON HIRSCHHORN: Hatua kupitia S. Hii inachukua me ndani. OK. New_node mallocing baadhi ya nafasi. Hayo ni yote inaonekana kama wake kwenda. Hebu kuchunguza new_node. Ni got baadhi ya anwani kumbukumbu. Hebu angalia - kwamba ni yote ni sahihi. Kwa hiyo kila kitu hapa inaonekana kazi kwa usahihi. Watazamaji: Nini tofauti kati ya P na kuonyesha? JASON HIRSCHHORN: P anasimama kwa magazeti. Na hivyo wewe ni kuuliza nini tofauti kati ya kuwa na hili? Katika kesi hiyo, hakuna kitu. Lakini kwa ujumla kuna baadhi ya tofauti. Na unapaswa kuangalia katika mwongozo GDB. Lakini katika kesi hii, hakuna kitu. Sisi huwa na kutumia magazeti, ingawa, kwa sababu hatuna haja ya kufanya zaidi ya magazeti thamani moja. OK. Hivyo sisi ni juu ya line 80 ya kanuni zetu, kuweka nodi * curr sawa na orodha. Hebu magazeti nje curr. Ni sawa na orodha. Tamu. Kusubiri. Ni sawa na kitu. Kwamba haionekani haki. Kuna sisi kwenda. Ni kwa sababu katika GDB, haki, kama ni line uko juu yake hana kunyongwa bado. Hivyo unahitaji kwa kweli aina karibu na kutekeleza line kabla ya kuona matokeo yake. Hivyo hapa sisi ni. Sisi tu kunyongwa mstari huu, uliopita ni sawa na null. Hivyo tena, kama sisi magazeti uliopita sisi si kuona kitu weird. Lakini kama sisi kweli nitafanya kwamba line, kisha tutaona kwamba line kazi. Hivyo tuna curr. Wale wote ni nzuri. Haki? Sasa tuko juu ya mstari huu hapa. Wakati curr haina sawa null. Naam, nini curr sawa? Sisi tu alipowaona ililingana null. Sisi kuchapishwa nje. Mimi itabidi magazeti ya nje tena. Hivyo ni kwamba wakati kitanzi kwenda kutekeleza? Watazamaji: Hapana JASON HIRSCHHORN: Kwa hiyo wakati mimi niliandika kwamba line, unaweza kuona sisi akaruka njia yote chini kwa chini, kurudi uongo. Na kisha sisi ni kwenda na kurudi uongo na kurudi nyuma kwa programu yetu na hatimaye magazeti nje, kama tuliona, kuingiza hakuwa na mafanikio. Kwa hiyo, mtu yeyote kuwa na mawazo yoyote juu ya nini tunahitaji kufanya kutatua tatizo hili? Mimi nina kwenda kusubiri mpaka naona michache ya mikono kwenda juu. Hatukuwa kutekeleza hili. Kumbuka, hii ilikuwa ya kwanza kitu tunafanya. Mimi si kwenda kufanya wanandoa. Mimi nina kwenda kufanya wachache. Kwa sababu kadhaa ina maana mbili. Mimi itabidi kusubiri kwa zaidi ya miaka miwili. kuingizwa kwanza, curr, by default ni sawa na null. Na kitanzi hii inatimiza tu kama curr ni si null. Hivyo ni jinsi gani mimi kupata kote hili? Mimi naona mikono tatu. Mimi itabidi kusubiri kwa zaidi ya tatu. Marcus, unafikiri nini? Watazamaji: Naam, kama unahitaji yake kwa kutekeleza zaidi ya mara moja, wewe tu mabadiliko hayo kwa do-kitanzi wakati. JASON HIRSCHHORN: OK. Je kwamba kutatua tatizo letu, ingawa? Watazamaji: Katika kesi hiyo hakuna sababu ya ukweli kwamba orodha ni tupu. Hivyo basi pengine tu haja ya kuongeza taarifa kwamba kama exits kitanzi basi kuwa mwishoni mwa orodha, ambapo ninyi unaweza tu kuingiza. JASON HIRSCHHORN: Mimi kama hiyo. Kwamba hufanya akili. Kama kitanzi exits - kwa sababu itabidi kurudi uongo hapa. Hivyo kama exits kitanzi, kisha tuko katika mwisho wa orodha, au labda mwanzo wa orodha kama kuna kitu katika yake, ambayo ni sawa na mwisho. Hivyo sasa tunataka kuingiza kitu hapa. Hivyo ni jinsi gani kwamba kanuni kuangalia, Marcus? Watazamaji: Kama tayari got node malloced, unaweza kusema tu new_node-> ijayo ni sawa na null kwa sababu ina kuwa mwishoni. Au new_node-> ijayo ni sawa na null. JASON HIRSCHHORN: OK. Sorry. New_node-> ijayo ni sawa na null kwa sababu tuko mwishoni. Hiyo haina kuiweka in Jinsi gani sisi kuiweka katika orodha? Haki. Hiyo tu kuiandaa sawa na. No jinsi gani sisi kweli kuiweka katika orodha? Nini akizungumzia mwisho wa orodha? Watazamaji: Mkuu. JASON HIRSCHHORN: Sorry? Watazamaji: Mkuu ni akizungumzia mwisho wa orodha. JASON HIRSCHHORN: Kama kuna kitu katika orodha, kichwa akizungumzia mwisho wa orodha. Ili itabidi kazi kwa kwanza kuingizwa. Je kuhusu kama kuna wanandoa mambo katika orodha? Kuliko sisi hawataki kuweka kichwa sawa na new_node. Je, tunataka kufanya huko? Yeah? Pengine uliopita. Je kwamba kazi? Kumbuka kwamba uliopita ni pointer kwa nodi. Na uliopita ni variable ndani. Hivyo line hii kuweka variable mitaa, uliopita, sawa na au akizungumzia node hii mpya. Hiyo si kweli kuiweka katika orodha yetu, ingawa. Jinsi gani sisi kuiweka katika orodha yetu? Akchar? Watazamaji: Nadhani kufanya sasa-> ijayo. JASON HIRSCHHORN: OK. curr-> ijayo. Hivyo tena, sababu tu tuko chini hapa ni, nini sasa sawa? Watazamaji: Usawa null. JASON HIRSCHHORN: Na hivyo kile kinachotokea kama sisi kufanya null-> ijayo? Tufanye nini kwenda kupata? Tutaweza kupata segmentation kosa. Watazamaji: Do curr sawa na null. JASON HIRSCHHORN: Hiyo ni kitu kimoja kama prev, ingawa, kwa sababu kuna variable ndani sisi ni kuweka sawa na node hii mpya. Hebu kwenda nyuma ya picha wetu ya kuingiza kitu. Kusema sisi ni kuingiza mwishoni ya orodha, hivyo haki hapa. Tuna pointer sasa kwamba akizungumzia null na hatua ya awali hiyo akizungumzia 8. Basi je, sisi haja ya update, Avi? Watazamaji: Previous-> ijayo? JASON HIRSCHHORN: Previous-> pili ni nini tunataka update kwa sababu kwamba kweli kuingiza katika mwisho wa orodha. Bado tuna mdudu moja, ingawa, kwamba sisi ni kwenda kukimbia katika. Nini kwamba mdudu? Yeah? Watazamaji: Ni kwenda na kurudi uongo katika kesi hii? JASON HIRSCHHORN: Oh, ni kwa kwenda na kurudi uongo. Lakini kuna mdudu mwingine. Hivyo tutaweza haja ya kuweka katika kurudi kweli. Watazamaji: Je uliopita bado sawa null juu ya orodha? JASON HIRSCHHORN: bado Hivyo uliopita sawa na null mwanzoni sana. Hivyo ni jinsi gani sisi kupata zaidi ya hiyo? Yeah? Watazamaji: Nadhani unaweza kufanya kuangalia kabla ya wakati kitanzi ili kuona kama ni orodha tupu. JASON HIRSCHHORN: OK. Basi hebu nenda hapa. Kufanya kuangalia. Kama - Watazamaji: Hivyo kama kichwa sawa na sawa null. JASON HIRSCHHORN: Kama kichwa sawa na sawa null - kwamba utakuwa kutuambia kama ni orodha tupu. Watazamaji: Na kisha kufanya kichwa ni sawa na mpya. JASON HIRSCHHORN: Mkuu sawa na new_node? Na kile kingine tunahitaji nini? Watazamaji: Na kisha kurudi kweli. JASON HIRSCHHORN: Si kabisa. Sisi ni kukosa hatua moja. Watazamaji: New_node ijayo ina uhakika na null. JASON HIRSCHHORN: Hasa, Alden. Na kisha tunaweza kurudi kweli. OK. Lakini bado ni wazo nzuri ya kufanya mambo mwishoni mwa orodha, sawa? Sawa. Sisi bado wanaweza kweli kupata mwisho wa orodha. Hivyo ni faini hii code kama tuko katika mwisho wa orodha na kuna baadhi ya mambo katika orodha? Haki? Kwa sababu sisi bado kuwa na wazo Marcus ya. Tupate exit kitanzi hii kwa sababu sisi ni mwisho wa orodha. Hivyo sisi bado wanataka hii ya kificho chini hapa? Watazamaji: Ndiyo. JASON HIRSCHHORN: Yeah. Na nini tunahitaji mabadiliko ya hii? Kweli. Gani kwamba sauti nzuri kwa kila mtu hadi sasa? Mtu yeyote kuwa na yoyote - Avi, je, una kitu cha kuongeza? Watazamaji: Hapana JASON HIRSCHHORN: OK. Hivyo tumekuwa alifanya michache ya mabadiliko. Tumekuwa alifanya hii kuangalia kabla ya sisi alikwenda kwa ajili ya orodha tupu. Hivyo tumekuwa kuchukuliwa huduma ya orodha tupu. Na hapa sisi alichukua huduma ya kuingiza kitu mwishoni mwa orodha. Hivyo inaonekana kama hii kuchukua kitanzi wakati huduma ya mambo katika kati, mahali fulani katika orodha kama kuna ni mambo katika orodha. OK. Hebu kuendesha mpango huu tena. Si mafanikio. Watazamaji: You hawakuwa kufanya hivyo. JASON HIRSCHHORN: Oh, Sikuweza kufanya hivyo. Nzuri uhakika, Michael. Hebu kuongeza kufanya wanaohusishwa. Line 87 kuna makosa. Line 87. Alden, hii ilikuwa line ulilonipa. Nini kibaya? Watazamaji: Ni ina kuwa kwa null. JASON HIRSCHHORN: Excellent. Hasa haki. Ni lazima null. Hebu kufanya tena. Kukusanya. OK. Hebu kuingiza tatu. kuingiza ilikuwa na mafanikio. Hebu magazeti nje. Oh, kama tu tunaweza kuangalia. Lakini hatujafanya magazeti kazi bado. Hebu kuingia kitu kingine. Tufanye kuingia? Watazamaji Saba. JASON HIRSCHHORN Saba? Watazamaji: Ndiyo. JASON HIRSCHHORN: Tuna seg kosa. Hivyo tulipata moja, lakini sisi wazi hawawezi kupata mbili. Ni 05:07. Hivyo tunaweza Debug hii kwa muda wa dakika tatu. Lakini mimi naenda kuondoka sisi hapa na hoja juu ya hash meza. Lakini tena, majibu kwa kanuni hii Nami email ninyi katika kidogo. Sisi ni karibu sana na hilo. Mimi sana moyo kufikiri nini kinaendelea hapa na kurekebisha. Kwa hiyo nitakuwa email kanuni hii kama vizuri pamoja na ufumbuzi - pengine ufumbuzi baadaye. Kwanza kanuni hii. Kitu kingine nataka kufanya kabla ya sisi kumaliza ni sisi si huru kitu chochote. Hivyo nataka kuonyesha nini Valgrind inaonekana kama. Kama sisi kukimbia Valgrind mipaka juu ya mpango wetu,. / wanaohusishwa. Tena, kwa mujibu wa slide hii, sisi lazima kukimbia Valgrind kwa baadhi ya aina ya chaguo, katika kesi hii - Leak-kuangalia = full. Basi hebu kuandika Valgrind - Leak-kuangalia = full. Hivyo hii inakwenda Valgrind juu ya mpango wetu. Na sasa mpango kweli anaendesha. Hivyo sisi ni kwenda kuendesha tu kama kabla, kuweka kitu in Mimi naenda kuweka katika tatu. Kwamba kazi. Mimi si kwenda kujaribu kuweka katika kitu mwingine kwa sababu tunakwenda kupata seg uongo katika kesi hiyo. Hivyo mimi nina tu kwenda kuacha. Na sasa unaweza kuona hapa chini kuvuja na chungu muhtasari. Haya ni mambo mazuri ambayo unataka kuangalia nje. Hivyo chungu summary - inasema, katika matumizi ya katika exit - ka nane katika kuzuia moja. Hiyo kuzuia moja ni node sisi malloced. Michael, alisema kabla ya node ni nane kuumwa kwa sababu ina integer na pointer. Hivyo kwamba ni node yetu. Na kisha anasema tulikuwa malloc mara saba na sisi huru kitu mara sita. Lakini sisi kamwe kuitwa bure, hivyo mimi sina wazo jambo hili ni kuzungumza juu. Lakini inatosha kusema kwamba wakati wako anaendesha mpango, malloc ni kuitwa katika baadhi ya maeneo mengine kwamba sisi hawana haja ya wasiwasi juu. Hivyo malloc labda aitwaye katika baadhi ya maeneo. Hatuna haja ya kuwa na wasiwasi ambapo. Lakini hii ni kweli sisi. Hii mstari wa kwanza ni sisi. Sisi kushoto kuzuia kwamba. Na unaweza kuona kwamba hapa katika muhtasari leak. Bado reachable - ka nane katika kuzuia moja. Hiyo ina maana kwamba kumbukumbu - sisi na kuvuja kwamba kumbukumbu. Dhahiri waliopotea - kitu ni kupotea kwa nzuri. Kwa ujumla, wewe si kuona kitu huko. Bado reachable kwa ujumla ni ambapo utaona mambo, ambapo utasikia wanataka kuangalia na kuona nini code lazima wewe kuwa huru lakini alisahau bure. Na kisha kama hii ilikuwa si kesi, kama tulivyofanya bure kila kitu, tunaweza kuangalia hiyo. Hebu tu kuendesha programu si kuweka kitu chochote. Utaona hapa chini katika matumizi ya exit - ka zero katika zero vitalu. Hiyo ina maana sisi alikuwa na kitu kushoto wakati mpango huu exited. Hivyo kabla ya kugeuka katika pset6, kukimbia Valgrind na kuhakikisha huna kumbukumbu yoyote uvujaji katika programu yako. Kama una maswali yoyote na Valgrind, kujisikia huru kuwafikia. Lakini hii ni jinsi gani matumizi yake. Rahisi sana - kuona kama wewe na katika matumizi ya exit - ka yoyote katika vitalu yoyote. Hivyo sisi walikuwa wakifanya kazi kwa kuingiza nodi. Mimi nilikuwa na kazi nyingine mbili hapa - magazeti nodes na nodes bure. Tena, hayo ni kazi ambayo ni kwenda kuwa nzuri kwa ajili ya kufanya mazoezi kwa sababu wao kukusaidia si tu kwa mazoezi haya sampuli lakini pia juu ya kuweka tatizo. Wao ramani juu ya pretty karibu na mambo wewe kwenda kufanya katika kuweka tatizo. Lakini mimi unataka kuhakikisha sisi kugusa juu ya kila kitu. Na meza hash pia ni muhimu kwa nini sisi ni kufanya katika sehemu hii wiki - au katika kuweka tatizo. Hivyo sisi ni kwenda kumaliza sehemu ya kuzungumza juu ya meza hash. Kama taarifa mimi alifanya kidogo hash meza. Hiyo ni nini tunazungumzia kuhusu, hata hivyo. Sisi ni kuzungumza juu mbalimbali aina ya meza hash. Na katika msingi wake, meza hash ni kitu zaidi kuliko safu pamoja na hash kazi. Sisi ni kwenda kuzungumza kwa kidogo tu kwa kuhakikisha kila mtu anafahamu a kazi hash ni. Na mimi nina nakuambia hivi sasa kuwa ni kitu zaidi ya mambo mawili - safu na hash kazi. Na hapa ni hatua kwa ambayo hii kazi. Kuna safu yetu. Kuna kazi yetu. Hasa, kazi hash haja ya kufanya mambo kadhaa ya na hili. Mimi nina kwenda kuzungumza hasa kuhusu tatizo hili kuweka. Ni pengine ni kwenda kuchukua katika kamba. Na nini ni kwenda na kurudi? Nini data aina? Alden? Hash kazi yako ya kurudi? integer. Hivyo hii ni nini hash meza lina - meza katika mfumo wa safu na hash kazi. Jinsi kazi? Ni kazi katika hatua tatu. Sisi kuwapa muhimu. Katika kesi hiyo, tutaweza kuwapa kamba. Tunatoa wito heshi kwa hatua moja juu ya msingi na sisi kupata thamani. Hasa, tutaweza kusema sisi kupata integer. Integer kwamba, kuna maalum sana mipaka ya nini kuwa integer wanaweza kuwa. Katika mfano huu, safu yetu ni ya kawaida tatu. Basi nini idadi unaweza kuwa integer kuwa. Aina mbalimbali ya maadili halali kwa nini kwamba integer, aina ya kurudi hii hash kazi? Zero, moja na mbili. hatua ya heshi ni kwa kufikiri mahali katika safu ambapo muhimu yetu ni kwenda. Kuna tatu tu inawezekana maeneo hapa - sifuri, moja, au mbili. Hivyo kazi hii bora kurudi sifuri, moja, au mbili. Baadhi ya indice halali katika safu hii. Na kisha kulingana na pale kuirudisha, unaweza kuona kuna safu wazi mabano thamani. Hiyo ambapo sisi kuweka muhimu. Hivyo sisi kutupa katika pumpkin, sisi kupata nje zero. Katika safu bracket 0, sisi kuweka pumpkin. Sisi kutupa katika paka, sisi kupata nje moja. Sisi kuweka paka saa moja. Sisi kuweka katika buibui. Sisi kupata nje mbili. Sisi kuweka buibui katika safu bracket mbili. Ingekuwa hivyo nzuri kama ni kazi kama hiyo. Lakini kwa bahati mbaya, kama tutaweza kuona, ni kidogo ngumu zaidi. Kabla ya sisi kufika huko, maswali yoyote kuhusu hii ya msingi kuweka-up ya meza hash? Hii ni picha ya hasa nini sisi yanaanza bodi. Lakini kwa kuwa sisi akauchomoa juu ya bodi, mimi mimi si kwenda ndani yake zaidi. Kimsingi funguo, uchawi mweusi sanduku - au katika kesi hii, teal sanduku - ya kazi hash unaweka yao katika ndoo. Na katika mfano huu tuko si kuweka jina. Sisi ni kuweka simu kuhusishwa idadi ya jina katika ndoo. Lakini unaweza vizuri sana tu kuweka jina katika ndoo. Hii ni picha ya nini tulianzisha kwenye ubao. Tuna pitfalls uwezo, ingawa. Na kuna mambo mawili hasa slides kwamba nataka kwenda juu. Wa kwanza ni kuhusu hash kazi. Basi, mimi aliuliza swali, nini hufanya vizuri hash kazi? Mimi kutoa majibu mbili. kwanza ni kwamba ni deterministic. Katika mazingira ya kazi hash, hii ina maana gani? Ndiyo? Watazamaji: Ni wanaweza kupata index katika wakati mara kwa mara? JASON HIRSCHHORN: Hiyo ni nini maana yake. Lakini hiyo ni dhana nzuri. Mtu mwingine na nadhani kwa nini maana ya hii? Kuwa nzuri heshi ni deterministic? Annie? Watazamaji: Hiyo muhimu inaweza tu kuwa mapped kwa sehemu moja katika meza hash. JASON HIRSCHHORN: Hiyo ni sahihi kabisa. Kila wakati kuweka katika pumpkin, daima anarudi sifuri. Kama kuweka katika pumpkin na hash yako kazi anarudi zero lakini ina uwezekano wa kurudi kitu mwingine zaidi ya sifuri - hivyo labda anaweza kurudi moja wakati mwingine au mara nyingine mbili - ambayo si nzuri hash kazi. Uko sahihi kabisa. Hash kazi yako lazima kurudi hiyo hiyo integer, katika kesi hii, kwa hiyo hiyo kamba. Labda kuirudisha hiyo hiyo integer kwa moja string halisi bila kujali mtaji. Lakini katika kesi hiyo bado ni deterministic kwa sababu mambo mbalimbali ni mapped kwenye thamani sawa. Hiyo ni sawa. Kwa muda mrefu kama kuna moja tu pato kwa ajili ya pembejeo huo. OK. Jambo la pili ni kwamba anarudi halali fahirisi. Sisi kuletwa up kuwa mapema. Hii kazi hash - oh mvulana - heshi lazima kurudi halali fahirisi. Hivyo kusema - hebu kwenda nyuma kwa mfano huu. Hash My kazi makosa up barua katika neno. Hiyo ni hash kazi. Na anarudi kwamba integer. Basi, ikiwa mimi na neno A, ni kwenda na kurudi moja. Na ni kwenda kuweka A hapa. Nini kama mimi kuweka katika neno bat? Ni kwenda na kurudi tatu. Wapi bat kwenda? Ni haiendani. Lakini inahitaji kwenda mahali fulani. Hii ni hash yangu meza baada ya yote, na kila kitu mahitaji ya kwenda mahali fulani. Hivyo ambapo lazima bat kwenda? Mawazo yoyote? Kuliwaza? Nzuri kubahatisha? Watazamaji: Zero. JASON HIRSCHHORN: Kwa nini zero? Watazamaji: Kwa sababu tatu modulo tatu ni sifuri? JASON HIRSCHHORN: Tatu modulo tatu ni sifuri. Hiyo ni dhana ya kubwa, na kwamba ni sahihi. Hivyo katika kesi hii ni lazima pengine kwenda katika sifuri. Hivyo njia nzuri ya kuhakikisha kwamba hash hii kazi tu anarudi halali fahirisi ni kwa modulo ni na ukubwa wa meza. Kama modulo chochote hii anarudi na tatu, wewe daima kwenda kupata kitu kati ya sifuri, moja, na wawili. Na kama hii daima anarudi saba, na daima modulo na tatu, wewe ni daima kwenda kupata kitu kimoja. Hivyo bado ni deterministic kama wewe modulo. Lakini hiyo kuhakikisha kwamba kamwe kupata kitu - sekta ya batili. Kwa ujumla, kwamba modulo lazima kutokea ndani ya hash kazi yako. Hivyo huna haja ya kuwa na wasiwasi juu ya hili. Wewe tu inaweza kuhakikisha kwamba hii ni indice halali. Maswali yoyote juu ya hii uwezo shimo? OK. Na huko sisi kwenda. Ijayo uwezo shimo, na hii ni moja kubwa. Nini kama funguo mbili ramani kwa thamani hiyo? Hivyo kuna njia mbili za kushughulikia suala hili. moja ya kwanza iitwayo linear uchunguzi, ambayo nina si kwenda juu. Lakini unapaswa kuwa ukoo na jinsi kwamba kazi na kile ambacho ni. moja pili Mimi kwenda juu kwa sababu hiyo ni moja kwamba wengi watu pengine kuishia kuamua kutumia katika tatizo kuweka yao. Bila shaka, hawana. Lakini kwa ajili ya kuweka tatizo, watu wengi huwa na kuchagua kuunda meza hash na chaining tofauti na kutekeleza kamusi yao. Hivyo sisi ni kwenda juu ya nini maana ya kujenga meza hash na tofauti chaining. Basi, mimi kuweka katika pumpkin. Kuirudisha sifuri. Na mimi kuweka pumpkin hapa. Kisha mimi kuweka katika - nini mwingine kitu Halloween-themed? Watazamaji: pipi. JASON HIRSCHHORN: pipi! Hiyo ni moja kubwa. Mimi kuweka katika pipi, na pipi pia inatoa mimi sifuri. Je, nini? Mawazo yoyote? Kwa sababu wewe kila aina ya kujua nini tofauti chaining ni. Hivyo mawazo yoyote nini cha kufanya? Yeah. Watazamaji: Kuweka string kweli katika meza hash. JASON HIRSCHHORN: Hivyo sisi ni kwenda kwa kuteka wazo nzuri zaidi ya hapa. OK. Watazamaji: Je, hashtable [Inaudible] pointer kwamba pointi kwa mwanzo wa orodha. Na kisha kuwa pumpkin kuwa na thamani ya kwanza katika orodha wanaohusishwa na pipi kuwa Thamani ya pili katika orodha kwamba uhusiano. JASON HIRSCHHORN: OK. Marcus, kwamba alikuwa bora. Mimi nina kwenda kuvunja kwamba chini. Marcus ni kusema hawana overwrite pumpkin. Hiyo itakuwa mbaya. Je, si kuweka pipi mahali pengine. Sisi ni kwenda kuweka wote wawili katika sifuri. Lakini sisi ni kwenda kukabiliana na kuweka katika sifuri na kujenga orodha sifuri. Na tunakwenda kutengeneza orodha ya kila kitu mapped kwa sifuri. Na njia bora sisi kujifunza kwa kujenga orodha ambayo inaweza kukua na kuogopa dynamically ni si ndani ya safu nyingine. Hivyo si multi-dimensional safu. Lakini tu kutengeneza orodha wanaohusishwa. Kwa hivyo kile mapendekezo - Mimi nina kwenda kupata mpya - ni kujenga safu na kuyatumia, safu ya kuyatumia. OK. Wazo lolote au ladha ya aina gani ya kuyatumia hii lazima? Marcus? Watazamaji: kuyatumia kwa - JASON HIRSCHHORN: Kwa sababu wewe alisema orodha wanaohusishwa, hivyo - Watazamaji: kuyatumia Node? JASON HIRSCHHORN: kuyatumia Node. Kama mambo katika uhusiano wetu orodha ni nodes basi lazima kuyatumia nodi. Na nini wao sawa awali? Watazamaji: Batili. JASON HIRSCHHORN: Batili. Hivyo kuna mambo yetu tupu. Pumpkin anarudi sifuri. Tufanye nini? Kutembea mimi kwa njia hiyo? Kwa kweli, Marcus tayari alinipa. Mtu mwingine kutembea mimi kwa njia hiyo. Tunachofanya wakati sisi - hii inaonekana ni sawa na nini sisi tu kufanya. Avi. Watazamaji: Mimi kwenda kuchukua nadhani. Hivyo wakati wewe kupata pipi. JASON HIRSCHHORN: Yeah. Vizuri, tulipata pumpkin. Hebu kupata moja yetu ya kwanza. Tulipata pumpkin. Watazamaji: OK. Pumpkin anarudi sifuri. Hivyo kuiweka katika hiyo. Au kweli, kuiweka katika orodha wanaohusishwa. JASON HIRSCHHORN: Je, sisi kuiweka katika orodha wanaohusishwa? Watazamaji: Oh, syntax halisi? JASON HIRSCHHORN: tu kutembea - kusema zaidi. Tufanye nini? Watazamaji: Wewe tu kuingiza kama node ya kwanza. JASON HIRSCHHORN: OK. Hivyo tuna node yetu, pumpkin. Na sasa ni jinsi gani mimi kuingiza? Watazamaji: You hawawajui kwa pointer. JASON HIRSCHHORN: Ni pointer? Watazamaji: pointer katika sifuri. JASON HIRSCHHORN: Hivyo ambapo gani hatua hii? Watazamaji: Kwa null hivi sasa. JASON HIRSCHHORN: Naam, ni akizungumzia null. Lakini mimi nina kuweka katika pumpkin. Hivyo ambapo lazima ni uhakika? Watazamaji: Kwa pumpkin. JASON HIRSCHHORN: Kwa pumpkin. Hasa. Hivyo hii anazungumzia pumpkin. Na wapi pointer hii katika pumpkin uhakika? Kwa Watazamaji: Batili. JASON HIRSCHHORN: Kwa null. Hasa. Hivyo sisi tu kuingizwa kitu katika orodha wanaohusishwa. Sisi tu aliandika kanuni hii ya kufanya hivyo. Karibu sisi karibu got it kabisa kupasuka. Sasa sisi kuingiza pipi. Pipi yetu pia huenda kwa sifuri. Basi je, sisi kufanya na pipi? Watazamaji: Ni inategemea juu ya iwapo au si sisi ni kujaribu aina yake. JASON HIRSCHHORN: Hiyo ni sahihi kabisa. Inategemea juu ya iwapo au sisi ni kujaribu aina yake. Hebu kudhani sisi siyo kwenda aina yake. Watazamaji: Sawa basi, kama sisi kujadiliwa kabla ya, ni rahisi tu ya kuweka ni haki katika mwanzo hivyo pointer kutoka pointi sifuri kwa pipi. JASON HIRSCHHORN: OK. Kushikilia. Hebu kujenga pipi haki hapa. Hivyo pointer hii - Watazamaji: Yeah, lazima sasa akizungumzia kwa pipi. Kisha na pointer kutoka pipi hatua ya pumpkin. JASON HIRSCHHORN: Kama kwamba? Na kusema sisi got mwingine kitu ramani kwa zero? Watazamaji: Naam, wewe tu kufanya kitu kimoja? JASON HIRSCHHORN: Je, kitu kimoja. Hivyo katika kesi hii, kama sisi si unataka kuendelea kuwa yamepangwa ni sauti badala ya rahisi. Sisi kuchukua pointer katika indice uliotolewa na hash kazi yetu. Tuna uhakika kwamba kwa node wetu mpya. Na kisha chochote alikuwa akionyesha wa awali - katika kesi hii null, katika kesi ya pili pumpkin - kwamba, chochote ni akizungumzia hapo awali, sisi kuongeza katika pili ya node wetu mpya. Sisi ni kuingiza kitu katika mwanzo. Kwa kweli hii ni rahisi sana kuliko kujaribu kuweka orodha Iliyopangwa. Lakini tena, kutafuta itakuwa zaidi ngumu hapa. Tutaweza daima na kwenda hadi mwisho. OK. Maswali yoyote kuhusu tofauti chaining? Jinsi kazi? Tafadhali waombe sasa. Kwa kweli mimi nataka kuhakikisha wote kuelewa hili kabla ya sisi kichwa nje. Watazamaji: Kwa nini kuweka pumpkin na pipi ndani ya sawa sehemu ya meza hash? JASON HIRSCHHORN: swali Good. Kwa nini sisi kuziweka katika huo sehemu ya meza hash? Naam, katika kesi hii yetu heshi anarudi sifuri kwa wote wawili. Hivyo wanahitaji kwenda katika indice zero kwa sababu hiyo ambapo tunakwenda kuangalia kwa ajili yao kama sisi milele wanataka kuangalia yao juu. Tena, kwa njia ya linear uchunguzi sisi bila kuweka wote wawili katika sifuri. Lakini katika mfumo wa tofauti mnyororo, tunakwenda kuziweka wote katika zero na kisha kutengeneza orodha mbali ya sifuri. Na hatutaki overwrite pumpkin tu kwa kuwa kwa sababu basi tutaweza kudhani kwamba pumpkin mara kamwe kuingizwa. Kama sisi tu kuweka jambo moja katika eneo hilo itakuwa mbaya. Kisha hakutakuwa na nafasi ya sisi milele - kama sisi milele alikuwa duplicate, kisha sisi ingekuwa tu kufuta thamani yetu ya awali. Hivyo ndiyo sababu sisi kufanya mbinu hii. Au kwamba ni kwa nini sisi alichagua - lakini tena, sisi alichagua chaining mbinu tofauti, ambayo kuna njia nyingine nyingi mtu anaweza kuchagua. Je, hiyo kujibu swali lako? OK. Carlos. Linear uchunguzi bila kuhusisha - kama sisi kupatikana mgongano katika sifuri, sisi bila kuangalia katika doa karibu na kuona kama ilikuwa wazi na kuiweka huko. Na kisha sisi kuangalia katika mchezo wa pili na kuona kama kwamba alikuwa wazi na kuiweka huko. Hivyo tunaona inapatikana ijayo doa wazi na kuiweka huko. Maswali yoyote mengine? Yeah, Avi. Watazamaji: Kama kufuatilia na kwamba, nini maana ya doa ijayo? Katika meza hash au katika orodha ya uhusiano. JASON HIRSCHHORN: Kwa linear programu, orodha hakuna uhusiano. doa ijayo kwenye meza hash. Watazamaji: OK. Hivyo meza hash itakuwa kuanzishwa kwa kawaida - kama idadi ya masharti kwamba walikuwa kuingiza? JASON HIRSCHHORN: wewe ingekuwa unataka kuwa kubwa kweli kweli. Ndiyo. Hapa ni picha ya nini sisi tu yanaanza bodi. Tena, tuna mgongano wa kulia hapa. katika 152. Na utaona sisi kuundwa orodha wanaohusishwa mbali ya hilo. Tena, hash meza tofauti chaining mbinu ni si moja na kuchukua kwa ajili ya matatizo kuweka sita lakini ni moja kwamba mengi ya wanafunzi huwa na kuchukua. Kadhalika kumbuka kwamba, hebu kuzungumza kwa ufupi kabla ya sisi kichwa nje kuhusu tatizo sita, na kisha mimi itabidi kushiriki hadithi pamoja na wewe. Tuna dakika tatu. Kuweka tatizo sita. Una kazi nne - mzigo, angalia, ukubwa, na ipakuliwe. Mzigo - vizuri, tumekuwa kwenda juu ya mzigo tu sasa. Tulianzisha mzigo juu ya bodi. Na sisi hata kuanza coding mengi ya kuingiza katika orodha wanaohusishwa. Hivyo mzigo ni si zaidi ya nini tumekuwa tu wamekuwa wakifanya. Kuangalia ni mara moja una kitu kubeba. Ni mchakato huo kama huu. ile ile ya kwanza sehemu mbili ambapo wewe kutupa kitu katika heshi na kupata thamani yake. Lakini sasa sisi siyo kuingiza. Sasa sisi ni kuangalia kwa hilo. Mimi sampuli kanuni zilizoandikwa kwa ajili ya kutafuta kitu katika orodha wanaohusishwa. Mimi moyo wa kufanya mazoezi hayo. Lakini shirikishi kutafuta kitu ni pretty sawa na kuingiza kitu. Hakika, tulianzisha picha ya kupata kitu katika orodha wanaohusishwa, kusonga kupitia mpaka got mwisho. Na kama wewe got mwisho na hawakuweza kupata hiyo, basi ni huko. Hivyo kwamba ni kuangalia, kimsingi. Pili ni kawaida. Hebu turukie kawaida. Hatimaye una ipakuliwe. Ipakuliwe ni moja sisi si inayotolewa kwenye ubao au kutolewa bado. Lakini mimi moyo kujaribu coding ni katika sampuli zetu wanaohusishwa orodha mfano. Lakini kupakua shirikishi ni sawa na bure - au I mean ni sawa na kuangalia. Ila kwa sasa kila wakati wewe kwenda kupitia, wewe si tu kuangalia kwa kuona kama una thamani yako huko. Lakini wewe ni kuchukua kwamba node na kumkomboa, kimsingi. Hiyo ni nini ipakuliwe anauliza kufanya. Free kila kitu umefanya malloced. Hivyo wewe ni kwenda kwa orodha nzima tena, kwenda kupitia hash zima meza tena. Wakati huu si kuangalia kuona nini huko. Bure tu kuna nini huko. Na hatimaye kawaida. Ukubwa inapaswa kutekelezwa. Kama huna kutekeleza kawaida - Mimi itabidi kusema kama hii. Kama huna kutekeleza ukubwa katika hasa line moja ya maadili ya ikiwa ni pamoja na kurudi taarifa, wewe ni kufanya ukubwa kimakosa. Ili kuhakikisha kawaida, kwa ajili ya kubuni full pointi, wewe kufanya hivyo katika hasa mmoja mstari wa kanuni, ikiwa ni pamoja taarifa kurudi. Na wala pakiti up bado, Akchar. Hamu beaver. Nilitaka kusema asante guys kwa ajili ya kuja kwa sehemu. Kuwa na furaha Halloween. Hii ni vazi yangu. Mimi itabidi kuwa amevaa hii Alhamisi kama mimi kuona wewe katika masaa ya ofisi. Na kama wewe ni curious kuhusu baadhi ya zaidi background kama Costume hii, jisikie huru na kuangalia nje 2011 sehemu kwa hadithi juu ya nini mimi nina amevaa pumpkin Costume. Na ni hadithi ya kusikitisha. Ili kuhakikisha kuwa baadhi tishu jirani. Lakini kwamba, kama una maswali mimi itabidi fimbo karibu nje baada ya sehemu. Bahati nzuri juu ya kuweka tatizo sita. Na kama siku zote, kama una maswali, basi mimi kujua.