[Powered by Google Translate] [Sehemu ya 6] [Zaidi Starehe]
[Rob Bowden] [Chuo Kikuu cha Harvard]
[Hii ni CS50.] [CS50.TV]
>> Tunaweza kichwa na sehemu yetu ya maswali.
Mimi nimewatuma URL kwa nafasi kabla.
mwanzo wa sehemu ya maswali kusema-
inaonekana mimi si kabisa unsick-ni swali rahisi sana
ya kile tu ni valgrind?
Je valgrind kufanya?
Mtu unataka kusema nini valgrind gani?
[Mwanafunzi] Checks kumbukumbu uvujaji.
Yeah, ni valgrind ujumla kumbukumbu kusahihisha.
Ni, mwisho, anakwambia kama una uvujaji yoyote kumbukumbu,
ambayo ni zaidi ya kile tunayatumia kwa sababu kama unataka
kufanya vizuri katika kuweka tatizo au kama unataka
kupata kwenye bodi kubwa, unahitaji kuwa na uvujaji hakuna kumbukumbu yo yote,
na katika kesi una leak kumbukumbu kwamba huwezi kupata,
pia kukumbuka kwamba wakati wowote wewe kufungua faili
na kama huna kulifunga, hiyo leak kumbukumbu.
>> mengi ya watu ni kuangalia kwa baadhi nodi kwamba wao siyo kumkomboa
wakati kwa kweli, hawakuwa karibu kamusi katika hatua ya kwanza kabisa.
Unakuelekeza pia kama una batili anasoma au anaandika,
ambayo ina maana kama wewe kujaribu na kuweka thamani
hiyo ni zaidi ya mwisho wa lundo na haina kutokea kwa kosa seg
lakini valgrind upatikanaji wa samaki, kama ni lazima si kweli kuwa kuandika huko,
na hivyo wewe dhahiri wanapaswa kuwa yoyote ya wale aidha.
Jinsi gani unaweza kutumia valgrind?
>> Ni swali ya jumla ya
aina ya kukimbia na kuangalia pato.
pato ni balaa mengi ya nyakati.
Kuna pia furaha makosa ambapo kama una baadhi kitu vibaya sana
yanayotokea katika kitanzi, kisha hatimaye kusema, "makosa Njia nyingi sana.
Mimi naenda kuacha kuhesabu sasa. "
Ni kimsingi textual pato kwamba una kuchanganua.
Katika mwisho, itakuambia uvujaji yoyote kumbukumbu kwamba una,
wangapi vitalu, ambayo inaweza kuwa na manufaa kwa sababu
ikiwa ni moja ya kuzuia unfreed, basi ni kawaida rahisi kupata
kuliko 1000 vitalu unfreed.
1000 vitalu unfreed pengine ina maana wewe si kumkomboa
orodha yako wanaohusishwa ipasavyo au kitu.
Hiyo valgrind.
>> Sasa tuna sehemu yetu ya maswali,
ambayo huna haja ya shusha.
Unaweza bonyeza juu ya jina langu na kuvuta yao juu katika nafasi.
Sasa bonyeza yangu.
Marekebisho 1 itakuwa stack, ambayo sisi ni kufanya kwanza.
Marekebisho 2 itakuwa foleni, na Revision 3 itakuwa moja moja wanaohusishwa orodha.
Kuanzia mbali na stack yetu.
Kama anasema hapa, stack ni moja ya msingi zaidi,
msingi data miundo ya sayansi ya kompyuta.
mfano sana prototypical ni
stack ya trays katika ukumbi dining.
Ni kimsingi wakati wewe ni kuwa ilianzisha stack,
mtu ni kwenda kusema, "Oh, kama stack ya trays."
Wewe stack trays up.
Kisha wakati wa kwenda kuvuta tray,
tray kwanza hiyo kupata vunjwa ni moja ya mwisho kwamba ilikuwa kuweka juu ya stack.
stack pia-kama inavyosema hapa-
tuna sehemu ya kumbukumbu ya kuitwa stack.
Na ni kwa nini inaitwa stack?
>> Kwa sababu, kama muundo stack data,
inasukuma na POP muafaka stack juu ya stack,
ambapo muafaka stack ni kama wito maalum wa kazi.
Na kama stack, utakuwa daima kuwa na kurudi
kutoka kwa mwito wa kazi kabla ya wewe wanaweza kupata chini ndani ya muafaka chini stack tena.
Huwezi kuwa kuu wito foo wito bar na kurudi bar moja kwa moja kuu.
Ni daima got kufuata stack sahihi kusukuma na popping.
shughuli mbili, kama nilivyosema, ni kushinikiza na pop.
Wale ni zima masharti.
Unapaswa kujua kushinikiza na pop katika suala la mwingi bila kujali.
Tutaweza kuona foleni ni aina ya tofauti.
Ni kweli haina muda wote, lakini msukumo na pop ni zima kwa mwingi.
Push ni kuweka tu juu ya stack.
Picha ni kuchukua mbali stack.
Na tunaona hapa tuna struct wetu typedef stack,
hivyo tuna masharti Char **.
Msitishwe kwa ** yoyote.
Hii ni kwenda kuishia kuwa safu ya masharti
au safu ya kuyatumia kwa wahusika, ambapo
kuyatumia kwa wahusika huwa na kuwa masharti.
Haina kuwa masharti, lakini hapa, wao wanaenda kuwa masharti.
>> Tuna safu ya masharti.
Tuna kawaida, ambayo inawakilisha jinsi wengi mambo ni sasa juu ya stack,
na kisha tuna uwezo, ambayo ni wangapi vipengele inaweza kuwa juu ya stack.
uwezo wanapaswa kuanza mbali kama kitu zaidi ya 1,
lakini ukubwa ni kwenda kuanza off kama 0.
Sasa, kuna kimsingi tatu tofauti ambazo unaweza kufikiri ya stack.
Naam, kuna pengine zaidi, lakini njia mbili kuu ni
unaweza kutekeleza ni kutumia safu, au unaweza kutekeleza ni kutumia orodha zinazoungwa.
Wanaohusishwa orodha ni aina ya trivial kufanya mwingi kutoka.
Ni rahisi sana kufanya stack kutumia orodha zilizounganishwa,
hivyo hapa, sisi ni kwenda kufanya stack kutumia arrays,
na kisha kwa kutumia arrays, pia kuna njia mbili unaweza kufikiri juu yake.
Kabla ya hapo, mimi alisema tuna uwezo kwa stack,
hivyo tunaweza fit kipengele juu ya stack.
>> njia moja inaweza kutokea ni haraka kama wewe hit vipengele 10, basi wewe ni kosa.
Unaweza kujua kwamba kuna ghorofani amefungwa ya mambo 10 katika ulimwengu
kwamba hutaweza kuwa na mambo zaidi ya 10 juu ya stack yako,
katika kesi ambayo unaweza kuwa juu amefungwa juu ya ukubwa wa stack yako.
Au unaweza kuwa na stack yako kuwa unbounded,
lakini kama wewe ni kufanya safu, hiyo ina maana kwamba kila wakati wewe hit vipengele 10,
basi wewe ni kwenda na kukua kwa vipengele 20, na wakati hit vipengele 20,
wewe utaenda kuwa na kukua safu yako ya vipengele 30 au vipengele 40.
Wewe ni kwenda haja ya kuongeza uwezo, ambayo ni nini tunakwenda kufanya hapa.
Kila wakati sisi kufikia upeo wa ukubwa wa stack yetu,
wakati sisi kushinikiza juu ya kitu kingine, sisi ni kwenda haja ya kuongeza uwezo.
Hapa, tuna msukumo alitangaza kama kushinikiza bool (Char * str).
Char * str ni string kwamba sisi ni kusukuma kwenye stack,
na bool tu anasema iwapo sisi ilifanikiwa au alishindwa.
>> Tutashindwaje?
Je, ni hali tu kwamba unaweza kufikiria
ambapo tunataka haja ya kurudi uongo?
Yeah.
[Mwanafunzi] Kama ni kamili na sisi ni kutumia utekelezaji imepakana.
Yeah, hivyo ni jinsi gani sisi define-yeye akajibu
kama ni kamili na sisi ni kutumia utekelezaji imepakana.
Kisha sisi dhahiri kurudi uongo.
Haraka kama sisi hit mambo 10 katika safu, hatuwezi fit 11, hivyo sisi kurudi uongo.
Nini kama ni unbounded? Yeah.
Kama huwezi kupanua safu kwa sababu fulani.
Yeah, hivyo kumbukumbu ni rasilimali mdogo,
na hatimaye, kama sisi kuweka mambo kusukuma kwenye stack tena na tena,
sisi ni kwenda kujaribu na kutenga safu kubwa ya kifafa
uwezo mkubwa zaidi, na malloc au chochote sisi ni kutumia ni kwenda na kurudi uongo.
Naam, malloc atarudi null.
>> Kumbuka, kila wakati milele kupiga malloc, unapaswa kuwa kuangalia ili kuona kama
anarudi null au mwingine kwamba ni punguzo usahihi.
Tangu tunataka kuwa na stack unbounded,
Kesi tu tunakwenda tunarudi uongo ni kama tutajaribu
kuongeza uwezo na malloc au chochote anarudi uongo.
Kisha pop inachukua hoja hakuna,
na kuirudisha string kwamba ni juu ya stack.
Chochote alikuwa hivi karibuni juu ya kusukuma stack ni nini pop ni kurudi,
na pia kuondosha ni kutoka stack.
Na taarifa kwamba kuirudisha null kama kuna chochote juu ya stack.
Daima ni kwamba inawezekana stack ni tupu.
Katika Java, kama wewe ni kutumika kwamba, au lugha nyingine,
kujaribu pop kutoka stack tupu inaweza kusababisha ubaguzi au kitu.
>> Lakini katika C, null ni aina ya mengi ya matukio jinsi sisi kushughulikia matatizo haya.
Msimamizi wa null ni jinsi tunakwenda yanamaanisha kwamba stack ilikuwa tupu.
Tumekuwa zinazotolewa kificho kwamba mtihani utendaji stack yako,
kutekeleza kushinikiza na pop.
Hii haitakuwa mengi ya code.
Nami-kweli, kabla ya sisi kufanya hivyo, ladha, ladha-
kama si kuiona, malloc si kazi tu
kwamba inatenga kumbukumbu juu ya lundo kwa ajili yenu.
Kuna familia ya kazi alloc.
kwanza ni malloc, ambayo wewe ni kutumika.
Kisha kuna calloc, ambayo haina kitu kimoja kama malloc,
lakini itakuwa sifuri kila kitu kwa ajili yenu.
Kama ve milele alitaka kuweka kila kitu kwa null baada mallocing kitu
unapaswa kuwa tu kutumika calloc katika nafasi ya kwanza badala ya kuandika
kwa kitanzi kwa sifuri nje block nzima ya kumbukumbu.
>> Realloc ni kama malloc na ina mengi ya matukio maalum,
lakini kimsingi nini realloc gani ni
inachukua pointer kwamba alikuwa tayari zimetengwa.
Realloc ni kazi unataka kulipa kipaumbele hapa.
Inachukua pointer kwamba alikuwa tayari kurudi kutoka malloc.
Hebu sema wewe kuomba kutoka malloc pointer ya ka 10.
Kisha baadaye wewe kutambua alitaka ka 20,
hivyo wewe piga juu ya realloc kwamba pointer na ka 20,
na realloc moja kwa moja nakala juu ya kila kitu kwa ajili yenu.
Kama wewe tu kuitwa malloc tena, kama nina block ya ka 10.
Sasa mimi haja block ya ka 20,
hivyo kama mimi malloc ka 20, basi nina manually nakala zaidi ya ka 10 ni kitu cha kwanza
katika jambo la pili na kisha bure jambo la kwanza.
Realloc kushughulikia kwamba kwa ajili yenu.
>> Notice signature ni kwenda kuwa utupu *,
ambayo ni haki ya kurudi pointer block ya kumbukumbu,
kisha utupu * PTR.
Unaweza kufikiri ya * utupu kama pointer generic.
Kwa ujumla, kamwe kukabiliana na * batili,
lakini malloc ni kurudi * batili, na kisha ni kutumika tu kama
hii ni kweli kwenda kuwa * Char.
uliopita utupu * ambayo yamekuwa akarudi na malloc
sasa inaenda kuwa kupita kwa realloc, na kisha ukubwa
ni idadi mpya ya ka unataka kutenga, hivyo uwezo wako mpya.
Mimi nitakupa dakika kadhaa, na kufanya hivyo katika nafasi yetu.
Anza na Revision 1.
Mimi nitaacha wewe baada hopefully kuhusu muda wa kutosha wa kutekeleza kushinikiza,
na kisha mimi nitakupa mwingine mapumziko kufanya pop.
Lakini ni kweli si kwamba code sana wakati wote.
code zaidi pengine ni mambo kupanua, kupanua uwezo.
Sawa, hakuna shinikizo kabisa kufanyika,
lakini muda mrefu kama wewe kujisikia kama uko kwenye njia ya haki, kwamba ni vizuri.
>> Je, mtu yeyote yoyote code wao kujisikia vizuri na mimi kuunganisha up?
Yeah, mimi, bali haina mtu yeyote yoyote code naweza kuvuta up?
Sawa, unaweza kuanza, ila it, chochote ni?
Mimi daima kusahau kwamba hatua.
Okay, kuangalia kushinikiza,
unataka kueleza code yako?
[Mwanafunzi] Awali ya yote, mimi kuongezeka ukubwa.
Nadhani labda mimi lazima kuwa na kwamba-anyway, mimi kuongezeka ukubwa,
na mimi kuona kama ni chini ya uwezo.
Na kama ni chini ya uwezo, mimi kuongeza safu ya kwamba tayari tunao.
Na kama siyo, mimi nitaongeza uwezo kwa 2,
na mimi reallocate safu masharti kwa kitu fulani na ukubwa kubwa uwezo sasa.
Na kisha kama kwamba inashindwa, nawaambia mtumiaji na kurudi uongo,
na ikiwa ni faini, basi mimi kuweka kamba katika doa mpya.
>> [Rob B.] Pia taarifa kwamba sisi kutumika nzuri bitwise operator hapa
kuzidisha kwa 2.
Kumbuka, kuhama kushoto ni daima kwenda tele kwa 2.
Kuhama haki ni kugawanywa na 2 kwa muda mrefu kama wewe kumbuka kwamba ina maana
kugawanya na 2 kama katika integer kugawanywa na 2.
Ni wanaweza butu 1 hapa au pale.
Lakini mabadiliko ya kushoto na 1 daima ni kwenda kuwa kuyagawa kwa 2,
isipokuwa wewe kufurika mipaka ya integer, na basi itakuwa si kuwa.
maoni upande.
Mimi kama kufanya-hii si kwenda na mabadiliko ya coding njia yoyote chochote,
lakini mimi kama kwa kufanya kitu kama hiki.
Ni kweli ni kwenda kufanya ni kidogo tena.
Labda hii si kesi kamili kuonyesha hili,
lakini mimi kama sehemu ya ndani ya vitalu haya ya-
sawa, kama hii ikiwa ikitokea, basi mimi naenda kufanya kitu fulani,
na kisha kazi ni kosa.
Mimi hawana haja ya basi kitabu macho yangu njia yote chini kazi
kuona nini kinatokea baada ya mwingine.
Ni kama hii ikiwa ikitokea, basi mimi tu kurudi.
Ni pia ina nice aliongeza faida ya kila kitu zaidi ya hii
sasa ni kubadilishwa kushoto mara moja.
Mimi hakuna haja tena-kama wewe milele karibu ridiculously mrefu mistari,
kisha wale ka 4 inaweza kusaidia, na pia kitu zaidi ni kushoto,
chini kuzidiwa unaweza kujisikia kama kama-sawa, mimi na kukumbuka
Mimi nina sasa katika kitanzi wakati ndani ya ndani ya mwingine wa kwa kitanzi.
Popote unaweza kufanya hivyo kurudi mara moja, mimi aina ya kama.
Ni kabisa hiari na si inatarajiwa kwa njia yoyote.
>> [Mwanafunzi] kuwe kawaida - katika hali ya kushindwa?
hali ya kushindwa hapa ni sisi kushindwa realloc, hivyo ndiyo.
Angalia jinsi katika hali ya kushindwa, labda,
isipokuwa sisi bure stuff baadaye, sisi ni daima kwenda kushindwa
hakuna jambo mara ngapi sisi kujaribu kushinikiza kitu.
Kama tutaendelea kusukuma, sisi kuendelea incrementing kawaida,
ingawa sisi si kuweka kitu chochote kwenye stack.
Kawaida hatuwezi increment ukubwa mpaka
baada tumefanikiwa kuweka kwenye stack.
Tunataka kufanya hivyo, wanasema, aidha hapa na hapa.
Na kisha badala ya kusema s.size ≤ uwezo, ni chini ya uwezo,
tu kwa sababu sisi wakiongozwa ambapo kila kitu kilikuwa.
>> Na kumbuka, mahali tu kwamba sisi inaweza uwezekano kurudi uongo
ni hapa, ambapo realloc akarudi null,
na kama kutokea kwa kukumbuka makosa ya hali,
labda unaweza kufikiria kesi hii ambapo unataka magazeti makosa ya hali,
hivyo fprintf stderr badala ya kuchapa moja kwa moja na nje ya kiwango.
Tena, kwamba si matumaini, lakini kama ni makosa,
aina printf, basi unaweza wanataka kufanya hivyo magazeti kwa makosa ya hali badala ya nje ya kiwango.
>> Mtu yeyote kuwa kitu kingine kukumbuka? Ndiyo.
[Mwanafunzi] Je, unaweza kwenda zaidi ya [inaudible]?
[Rob B.] Ndiyo, binariness wake halisi au tu ni nini?
[Mwanafunzi] Basi wewe kuzidisha ni kwa 2?
[Rob B.] Yeah, kimsingi.
Katika nchi binary, sisi daima kuwa kuweka wetu wa tarakimu.
Shifting hii kushoto na 1 kimsingi kuwekeza hapa upande wa kulia.
Rudi hii, tu kukumbuka kwamba kila kitu katika binary
ni nguvu ya 2, hivyo hii inawakilisha 2-0,
hii 2-1, hii 2-2.
Kwa kuingiza 0 kwa upande wa kulia sasa, sisi tu kuhama kila kitu juu.
Nini kutumika kuwa 2-0 ni sasa 2-1, ni 2-2.
upande wa kulia kwamba sisi kuingizwa
ni lazima itakuwa 0,
ambayo hufanya akili.
Kama umewahi kuzidisha idadi na 2, si kwenda kuishia isiyo ya kawaida,
hivyo 2 mahali 0 lazima 0,
na hii ni kile nusu alionya kuhusu kabla ni kama huna kutokea kuhama
zaidi ya idadi ya sarafu katika integer,
kisha 1 huu ni kwenda kuishia kwenda mbali.
Hiyo tu wasiwasi kama kutokea kwa kuwa kushughulika na uwezo kweli kubwa.
Lakini katika hatua hiyo, basi wewe ni kushughulika na safu ya mabilioni ya mambo,
ambayo inaweza kufaa katika kumbukumbu anyway.
>> Sasa tunaweza kupata pop, ambayo ni rahisi hata.
Unaweza kufanya hivyo kama kama wewe kutokea pop rundo zima,
na sasa uko katika uwezo nusu tena.
Unaweza realloc shrink kiasi cha kumbukumbu una,
lakini huna na wasiwasi juu ya kwamba, hivyo tu realloc kesi ni kwenda kuwa
kuongezeka kumbukumbu, kamwe kushuka kumbukumbu,
ambayo ni kwenda kufanya super pop rahisi.
Sasa foleni, ambayo ni kwenda kuwa kama mwingi,
lakini ili kwamba kuchukua mambo ya nje ni kuachwa.
Mfano wa foleni ni mstari,
hivyo mimi nadhani kama ungekuwa Kiingereza, napenda kuwa alisema
Mfano wa foleni ni foleni.
Hivyo kama mstari, kama wewe ni mtu wa kwanza katika mstari,
wanatarajia kuwa mtu wa kwanza nje ya mstari.
Kama wewe ni mtu wa mwisho katika mstari, wewe ni kwenda kuwa mtu wa mwisho serviced.
Tunatoa wito kuwa mfano FIFO, ambapo ilikuwa stack LIFO mfano.
Wale maneno ni pretty zima.
>> Kama mwingi na tofauti na arrays, foleni kawaida hawana kuruhusu upatikanaji wa vipengele katika katikati.
Hapa, stack, tuna msukumo na pop.
Hapa, sisi kutokea kwa niliyowaitia enqueue na dequeue.
Mimi pia aliwasikia kuitwa kuhama na unshift.
Nimesikia watu wakisema kushinikiza na pop na pia yanahusu foleni.
Nimesikia Insert, kuondoa,
hivyo kushinikiza na pop, kama wewe ni kuzungumza juu mwingi, wewe ni kusukuma na popping.
Kama wewe ni kuzungumza kuhusu foleni, unaweza kuchukua maneno unataka kutumia
kwa Infogande na kuondolewa, na hakuna makubaliano juu ya kile lazima kuitwa.
Lakini hapa, tuna enqueue na dequeue.
Sasa, struct inaonekana karibu kufanana na struct stack.
Lakini tuna kuweka wimbo wa kichwa.
Nadhani anasema chini hapa, lakini kwa nini tunahitaji kichwa?
prototypes kimsingi kufanana na kushinikiza na pop.
Unaweza kufikiria kama msukumo na pop.
Tofauti tu ni pop ni kurudi-badala ya mwisho, ni kurudi kwanza.
2, 1, 3, 4, au kitu.
Na hapa ni mwanzo.
Foleni yetu ni kabisa kamili, hivyo kuna nne vipengele ndani yake.
mwisho wa foleni yetu kwa sasa ni 2,
na sasa sisi kwenda Insert kitu kingine.
>> Wakati tunataka Insert kwamba kitu kingine, nini tulifanya kwa toleo stack
ni sisi kupanuliwa block wetu wa kumbukumbu.
Je, ni tatizo na hili?
[Mwanafunzi] Wewe hoja 2.
Kile alisema kabla kuhusu mwisho wa foleni,
hii haina mantiki kwamba sisi kuanza saa 1,
kisha tunataka dequeue 1, kisha dequeue 3, kisha dequeue 4,
kisha dequeue 2, kisha dequeue hii moja.
Hatuwezi kutumia realloc sasa,
au kwa uchache sana, una matumizi realloc katika njia tofauti.
Lakini pengine lazima sio tu kutumia realloc.
Wewe ni kwenda kuwa na manually nakala ya kumbukumbu yako.
>> Kuna kazi mbili kunakili kumbukumbu.
Kuna memcopy na memmove.
Mimi sasa kusoma kurasa mtu kuona ambayo moja wewe ni kwenda unataka kutumia.
Okay, memcopy, tofauti ni
kwamba memcopy na memmove, mmoja Hushughulikia kesi usahihi
ambapo wewe ni kuiga katika kanda ambayo hufanyika na hufunika kanda
wewe ni kuiga kutoka.
Memcopy haina kushughulikia hilo. Memmove gani.
Unaweza kufikiri ya tatizo kama-
hebu sema nataka nakala hii guy,
hizi nne kwa this guy zaidi.
Katika mwisho, nini safu inapaswa kuangalia kama
baada ya nakala ni 2, 1, 2, 1, 3, 4, na kisha baadhi ya mambo mwishoni.
Lakini hii ni tegemezi kwa utaratibu ambao sisi kweli nakala,
tangu kama hatuwezi kufikiria ukweli kwamba mkoa tuko ndani ya kuiga
overlaps moja tuko kuiga kutoka,
basi tunaweza kufanya kama mwanzo hapa, nakala 2 ndani ya mahali tunataka kwenda,
kisha kuondoka kuyatumia yetu mbele.
>> Sasa sisi ni kwenda kuwa hapa na hapa, na sasa tunataka nakala
this guy juu ya guy hii na hoja kuyatumia yetu mbele.
Nini sisi ni kwenda kuishia kupata ni 2, 1, 2, 1, 2, 1
badala ya 2 inafaa, 1, 2, 1, 3, 4 kwa sababu
2, 1 overrode 3 awali, 4.
Memmove Hushughulikia kwamba usahihi.
Katika kesi hiyo, kimsingi tu daima kutumia memmove
sababu Hushughulikia kwa usahihi.
Ni kawaida haina kufanya yoyote mbaya.
Wazo ni badala ya kuanzia mwanzo na kuiga njia hii
kama sisi tu alifanya hapa, ni kuanza kutoka mwisho na nakala katika,
na katika kesi hiyo, unaweza kamwe kuwa na tatizo.
Kuna utendaji hakuna waliopotea.
Daima kutumia memmove. Kamwe wasiwasi kuhusu memcopy.
Na kwamba ni wapi utaenda kuwa na tofauti memmove
sehemu amefungwa kuzunguka ya foleni yako.
Hakuna wasiwasi kama si kabisa kufanyika.
Hii ni ngumu zaidi kuliko stack, pop kushinikiza, na.
>> Mtu yeyote kuwa yoyote code tunaweza kufanya kazi na?
Hata kama kabisa incomplete?
[Mwanafunzi] Yeah, ni kabisa hayajakamilika, ingawa.
Kabisa incomplete ni faini kwa muda mrefu kama sisi-unaweza kujiokoa marekebisho?
Mimi kusahau kwamba kila wakati.
Okay, kupuuza kile kinachotokea wakati tunahitaji resize mambo.
Kabisa kupuuza resize.
Eleza kanuni hii.
Mimi nina kuangalia kwanza ya yote kama kawaida ni chini ya nakala ya kwanza ya yote
na kisha baada ya mimi Insert-Mimi kuchukua kichwa + ukubwa,
na mimi kuhakikisha Wraps kuzunguka uwezo wa safu,
na mimi Insert string mpya katika nafasi hiyo.
Kisha mimi kuongeza ukubwa na kurudi kweli.
>> [Rob B.] Hii ni dhahiri moja ya kesi hizo ambapo utaenda wanataka kutumia Mod.
Aina yoyote ya kesi ambapo una wrapping kote, ikiwa unafikiri wrapping kote,
mawazo ya haraka lazima Mod.
Kama optimization haraka / kufanya code yako mstari mmoja mfupi,
taarifa kwamba line mara baada ya hii moja
ni tu ukubwa + +, hivyo kuunganisha kwamba katika mstari huu, ukubwa + +.
Sasa chini hapa, tuna kesi
ambapo hatuna kumbukumbu ya kutosha,
hivyo sisi ni kuongeza uwezo wetu kwa 2.
Nadhani unaweza kuwa na tatizo moja hapa, lakini hatuwezi kupuuza sasa,
ambapo kama umeshindwa kuongeza uwezo wako,
basi wewe ni kwenda kutaka kupunguza uwezo wako na 2 tena.
Mwingine note mfupi ni kama tu unaweza kufanya + =,
unaweza pia kufanya << =.
Karibu chochote unaweza kwenda mbele sawa, + =, | =, & =, << =.
Char * mpya ni ya kuzuia wetu mpya wa kumbukumbu.
Oh, zaidi ya hapa.
>> Nini watu wanadhani kuhusu aina ya kuzuia wetu mpya wa kumbukumbu?
[Mwanafunzi] Ni lazima Char **.
Kufikiri nyuma struct yetu hapa juu,
masharti ni nini sisi ni reallocating.
Sisi ni maamuzi mzima mpya nguvu kwa ajili ya kuhifadhi mambo katika foleni.
Nini sisi ni kwenda kuwa kumshirikisha kwa masharti yako ni nini tuko mallocing sasa hivi,
na hivyo mpya ni itakuwa ** Char.
Ni kwenda kuwa safu ya masharti.
Basi ni nini kesi ya chini ambayo tunakwenda kurudi uongo?
[Mwanafunzi] Je, sisi kufanya * Char?
[Rob B.] Ndiyo, nzuri wito.
[Mwanafunzi] Nini ilikuwa hivyo?
[Rob B.] Sisi alitaka kufanya ukubwa wa * Char kwa sababu sisi ni tena-
hii ingekuwa kweli kuwa tatizo kubwa sana kwa sababu sizeof (Char) itakuwa 1.
Sizeof Char * ni kwenda kuwa 4,
hivyo mengi ya mara wakati wewe ni kushughulika na ints,
wewe huwa na kupata mbali na hilo kwa sababu ya ukubwa wa int na ukubwa wa * int
juu ya mfumo wa 32-bit ni kwenda kuwa kitu kimoja.
Lakini hapa, sizeof (Char) na sizeof (Char *) sasa kwenda kuwa kitu kimoja.
>> Je, ni hali ambapo sisi kurudi uongo?
[Mwanafunzi] Mpya ni null.
Yeah, ikiwa ni mpya null, sisi kurudi uongo,
na mimi nina kwenda kutupa chini hapa-
[Mwanafunzi] [inaudible]
[Rob B.] Yeah, hii ni faini.
Unaweza ama kufanya 2 mara uwezo au kuhama uwezo 1 na kisha tu akiweke chini hapa au chochote.
Tutaweza kufanya hivyo kama sisi alikuwa ni.
Uwezo >> = 1.
Na wewe kamwe kwenda kuwa na wasiwasi juu ya kupoteza nafasi ya 1
kwa sababu wewe kushoto kubadilishwa na 1, hivyo mahali 1 ni lazima 0,
hivyo haki shifting na 1, wewe bado itakuwa faini.
[Mwanafunzi] Je, unahitaji kufanya hivyo kabla ya kurudi?
[Rob B.] Ndiyo, hii inafanya kabisa hakuna maana.
>> Sasa kudhani tunakwenda kuishia kurejea kweli hadi mwisho.
njia tunakwenda kufanya memmoves hizi,
tunahitaji kuwa makini na jinsi sisi kufanya nao.
Je, mtu yeyote una mapendekezo yoyote kwa jinsi sisi kufanya nao?
Hapa ni kuanza yetu.
Inevitably, tunataka kuanza tena mwanzoni
na nakala ya mambo katika kutoka huko, 1, 3, 4, 2.
Jinsi gani unaweza kufanya hivyo?
Kwanza, mimi na kuangalia ukurasa mtu kwa memmove tena.
Memmove, utaratibu wa hoja zote ni muhimu.
Tunataka marudio yetu ya kwanza, chanzo pili, ukubwa wa tatu.
Kuna mengi ya kazi ambayo kubadili chanzo na marudio.
Marudio, chanzo huelekea kuwa thabiti kiasi fulani.
Hoja, kile ni kurudi?
Kuirudisha pointer kwa marudio, kwa sababu yoyote unaweza kutaka kuwa.
Siwezi picha kusoma, lakini tunataka kuhamia katika eneo letu.
>> Nini marudio yetu kwenda kuwa?
[Mwanafunzi] Mpya.
[Rob B.] Ndiyo, na ambapo ni sisi kuiga kutoka?
Jambo la kwanza sisi ni kuiga ni hii 1, 3, 4.
Je, ni-hii 1, 3, 4.
Nini ni anuani ya hii 1?
Nini ni anuani ya kwamba 1?
[Mwanafunzi] [inaudible]
[Rob B.] Mkuu + anuani ya kipengele kwanza.
Jinsi gani sisi kupata kipengele kwanza katika safu?
[Mwanafunzi] Foleni.
[Rob B.] Ndiyo, q.strings.
Kumbuka, hapa, kichwa yetu ni 1.
Darn yake. Mimi tu nadhani ni magically-
Hapa, kichwa yetu ni 1. Mimi nina kwenda na mabadiliko ya rangi yangu pia.
Na hapa ni masharti.
Hii, tunaweza ama kuandika ni kama sisi alifanya juu hapa
na vichwa + q.strings.
mengi ya watu pia kuandika & q.strings [kichwa].
Hii si kweli yoyote chini ya ufanisi.
Unaweza kufikiria kama wewe ni dereferencing yake na kisha kupata anuani ya,
lakini compiler ni kwenda kutafsiri kwa nini tulikuwa kabla anyway, q.strings + kichwa.
Aidha njia unataka kufikiria hivyo.
>> Na jinsi gani sisi wengi ka unataka kunakili?
[Mwanafunzi] Uwezo - kichwa.
Uwezo - kichwa.
Na kisha unaweza daima kuandika mfano
kufikiri kama hiyo ni haki.
[Mwanafunzi] Inahitaji kugawanywa na 2 hapo.
Yeah, hivyo mimi nadhani tunaweza kutumia kawaida.
Sisi bado tuna kawaida kuwa-
kutumia ukubwa, tuna kawaida sawa na 4.
Kawaida yetu ni 4. Kichwa yetu ni 1.
Tunataka nakala mambo haya 3.
Hiyo sanity kuangalia kwamba ukubwa - kichwa ni usahihi 3.
Na kuja nyuma hapa, kama sisi alisema kabla,
kama sisi kutumika uwezo, basi tunatarajia kuwa kwa kugawanya na 2
kwa sababu tumekuwa tayari mzima uwezo wetu, hivyo badala yake, sisi ni kwenda kutumia kawaida.
Hiyo nakala kwamba sehemu.
Sasa, sisi haja ya kunakili sehemu nyingine, sehemu iliyosalia ya mwanzo.
>> Hiyo inaenda memmove katika kile msimamo?
[Mwanafunzi] Plus kawaida - kichwa.
Ndiyo, hivyo sisi tayari kunakiliwa katika kawaida - ka kichwa,
na hivyo ambapo tunataka nakala ka iliyobaki ni mpya
na kisha ukubwa bala-vizuri, idadi ya ka tumekuwa tayari kunakiliwa in
Na kisha ambapo ni sisi kuiga kutoka?
[Mwanafunzi] Q.strings [0].
[Rob B.] Ndiyo, q.strings.
Tunaweza aidha kufanya & q.strings [0].
Hii ni kwa kiasi kikubwa chini ya kawaida zaidi kuliko huu.
Kama ni kwenda tu kuwa 0, basi utasikia huwa na kuona q.strings.
Hiyo ambapo sisi ni kuiga kutoka.
Jinsi ka wengi hawana sisi wameondoka kunakili? >> [Mwanafunzi] 10.
Haki.
[Mwanafunzi] Je, tuna kuzidisha 5-10 ukubwa wa mara ka au kitu?
Yeah, hivyo hii ni wapi-nini hasa ni sisi kuiga?
[Mwanafunzi] [inaudible]
Je, ni aina ya kitu sisi ni kuiga?
[Mwanafunzi] [inaudible]
Yeah, hivyo Char * Ni kwamba sisi ni kuiga, hatujui ambapo wale wanaotoka katika.
Naam, uko wapi akizungumzia, kama masharti, sisi kuishia kusukuma ni kwenye foleni
au enqueuing kwenye foleni.
Ambapo wale wanaotoka katika, hatuna wazo.
Sisi tu haja ya kuweka wimbo wa Char * s wenyewe.
Hatutaki nakala kawaida - kichwa ka.
Tunataka nakala kawaida - kichwa Char * s,
hivyo tunakwenda kuzidisha hili kwa sizeof (Char *).
Same chini hapa, kichwa * sizeof (Char *).
>> [Mwanafunzi] Je kuhusu [inaudible]?
Haki hii hapa?
[Mwanafunzi] Hapana, chini ya kwamba, ukubwa - kichwa.
[Rob B.] Haki hii hapa?
Pointer hesabu.
Jinsi pointer arithmetic ni kwenda kufanya kazi ni
ni moja kwa moja humzidishia na ukubwa wa aina ya kwamba sisi ni kushughulika na.
Tu kama zaidi ya hapa, mpya + (ukubwa - kichwa)
ni hasa sawa na [size - kichwa] & mpya
mpaka tunatarajia kwamba kwa kufanya kazi kwa usahihi,
tangu kama sisi ni kushughulika na safu int, basi sisi si index na int-
au kama ni ya ukubwa wa 5 na unataka kipengele 4, basi sisi katika index
int safu [4].
Wewe don't-[4] * ukubwa wa int.
Kwamba Hushughulikia ni moja kwa moja, na hii kesi
ni literally sawa, hivyo syntax bracket
ni kwenda tu kuwa waongofu kwa hii haraka kama wewe kukusanya.
Hiyo ni kitu unahitaji kuwa makini ya kwamba
wakati wewe ni kuongeza ukubwa - kichwa
wewe ni akiongeza si moja Byte.
Wewe ni kuongeza moja Char *, ambayo inaweza kuwa moja ka au chochote.
>> Maswali mengine?
Okay, dequeue ni kwenda kuwa rahisi zaidi.
Mimi nitakupa dakika kutekeleza.
Oh, na mimi nadhani hii ni hali kama hiyo ambapo
nini kesi enqueue, kama sisi ni enqueuing null,
labda tunataka kushughulikia hilo, labda sisi si.
Sisi si kufanya tena hapa, lakini sawa stack kesi yetu.
Kama sisi enqueue null, sisi kutaka kupuuza yake.
Mtu yeyote kuwa baadhi ya kanuni siwezi kuvuta up?
[Mwanafunzi] Mimi tu dequeue.
Version 2 ni kwamba-sawa.
Unataka kueleza?
[Mwanafunzi] Kwanza, kuhakikisha kuna kitu katika foleni
na kwamba ukubwa ni kwenda chini kwa 1.
Unahitaji kufanya hivyo, na kisha kurudi kichwa
na kisha kusonga kichwa up 1.
Okay, kwa hivyo kuna kesi kona tuna kufikiria. Yeah.
[Mwanafunzi] Kama kichwa yako ni katika kipengele mwisho,
basi hutaki kichwa kwa kumweka nje ya safu.
>> Yeah, hivyo kwa haraka kama kichwa hits mwisho wa safu yetu,
wakati sisi dequeue, kichwa zetu zinapaswa modded nyuma 0.
Kwa bahati mbaya, hatuwezi kufanya hivyo katika hatua moja.
Nadhani njia ningependa pengine kurekebisha ni
hii ni kwenda kuwa * Char, nini tuko kurudi,
jina lolote yako variable anataka kuwa.
Kisha tunataka Mod kichwa na uwezo wetu
na kisha kurudi ret.
mengi ya watu hapa wapate kufanya-
hii ni kesi ya-you'll kuona watu kufanya kama kichwa
ni mkubwa kuliko uwezo, kufanya kichwa - uwezo.
Na hiyo tu kazi kuzunguka kile Mod ni.
Mkuu Mod = uwezo ni safi zaidi
ya wrapping karibu zaidi kuliko kama kichwa kubwa kuliko uwezo kichwa - uwezo.
>> Maswali?
Okay, jambo la mwisho tuna kushoto ni orodha yetu na uhusiano nao.
Unaweza kutumika kwa baadhi ya tabia wanaohusishwa orodha kama alivyofanya
wanaohusishwa orodha katika meza yako hash, kama alivyofanya meza hash.
Ninawaasa kufanya meza hash.
Unaweza kuwa tayari amefanya trie,
lakini inajaribu ni magumu zaidi.
Katika nadharia, wao uko asymptotically bora.
Lakini tu kuangalia bodi kubwa,
na inajaribu kamwe kufanya vizuri, na wao kuchukua kumbukumbu zaidi.
Kila kitu kuhusu anajaribu kuishia kuwa mbaya zaidi kwa ajili ya kazi zaidi.
Ni nini ufumbuzi Daudi Malan siku zote ni
ni yeye daima posts ufumbuzi wake trie, na hebu angalia ambapo yeye sasa ni.
Nini ilikuwa chini ya yeye, Daudi J?
Yeye ni # 18, hivyo si kwamba sana mbaya,
na kwamba kinaendelea kuwa moja ya bora inajaribu unaweza kufikiria
au mojawapo ya bora ya anajaribu trie.
Je, ni hata ufumbuzi wake wa awali?
Najisikia kama trie ufumbuzi huwa na kuwa zaidi katika hili mbalimbali ya matumizi ya RAM.
>> Kwenda chini hadi juu sana, na RAM ni matumizi katika tarakimu moja.
Nenda chini kuelekea chini, na kisha wewe kuanza kuona anajaribu
ambapo unaweza kupata kabisa mkubwa RAM matumizi,
na inajaribu ni magumu zaidi.
Si kabisa thamani yake lakini uzoefu wa elimu kama alivyofanya moja.
Jambo la mwisho ni orodha yetu zilizounganishwa,
na mambo haya matatu, mwingi, foleni, na orodha zilizounganishwa,
kitu baadaye wewe milele kufanya katika sayansi ya kompyuta
kudhani una uzoefu na mambo haya.
Wao ni hivyo tu la msingi kwa kila kitu.
>> Wanaohusishwa orodha, na hapa tuna orodha moja moja wanaohusishwa ni kwenda kuwa utekelezaji wetu.
Nini maana ya moja moja wanaohusishwa kinyume na doubly wanaohusishwa? Ndiyo.
[Mwanafunzi] Ni tu anaonyesha pointer ijayo kuliko kuyatumia,
kama moja kabla yake na moja baada yake.
Yeah, hivyo katika format picha, nini mimi tu kufanya?
Nina mambo mawili. Nina picha na picha.
Katika format picha, wanaohusishwa zetu moja moja orodha,
inevitably, tuna baadhi ya aina ya pointer kwa mkuu wa orodha yetu,
na kisha ndani ya orodha yetu, sisi tu kuyatumia,
na labda hii pointi null.
Ni kwenda kuwa kuchora yako mfano wa orodha moja moja wanaohusishwa.
orodha doubly wanaohusishwa, unaweza kwenda nyuma.
Kama mimi kukupa yoyote nodi katika orodha, basi unaweza lazima kupata
yoyote nodi nyingine katika orodha ikiwa ni orodha doubly zinazoungwa.
Lakini kama mimi kupata wewe nodi ya tatu katika orodha na ni orodha moja moja wanaohusishwa,
hakuna njia wewe milele kwenda kupata nodes kwanza na pili.
Na kuna faida na detriments, na moja dhahiri moja
ni wewe kuchukua zaidi ukubwa, na una kuweka wimbo wa ambapo mambo haya ni akizungumzia sasa.
Lakini sisi tu huduma ya juu moja moja wanaohusishwa.
>> mambo machache sisi itawabidi kutekeleza.
Struct yako typedef nodi, int i: struct nodi * ijayo; nodi.
Typedef kwamba lazima kuchomwa ndani ya akili yako.
Quiz 1 lazima kama kutoa typedef ya nodi wanaohusishwa orodha,
na unapaswa kuwa na uwezo wa mara chorochoro kwamba chini
bila hata kufikiria kuhusu hilo.
Mimi nadhani maswali wanandoa, kwa nini tunahitaji struct hapa?
Kwa nini hawawezi sisi kusema * nodi?
[Mwanafunzi] [inaudible]
Yeah.
Kitu tu kwamba amefafanua nodi kama kitu
ni typedef yenyewe.
Lakini kama ya hatua hii, wakati tuko aina ya parsing kupitia ufafanuzi huu nodi struct,
sisi si kumaliza typedef wetu bado, hivyo tangu typedef imekuwa si kumaliza,
nodi haipo.
Lakini struct nodi gani, na hii nodi katika hapa,
hii inaweza pia kuitwa kitu kingine chochote.
Hii inaweza kuitwa n.
Ni inaweza kuitwa zilizounganishwa orodha nodi.
Inaweza kuitwa kitu.
Lakini hii nodi struct anahitaji kuitwa kitu sawa kama nodi hii struct.
Nini wewe piga hii ina pia kuwa hapa,
na hivyo kuwa pia unajibu hatua ya pili ya swali
ambayo ni kwa nini-ya mara nyingi wakati unaweza kuona structs na typedefs ya structs,
utaona structs bila majina ambapo utasikia tu kuona struct typedef,
utekelezaji wa kamusi struct,, au chochote.
>> Kwa nini hapa tunahitaji kusema nodi?
Kwa nini hawawezi kuwa struct bila majina?
Ni karibu jibu sawa.
[Mwanafunzi] Unahitaji rejea ni ndani ya struct.
Yeah, ndani ya struct, unahitaji kwa kutaja struct yenyewe.
Kama wewe si kutoa struct jina, kama ni struct bila majina, huwezi kutaja hayo.
Na mwisho lakini si angalau-haya lazima wote kuwa fulani moja kwa moja,
na wao wanapaswa kukusaidia kutambua kama wewe kuandika hii chini
kuwa wewe ni kufanya kitu kibaya kama hawa aina ya mambo hazina maana.
Mwisho lakini si uchache, kwa nini hii kuwa struct nodi *?
Kwa nini hawawezi tu kuwa struct nodi ijayo?
[Mwanafunzi] Pointer kwa struct ijayo.
Hiyo ni inevitably nini tunataka.
Mbona hakuweza kamwe kuwa struct nodi ijayo?
Kwa nini ni kuwa kwa kuwa struct nodi * ijayo? Yeah.
[Mwanafunzi] Ni kama kitanzi usio.
Yeah.
[Mwanafunzi] Ingekuwa wote kuwa katika moja.
Yeah, nadhani tu wa jinsi tunataka kufanya ukubwa wa au kitu.
Ukubwa wa struct kimsingi ni + au - baadhi mfano hapa au pale.
Ni kimsingi kwenda kuwa jumla ya ukubwa wa mambo katika struct.
Haki hii hapa, bila ya kubadilisha kitu chochote, ukubwa ni kwenda kuwa rahisi.
Ukubwa wa nodi struct ni kwenda kuwa ukubwa wa kawaida i + ya pili.
Ukubwa wa i ni kwenda kuwa 4. Ukubwa wa pili ni kwenda kuwa 4.
Ukubwa wa nodi struct ni kwenda kuwa 8.
Kama hatuna *, kufikiri ya sizeof,
kisha sizeof (i) ni kwenda kuwa 4.
Ukubwa wa nodi struct ijayo itakuwa ni ya kawaida ya i + ukubwa wa nodi ijayo struct
+ Ukubwa wa kawaida i + ya struct nodi ijayo.
Itakuwa recursion usio wa nodi.
Hii ni kwa nini hii ni jinsi mambo kuwa.
>> Tena, dhahiri kukariri kwamba,
au angalau kuelewa kutosha kwamba unaweza kuwa na uwezo wa
sababu kwa nini ni lazima kuangalia kama.
mambo tunakwenda wanataka kutekeleza.
Kama urefu wa orodha-
unaweza kudanganya na kuweka karibu
kimataifa urefu au kitu, lakini sisi siyo kwenda kufanya hiyo.
Sisi ni kwenda kuhesabu urefu wa orodha.
Sisi ina, hivyo ndiyo kimsingi kama kutafuta,
hivyo tuna orodha ya wanaohusishwa integers kuona kama integer hii ni katika orodha zinazoungwa.
Prepend ni kwenda Insert katika mwanzo wa orodha.
Append ni kwenda Insert mwishoni.
Insert_sorted ni kwenda Insert katika nafasi sorted katika orodha.
Insert_sorted aina ya akubali kwamba wewe kamwe kutumika prepend au append katika njia mbaya.
>> Insert_sorted wakati wewe ni kutekeleza insert_sorted-
hebu sema tuna orodha yetu zinazoungwa.
Hii ni nini sasa inaonekana kama, 2, 4, 5.
Nataka Insert 3, hivyo muda mrefu kama orodha yenyewe tayari Iliyopangwa,
ni rahisi kupata ambapo 3 ni mali.
Mimi kuanza saa 2.
Okay, 3, ni mkubwa kuliko 2, hivyo nataka kuendelea.
Oh, 4 ni kubwa mno, hivyo najua 3 yataenda katika kati ya 2 na 4,
na nina kurekebisha kuyatumia na mambo ambayo yote.
Lakini kama sisi hawakuwa madhubuti kutumia insert_sorted,
kama hebu sema tu mimi prepend 6,
kisha orodha yangu zilizounganishwa inaenda kuwa hii.
Ni sasa haina mantiki, hivyo kwa insert_sorted, unaweza kudhani tu
kwamba orodha ni Iliyopangwa, ingawa shughuli zipo
ambayo inaweza kusababisha kwa si sorted, na hiyo ni yake.
Kupata msaada Insert-hivyo hayo ni mambo kuu utaenda kuwa na kutekeleza.
>> Kwa sasa, kuchukua dakika kufanya urefu na ina,
na wale lazima relativt haraka.
Nearing kufunga wakati, hivyo mtu yeyote kuwa na kitu chochote au kwa urefu ina?
Wao wanaenda kuwa karibu kufanana.
[Mwanafunzi] Muda.
Hebu angalia, marekebisho.
Sawa.
Unataka kueleza?
[Mwanafunzi] mimi tu kujenga nodi pointer na initialize kwa kwanza, ambayo ni variable wetu kimataifa,
na kisha mimi kuangalia kuona kama ni null hivyo mimi si kupata kosa seg na kurudi 0 kama kwamba ni kesi.
Vinginevyo, mimi kitanzi kupitia, kuweka wimbo wa ndani integer
mara ngapi nimekuwa accessed kipengele pili ya orodha
na katika operesheni hiyo increment pia kupata kwamba kipengele halisi,
na kisha mimi kuendelea kufanya hundi ya kuona kama ni null,
na kama ni null, basi aborts na anarudi tu idadi ya vipengele nimekuwa kupatikana.
>> [Rob B.] Je, mtu yeyote kuwa na maoni yoyote juu ya kitu chochote?
Hii inaonekana usahihi faini busara.
[Mwanafunzi] sidhani unahitaji nodi == null.
Yeah, hivyo kama nodi == null kurudi 0.
Lakini kama nodi == null basi hii-oh, kuna suala usahihi.
Ni mara tu wewe ni kurudi i, lakini siyo katika wigo hivi sasa.
Wewe tu haja int i, hivyo i = 0.
Lakini kama nodi ni null, basi i bado itakuwa 0,
na sisi ni kwenda na kurudi 0, hivyo kesi hii ni kufanana.
Jambo jingine ni ya kawaida kwa kuweka tangazo
ya nodi ndani ya kwa kitanzi.
Unaweza kusema-oh, hakuna.
Hebu kuitunza kama hii.
Mimi pengine ingekuwa kuweka int i = 0 hapa,
kisha nodi * nodi = kwanza katika hapa.
Na hii pengine ni jinsi-ya kuepuka kupata hii sasa.
Hii pengine ni jinsi mimi ingekuwa imeandikwa yake.
Unaweza pia-kuangalia ni kama hii.
Hii kwa muundo kitanzi haki hapa
wanapaswa kuwa karibu kama asili na wewe kama kwa int i = 0
i ni chini ya urefu wa safu i + +.
Kama kwamba ni jinsi gani wewe iterate juu ya safu, hii ni jinsi gani iterate juu ya orodha zinazoungwa.
>> Hii inapaswa kuwa asili ya pili wakati fulani.
Kwa kuwa katika akili, hii ni kwenda kuwa karibu kitu kimoja.
Utaenda kutaka iterate juu ya orodha zilizounganishwa.
Kama nodi-mimi sielewi nini thamani inaitwa.
Node i.
Kama thamani kwenye nodi kwamba = i kurudi kweli, na hiyo ni yake.
Ona kwamba njia pekee ya sisi milele kurudi uongo
ni kama sisi iterate juu ya orodha nzima wanaohusishwa na kamwe kurudi kweli,
hivyo kwamba ni nini hii gani.
Kama upande note-sisi pengine si kupata append au prepend.
>> Quick mwisho note.
Kama unaweza kuona Keyword tuli, hivyo hebu kusema tuli int kuhesabu = 0,
kisha sisi kufanya kuhesabu + +, unaweza kimsingi kufikiria kama variable kimataifa,
hata mimi tu alisema hii si jinsi sisi ni kwenda kutekeleza urefu.
Mimi nina kufanya hii hapa, na kisha kuhesabu + +.
Njia yoyote tunaweza kuingia ndani ya nodi orodha yetu zilizounganishwa sisi ni incrementing kuhesabu yetu.
hatua ya hii ni nini maana ya Keyword tuli.
Kama mimi tu alikuwa kuhesabu int = 0 kwamba itakuwa mara kwa mara zamani wa kimataifa kutofautiana.
Nini tuli int kuhesabu njia ni kwamba ni variable kimataifa kwa ajili ya faili hii.
Ni vigumu kwa baadhi ya faili nyingine,
kama kufikiria pset 5, kama wewe kuanza.
Kuwa wote speller.c, na una dictionary.c,
na kama wewe tu kutangaza kitu kimataifa, basi chochote katika speller.c
kulipata katika dictionary.c na kinyume chake.
Vigezo Global ni kupatikana kwa faili yoyote c.,
lakini vigezo tuli kupatikana tu kutoka ndani ya faili yenyewe,
hivyo ndani ya Spell kusahihisha au ndani ya dictionary.c,
hii ni aina ya jinsi napenda kutangaza variable yangu kwa ukubwa wa safu yangu
au ukubwa wa namba yangu ya maneno katika kamusi.
Tangu Sitaki kutangaza variable kimataifa kwamba yupo mtu kupata,
Mimi kwa kweli tu huduma ya juu ni kwa makusudi yangu mwenyewe.
>> Jambo nzuri kuhusu hili ni pia jina zima mgongano stuff.
Kama baadhi ya faili nyingine anajaribu kutumia variable kimataifa aitwaye kuhesabu, mambo kwenda sana, vibaya sana,
hivyo hii nicely anaendelea mambo salama, na tu unaweza kupata hiyo,
na hakuna mtu mwingine anaweza, na kama mtu mwingine anatangaza variable kimataifa aitwaye kuhesabu,
basi itakuwa si kuingilia kati na variable yako tuli kuitwa kuhesabu.
Hiyo ni nini tuli ni. Ni faili kimataifa kutofautiana.
>> Maswali juu ya kitu chochote?
Kuweka wote. Bye.
[CS50.TV]