Doug LLOYD: Id-dritt, hekk b'dan il-punt int
probabbilment pretty familjari ma arrays u listi marbuta
li hija l-kodiċi primarju strutturi tad-dejta Imxejna
tkellem dwar għaż-żamma settijiet ta ' data tat-tipi ta 'data simili organizzati.
>> Issa aħna qed tmur biex jitkellmu dwar koppja ta 'varjazzjonijiet
fuq arrays u listi marbuta.
F'dan il-video aħna qed tmur biex jitkellmu dwar stacks.
Speċifikament aħna qed tmur biex jitkellmu dwar struttura data tissejjaħ munzell.
Recall minn diskussjonijiet preċedenti dwar pointers u l-memorja,
li l-munzell huwa wkoll il- isem għal segment ta 'memorja
fejn statikament iddikjarat memorja memory-- li inti
isem, varjabbli li inti isem, et cetera u funzjoni frames li aħna wkoll
jeżistu frames munzell sejħa.
Allura din hija struttura ta 'data munzell mhux segment munzell ta 'memorja.
KOLLOX SEW.
>> Imma dak li hu munzell?
Allura huwa pretty ħafna biss tip speċjali ta 'struttura
li żżomm data b'mod organizzat.
U hemm żewġ ħafna modi komuni biex jiġu implimentati
stacks użu ta 'żewġ strutturi ta' dejta li aħna qed diġà familjari ma ',
arrays u listi marbuta.
Dak li jagħmel speċjali munzell huwa l- mod li bih nirregolaw jpoġġu informazzjoni
fil-munzell, u l-mod aħna tneħħi l-informazzjoni mill-munzell.
B'mod partikolari ma 'munzelli ir-regola hija biss l-aktar
reċentement element miżjud jista 'jitneħħa.
>> Allura taħseb dwarha bħala jekk huwa munzell.
Aħna piling informazzjoni fuq quċċata fih innifsu,
u biss il-ħaġa fil-quċċata tal-pile jista 'jitneħħa.
Aħna ma tistax tneħħi l-ħaġa minn taħt għaliex kollox se
kollass u jaqgħu fuq.
Allura aħna verament qed jibnu munzell li aħna mbagħad ikollhom biex jitneħħew mill-biċċa biċċa.
Minħabba dan aħna komunement jirreferu li munzell bħala struttura LIFO,
aħħar li l-ewwel out.
LIFO,-aħħar fl-ewwel li joħroġ.
>> Allura minħabba din ir-restrizzjoni fuq kif l-informazzjoni jistgħu jiġu miżjuda mal
u mneħħija minn munzell, hemm verament biss żewġ affarijiet li nistgħu nagħmlu ma 'munzell.
Nistgħu push, li hija l- tul nużaw biex jiżdiedu
element ġdid għall-quċċata tal- munzell, jew jekk il-munzell ma teżistix
u aħna qed jinħolqu mill-bidu, ħolqien tal-munzell fl-ewwel post
tkun imbuttar.
U mbagħad pop, dak l-tip ta 'CS tul nużaw biex tneħħi l-aktar reċentement
element miżjud mill-quċċata tal-munzell.
>> Allura aħna qed tmur biex tħares lejn kemm implimentazzjonijiet, kemm firxa ibbażati
u l-lista marbuta bbażati.
U aħna qed tmur biex tibda bil array bbażati.
Allura hawnhekk-idea bażika ta 'dak l-istruttura data Grupp ta 'arranġamenti bbażati
look like.
Għandna definizzjoni ttajpjata hawn.
Ġewwa ta 'li għandna żewġ membri jew oqsma ta 'l-istruttura.
Għandna firxa.
U għal darb'oħra jien jużaw l valur tip ta 'data arbitrarja.
>> Allura dan jista 'jkun kwalunkwe tip ta' data, char int jew xi data oħra
tip inti maħluqa qabel.
Allura aħna għandna firxa ta 'kapaċità daqs.
Kapaċità qed lira definit kostanti, forsi x'imkien ieħor fil-fajl tagħna.
Allura avviż diġà ma 'dan partikolari implimentazzjoni aħna jgħaqqad
ruħna bħala kien tipikament il-każ ma arrays,
li ma nistgħux dinamiku resize, fejn hemm ċertu numru ta
ta 'elementi massimu li nistgħu npoġġu fil-munzell tagħna.
F'dan il-każ huwa elementi kapaċità.
>> Aħna wkoll iżżomm kont ta ' il-quċċata tal-munzell.
X'inhu element huwa l-aktar miżjuda riċentament għall-munzell?
U hekk aħna jżommu rekord ta 'dak fil-varjabbli imsejħa top.
U dan kollu gets jitgeżwer flimkien f'tip data ġdida msejħa munzell.
U ladarba aħna qed maħluq dan it-tip ta 'dejta ġdid
nistgħu jittrattawha bħal kull tip ta 'data oħra.
Aħna tista 'tiddikjara munzell s, bħad stajna nagħmlu int x, y jew char.
U meta ngħidu munzell s, sew dak li jiġri
huwa irridu jiksbu sett ta ' memorja imwarrba għalina.
>> F'dan il-kapaċità każ Stajt apparentement iddeċidiet
huwa 10 għaliex stajt ltqajna varjabbli waħda tat-tip munzell
li jinkludi żewġ oqsma recall.
Firxa, f'dan il-każ huwa għaddej li tkun firxa ta 'numri interi
kif inhu l-każ fil-maġġoranza ta 'eżempji tiegħi.
U varjabbli ieħor integer kapaċi jaħżen il-quċċata,
l miżjud aktar reċentement element għall-munzell.
Allura wieħed munzell wieħed ta 'dak li aħna jistenna bħal dan biss definiti.
Huwa kaxxa li fiha firxa ta '10' dak
se jkunu interi f'dan il-każ u varjabbli ieħor numru sħiħ hemmhekk fl-aħdar
li jindika l-quċċata tal-munzell.
>> Li tiffissa l-quċċata tal- munzell aħna biss jgħidu s.top.
Thats kif aħna jkollhom aċċess għal qasam ta 'recall struttura.
s.top ugwali 0 effettiv ma dan li munzell tagħna.
Għalhekk għal darb'oħra għandna żewġ operazzjonijiet li nistgħu jwettaq issa.
Nistgħu push u nistgħu pop.
Nibdew bl push.
Għal darb'oħra, imbuttar qed iżżid ġdid element l-quċċata tal-munzell.
>> Allura dak li għandna bżonn tagħmel dan array implimentazzjoni bbażata?
Ukoll b'mod ġenerali l- funzjoni push qed jiġri
ħtieġa li taċċetta pointer li l-munzell.
Issa tieħu t-tieni u taħseb dwarha.
Għaliex kieku irridu li jaċċettaw a pointer għall-munzell?
Recall minn videos preċedenti dwar ambitu u pointers varjabbli,
x'jista 'jiġri jekk aħna biss mibgħuta munzell, i pjuttost fil bħala parametru?
What fil-fatt ikun mgħoddi fil hemmhekk?
Ftakar aħna qed joħolqu kopja meta aħna tgħaddiha għal funzjoni
sakemm nużaw pointers.
U hekk din il-funzjoni timbotta bżonnijiet li jaċċetta pointer għall-munzell
sabiex inkunu qed attwalment qed jinbidlu il-munzell għandna l-intenzjoni li jibdlu.
>> Il-buttuna ħaġa oħra probabbilment trid jaċċettaw huwa element data ta 'valur tip.
F'dan il-każ, għal darb'oħra, integer li aħna qed tmur biex iżżid l-quċċata tal-munzell.
Allura konna ltqajna żewġ parametri tagħna.
Liema huma aħna se issa do ġewwa tal push?
Well, sempliċiment, aħna qed biss ser iżżid li element l-quċċata tal-munzell
u mbagħad bidla fejn il-quċċata ta ' l-munzell hu, li s dot valur nett.
Allura dan huwa dak funzjoni dikjarazzjoni għal push
jista 'dehra fi implimentazzjoni bbażata fuq firxa.
>> Għal darb'oħra din mhix regola iebsa u veloċi li inti tista 'tbiddel dan u jkollu
it jvarjaw b'modi differenti.
Forsi s huwa ddikjarat globalment.
U għalhekk inti lanqas biss bżonn li jgħaddu huwa bħala parametru.
Dan huwa wkoll biss każ ġenerali għall push.
U hemm differenti modi biex jimplimentawha.
Iżda f'dan il-każ tagħna push se jieħu
żewġ argumenti, a pointer għal munzell u element tad-data ta 'valur tip, numru sħiħ
f'dan il-każ.
>> Allura aħna ddikjarat s, aħna qal s.top ugwali 0.
Issa ejja timbotta l- numru 28 fuq il-munzell.
Ukoll xi jfisser?
Ukoll bħalissa l- quċċata tal-munzell huwa ta '0.
U hekk x'hemm bażikament jiġri huwa
aħna qed tmur biex twaħħal l-għadd 28 fis lokazzjoni firxa 0.
Pretty sempliċi, id-dritt, li kien il-quċċata u issa aħna qed imorru tajjeb.
U allura għandna bżonn għall-bidla dak il-quċċata tal-munzell se jkun.
Sabiex il-ħin li jmiss aħna timbotta element,
aħna qed tmur biex jaħżnuh fil lokazzjoni firxa, probabbilment mhux 0.
Aħna ma rridux li jissostitwixxu dak li aħna biss jitqiegħed hemmhekk.
U hekk aħna ser biss jimxu fuq għal 1.
Li probabbilment jagħmel sens.
>> Issa jekk irridu li tqiegħed element ieħor fuq il-munzell, ngħidu aħna rridu li timbotta 33,
ukoll issa aħna qed biss ser jieħdu 33 u poġġih fil-numru post firxa
1, u mbagħad tibdel il-quċċata ta 'tagħna munzell li jkun array numru lokazzjoni tnejn.
Allura jekk il-ħin li jmiss irridu li timbotta element fuq il-munzell,
dan ser titpoġġa f'post firxa 2.
U ejja tagħmel dan wieħed aktar ħin.
Aħna ser push 19 off ta 'l-stacks.
Aħna ser jitqiegħdu 19 post array 2 u jibdlu l-quċċata tal-munzell tagħna
li jkun post array 3 hekk jekk l-ħin aħna li jmiss
għandek bżonn tagħmel spinta we qed imorru tajjeb.
>> OK, hekk li l-imbuttar fil-qosor.
Xi ngħidu dwar popping?
Allura popping huwa t-tip ta ' kontroparti għall imbuttar.
Huwa mod kif aħna tneħħi data mill-munzell.
U fil-bżonnijiet pop ġenerali biex jagħmlu dan li ġej.
Jeħtieġ li jaċċetta pointer għall- munzell, għal darb'oħra fil-każ ġenerali.
F'xi każ ieħor inti tista ' jkunu ddikjaraw il-munzell globalment,
f'liema każ inti m'għandekx bżonn li tgħaddiha fil minħabba li diġà għandhom aċċess għaliha
bħala varjabbli globali.
Imma mbagħad x'iktar do we bżonn tagħmel?
Well konna inkrementazzjoni il-quċċata tal-munzell fil timbotta,
hekk aħna qed probabbilment tmur jridu li decrement-quċċata tal-munzell
fil pop, id-dritt?
U allura ovvjament aħna wkoll qed tmur jridu
biex jirritorna l-valur li aħna jitneħħew.
Jekk aħna qed żżid elementi, irridu biex tikseb elementi out aktar tard,
aħna probabbilment fil-fatt tixtieq li taħżen lilhom hekk aħna
ma biss jħassruhom mid- munzell u mbagħad ma jsir xejn magħhom.
Ġeneralment jekk aħna qed imbuttar u popping hawn
aħna tixtieq li taħżen din informazzjoni b'mod li jagħmel sens
u għalhekk ma jagħmilx sens li biss armiha.
Allura din il-funzjoni għandhom probabbilment ritorn valur għalina.
>> Allura dan huwa dak dikjarazzjoni għal pop jista 'dehra hemm fil-quċċata xellug.
Din il-funzjoni prospetti data ta 'valur tip.
Għal darb'oħra aħna kont qed tuża interi kollu.
U taċċetta pointer għal munzell bħala argument ewlieni tagħha jew parametru uniku.
Allura x'inhu pop se jagħmlu?
Ejja ngħidu li rridu issa pop element off ta s.
Mela ftakar I qal li stacks huma l-aħħar -ewwel li joħroġ, LIFO strutturi ta 'dejta.
Li element se jitneħħa mill-munzell?
Ridt raden 19?
Għaliex inti d tkun dritt.
19 kienet l-aħħar element aħna miżjud mal- munzell meta konna imbuttar elementi,
u għalhekk li għaddej biex l-ewwel element li gets jitneħħew.
Huwa bħallikieku għidna 28, u allura aħna jitqiegħdu 33 fuq quċċata ta 'dan,
u nitfgħu 19 li fuq kollox.
L-uniku element li nistgħu nieħdu off huwa 19.
>> Issa fid-dijagramma hawn dak I ghamilt huwa tip ta 'mħassar 19 mill-firxa.
Li mhux attwalment dak li aħna qed tmur biex tagħmel.
Aħna biss ser tip ta nippretendu ma jkunx hemm.
Huwa għadu hemm fil f'dak il-post memorja,
imma aħna qed biss se jinjoraha billi jinbidel il-quċċata tal-munzell tagħna
milli 3-2.
Hekk jekk konna biex issa timbotta element ieħor fuq il-munzell,
ikun aktar minn jiktbu 19.
>> Imma ejja ma jgħaddu mill-inkwiet tad tħassir 19 mill-munzell.
Nistgħu biss nippretendu ma jkunx hemm.
Għall-finijiet ta 'l-munzell huwa marret jekk aħna jibdlu l-aqwa li jkun 2 minflok 3.
Kull dritt, hekk li kien pretty ħafna dan.
Li kollox għandna bżonn tagħmel pop element off.
Ejja nagħmlu dan mill-ġdid.
Hekk stajt enfasizzat li bl-aħmar hawn biex jindikaw li qed nagħmlu sejħa oħra.
Aħna qed tmur biex jagħmlu l-istess ħaġa.
>> Allura x'inhu jiġri?
Well, aħna qed tmur biex jaħżnu 33 x u aħna qed tmur
li jibdlu l-quċċata tal-munzell għal 1.
B'tali mod li jekk konna issa biex timbotta l element fil-munzell li aħna qed
se tagħmel id-dritt issa, x'inhu jiġri
huwa aħna qed tmur jissostitwixxu firxa numru lokazzjoni 1.
Allura li 33 li kien tip ta 'xellug wara li aħna biss preti
ma jkunx hemm aktar, aħna qed biss jmorru li clobber u poġġih 40 hemmhekk minflok.
U mbagħad naturalment, peress għamilna timbotta,
aħna qed tmur biex inkrement l quċċata tal-munzell 1-2
b'tali mod li jekk aħna issa żid element ieħor inneħħu
jmorru fil-firxa numru lokazzjoni tnejn.
>> Issa listi marbuta huma ieħor mod biex jimplimentaw stacks.
U jekk din id-definizzjoni fuq il- screen hawn jistenna familjari għalik,
huwa għaliex jidher kważi eżattament l-istess, fil-fatt,
li huwa pjuttost ħafna huwa eżattament l- istess lista marbuta waħdu,
jekk inti recall minn diskussjoni tagħna ta ' listi marbuta weħidhom fil-video ieħor.
Ir-restrizzjoni biss hawn hija għalina bħala programmaturi,
aħna mhux qed jitħallew daħħal jew tħassar saltwarjament
mil-lista marbuta weħidhom li nistgħu nagħmlu qabel.
Aħna biss issa tista 'tiddaħħal u ħassar minn quddiem jew ta 'fuq tal-marbutin
lista.
Dik hija verament l-uniku differenza għalkemm.
Dan huwa b'mod ieħor lista marbuta weħidhom.
Huwa biss ir-restrizzjoni li tissostitwixxi fuq nfusna
kif programmaturi li bidliet fis munzell.
>> Ir-regola hawnhekk huwa li dejjem iżommu pointer lill-kap ta 'lista marbuta.
Dan huwa naturalment ġeneralment regola importanti l-ewwel.
Għal weħidhom lista marbuta xorta inti jeħtieġu biss pointer lill-kap
sabiex ikollhom dik katina ikunu jistgħu jirreferu
għal kull element ieħor fil-lista marbuta.
Imma hija partikolarment importanti ma 'munzell.
U hekk ġeneralment int tmur fil-fatt tixtieq
dan il-werrej li jkun fattur varjabbli globali.
Huwa probabbilment se jkun saħansitra aktar faċli li mod.
Allura x'inhuma l-analogi ta 'push u pop?
Dritt.
Għalhekk għal darb'oħra imbuttar qed iżżid element ġdid għall-munzell.
F'lista marbut li ifisser li aħna qed tmur biex ikollhom
biex jinħoloq node ġdid li aħna qed ser iżżid fil-lista marbuta,
u mbagħad segwi l-passi bir-reqqa li konna imsemmija qabel
fil-listi marbuta weħidhom li jżidu mal il-katina mingħajr ma jitkissru l-katina
u jitilfu jew orphaning kwalunkwe elementi tal-lista marbuta.
U dan huwa bażikament dak li ftit blob tat-test hemm fil-qosor.
U ejja tagħti ħarsa lejn din bħala dijagramma.
>> Allura hawnhekk lista marbuta tagħna.
Hija fl-istess ħin fiha erba 'elementi.
U aktar perfettament hawnhekk tagħna munzell li jkun fih erba 'elementi.
U ejja ngħidu aħna issa jridu timbotta punt ġdid fuq dan munzell.
U rridu li timbotta ġdida oġġett li l-valur tad-data huwa 12.
Well dak li aħna se jagħmlu?
Ukoll l-ewwel aħna qed tmur biex ispazju malloc, dinamiku
jalloka territorju għal node ġdid.
U ovvjament immedjatament wara nagħmlu sejħa biex malloc aħna dejjem
kun żgur li tivverifika għall null, għaliex jekk sirna null lura
kien hemm xi tip ta 'problema.
Aħna ma rridux li dereference li null pointer jew inti se jsofru tort seg.
Li mhux tajjeb.
Allura konna malloced tal-node.
Aħna ser tassumi aħna kellna suċċess hawn.
Aħna qed tmur biex tqiegħed fis-12 ta ' qasam tad-data ta 'dik node.
Issa inti recall liema mill pointers tagħna jiċċaqlaq jmiss hekk aħna ma jqassmux il-katina?
Għandna koppja ta 'għażliet hawn imma l-unika waħda li għaddej biex tkun bla periklu
huwa li jiġu stabbiliti aħbarijiet jmiss pointer li jindikaw il-kap antika tal-lista
jew dak dalwaqt se tkun l- kap antika tal-lista.
U issa li kollha ta 'tagħna elementi huma b'katina flimkien,
nistgħu biss jiċċaqalqu lista għall-punt għall-istess post li ma ġdid.
U aħna għandna issa effettivament imbuttat a element ġdid fuq il-faċċata tal-munzell.
>> Pop aħna biss jixtiequ li tħassar dik l-ewwel element.
U hekk bażikament dak għandna nagħmlu hawnhekk,
ukoll għandna biex isibu t-tieni element.
Eventwalment li se ssir il-ġdid ras wara we tħassar l-ewwel waħda.
Allura aħna biss jeħtieġ li tibda minn il-bidu, timxi 'l quddiem wieħed.
Ladarba aħna ħadthom ltqajna istiva fuq waħda quddiem ta 'fejn aħna bħalissa
aħna tista 'tħassar l-ewwel wieħed sikur u allura nistgħu biss jiċċaqalqu il-kap
għall-punt li dak li kien il- tieni terminu u mbagħad issa
hija l-ewwel wara li node ġie mħassar.
>> Għalhekk għal darb'oħra, tieħu ħarsa lejn din bħala dijagramma aħna
tixtieq li issa pop xi element off ta 'dan munzell.
Allura dak li nagħmlu?
Well we qed l-ewwel se toħloq a pointer ġdid li għaddej
għall-punt li l-istess post bħall-ras.
Aħna qed tmur biex jġorrhom pożizzjoni waħda quddiem billi qal ugwali trav
TRAV jmiss per eżempju, li tavvanza l-waħda trav pointer
pożizzjoni bil-quddiem.
Issa li aħna ħadthom ltqajna iżommu fuq l-ewwel element
permezz tal-pointer imsejħa lista, u l tieni element permezz ta 'pointer imsejjaħ
trav, nistgħu sikur tħassar dan ewwel element mill-munzell
mingħajr ma jitilfu l-bqija tal-katina għaliex aħna
jkollhom mod biex jirreferi għat-tieni element
jibagħtu permezz ta 'l- pointer imsejħa trav.
>> Allura issa nistgħu ħielsa li node.
Aħna jista 'b'xejn lista.
U allura kollha għandna bżonn tagħmel issa huwa iċaqlaq il-lista li jindikaw il-istess post
li trav ma, u aħna qed tip ta 'lura fejn bdejna qabel we imbuttat 12
fuq fl-ewwel lok, id-dritt.
Dan huwa eżattament fejn konna.
Kellna dan munzell erba element.
Aħna miżjud il-ħames.
Aħna imbuttat minn ħamsa element fuq, u allura aħna
popped li aktar reċentement element miżjud lura off.
>> Li tassew pretty ħafna kollha hemm stacks.
Inti tista jimplimentawhom bħala arrays.
Inti tista jimplimentawhom bħala listi marbuta.
Hemm huma, naturalment, oħrajn modi biex jimplimentawhom kif ukoll.
Bażikament ir-raġuni aħna se jużaw stacks huwa li jżommu d-data b'tali mod
li l-aktar reċentement miżjud element huwa l-ewwel ħaġa li għandna qed
tmur jridu jiksbu lura.
Jien Doug Lloyd, dan huwa CS50.