[Powered by Google Translate] [It-Taqsima 6: Inqas Komdu] [Nate Hardison] [Università ta 'Harvard] [Dan huwa CS50.] [CS50.TV] Kull dritt. Merħba għas-sezzjoni 6. Din il-ġimgħa, aħna qed tmur biex tkun jitkellem dwar strutturi ta 'dejta fis-sezzjoni, primarjament minħabba problema din il-ġimgħa stabbilit fuq spellr ma mazz sħiħ ta 'l-esplorazzjoni struttura differenti tad-data. Hemm mazz ta 'modi differenti inti tista' tmur mas-sett problema, u l-istrutturi tad-data aktar inti taf dwar, l-affarijiet aktar jibred inti tista 'tagħmel. Mela ejja tibda. L-ewwel aħna qed tmur biex jitkellmu dwar stacks, l-istrutturi tad-data munzell u kju li aħna qed tmur biex jitkellmu dwar. Stacks u kjuwijiet huma verament utli meta nibdew nitkellmu dwar graphs, li aħna ma tkunx qed tmur biex tagħmel dan ħafna tad-dritt issa. Imma dawn qed verament tajba biex jifhmu waħda mill-istrutturi kbar ta 'data fundamentali tal KEFA. Id-deskrizzjoni fl-ispeċifikazzjoni sett problema, jekk inti pull it up, taħdidiet dwar stacks bħala simili għal il-munzell ta 'dixxijiet dining li għandek fil-kafetterija fil-swali dining fejn meta l-personal dining jidħol u tpoġġi l-trejs dining out wara li ħadthom mnaddfa minnhom, dawn munzell minnhom waħda fuq l-oħra. U mbagħad meta gidjien jaslu biex tikseb l-ikel, jiġbdu l-trejs off, l-ewwel l-aqwa waħda, allura l-waħda taħtu, allura l-waħda taħt dak. Għalhekk, fil-fatt, il-trej ewwel li l-persunal dining stabbilixxit hija l-aħħar wieħed li gets meħuda off. L-aħħar wieħed li l-persunal dining tpoġġi fuq hija l-ewwel waħda li gets jittieħdu barra għall-pranzu. Fil spec-sett problema, li tista 'tniżżel jekk inti ma jkunux diġà, nitkellmu dwar immudellar a stucture data munzell jużaw dan it-tip ta Struct. Allura dak li konna ltqajna hawn, dan huwa simili għal dak li ġie ppreżentat fl-lecture, ħlief fil lecture aħna ppreżentat dan ma ints għall-kuntrarju * i char. Din se tkun munzell li taħżen liema? Daniel? Liema huma aħna jaħżnu f'dan munzell? [Daniel] Strings? >> Aħna qed jaħżnu kordi f'dan munzell, eżattament. Kulma għandek bżonn li jkollhom biex jinħoloq munzell huwa firxa ta 'kapaċità partikolari, li f'dan il-każ, kapaċità se tkun fil-limiti għaliex dan huwa kostanti. U allura b'żieda ma 'l-array, kollha għandna bżonn sabiex jittraċċjaw huwa d-daqs attwali ta' l-array. Ħaġa waħda li wieħed jinnota hawnhekk li l-tip ta 'kessaħ hija li aħna qed joħolqu l-istruttura tad-data f'munzelli fuq quċċata ta 'xulxin istruttura tad-data, l-array. Hemm modi differenti biex jimplimentaw stacks. Aħna mhux se tagħmel dan pjuttost s'issa, iżda nisperaw wara li tagħmel il-problemi marbuta ma 'lista, tkun taf tara kif tista 'faċilment jimplimentaw munzell fuq quċċata ta' lista marbuta kif ukoll. Iżda għal issa, aħna ser jeħel mal-arrays. Għalhekk għal darb'oħra, kollha għandna bżonn huwa firxa u aħna biss jeħtieġ li jsegwu l-daqs tal-array. [Sam] Jiddispjacini, għaliex hi li inti qal li l-munzell hu fuq quċċata tal-kordi? Lili jidher li huwa simili l-irbit huma fi ħdan il-munzell. [Hardison] Yeah. Aħna qed jinħolqu, aħna qed tieħu firxa data tagħna istruttura - li l-kwistjoni kbira. Għalhekk il-kwistjoni hija għaliex, għall-persuni li huma jaraw dan online, għaliex aħna ngħidu li l-munzell huwa fuq quċċata tal-kordi, għaliex hawn jidher qisu l-irbit huma ġewwa l-munzell? Liema hija totalment il-każ. What I kien qed jirreferi għal kienet li konna ltqajna struttura tad-data firxa. Imxejna ltqajna firxa ta 'char * i, dan il-firxa ta' spag, u aħna ser iżidu ma 'din sabiex jinħolqu l-istruttura tad-data f'munzelli. Allura munzell hija ftit aktar kumplessi minn firxa. Nistgħu nużaw firxa biex jibnu munzell. Allura dak fejn aħna ngħidu li l-munzell hija mibnija fuq quċċata ta 'firxa. Bl-istess mod, bħal għidt qabel, nistgħu nibnu munzell fuq quċċata tal-lista marbuta. Minflok tuża l-firxa li jżommu elementi tagħna, aħna jistgħu jużaw lista marbuta li żżomm l-elementi tagħna u jibni l-munzell madwar dik. Ejja jimxu permezz ta 'koppja ta' eżempji, tħares lejn xi kodiċi, biex tara x'inhu verament jiġri hawn. Fuq ix-xellug, stajt jintefa fl dak li Struct munzell look like fil-memorja jekk il-kapaċità ġew # definit bħala 4. Imxejna ltqajna erba 'element firxa tagħna * char. Imxejna ltqajna kordi [0], kordi [1], kordi [2], kordi [3], u mbagħad li l-ispazju għall-aħħar numru sħiħ daqs tagħna. Ma dan jagħmel sens? Okay. Dan huwa dak li jiġri jekk dak I do fuq il-lemin, li se tkun il-kodiċi tiegħi, huwa biss tiddikjara Struct, a Struct f'munzelli imsejjaħ i. Dan huwa dak li nagħmlu. Hija tistabbilixxi dan footprint fil-memorja. L-ewwel domanda hawnhekk huwa dak li huma l-kontenut ta 'dan Struct munzell? Dritt issa dawn qed xejn, iżda dawn mhux qed totalment xejn. Huma qed dan it-tip ta 'żibel. Għandna l-ebda idea x'inhu fihom. Meta aħna tiddikjara s munzell, aħna qed biss jitfg li stabbiliti fuq quċċata ta 'memorja. Huwa tip ta 'prodotti simili li tiddikjara i int u mhux initializing dan. Ma tafx x'hemm fil hemmhekk. Tista 'taqra x'hemm fil hemm, iżda jista 'ma jkunx super utli. Ħaġa waħda inti tixtieq li dejjem tiftakar li għandek tagħmel hu initialize kull teħtieġ li tiġi initialized. F'dan il-każ, aħna qed tmur biex initialize-daqs li tkun żero, minħabba li għaddej biex tirriżulta li tkun importanti ħafna għalina. Aħna tista 'tmur quddiem u initialize kollha tal-indikaturi, l-i * char, li jkun hemm xi valur li tinftiehem, probabbilment null. Imma din mhix totalment meħtieġ li nagħmlu dan. Issa, iż-żewġ operazzjonijiet prinċipali fuq stacks huma? Kulmin ftakar minn taħdita dak li tagħmel ma 'munzelli? Iva? [Stella] mbuttar u popping? >> Eżattament. Mbuttar u popping huma l-żewġ operazzjonijiet ewlenin fuq stacks. U dak do push ma? >> Huwa jpoġġi xi ħaġa fuq il-quċċata tal-munzell, u mbagħad jieħu popping off. [Hardison] Eżattament. Allura imbuttar pushes xi ħaġa fuq quċċata tal-munzell. Huwa bħall-persunal dining tqegħid trej dining stabbiliti fuq il-counter. U popping qed jieħu trej dining off tal-munzell. Ejja jimxu permezz ta 'koppja ta' eżempji ta 'dak li jiġri meta aħna timbotta l-affarijiet fil-munzell. Jekk konna biex timbotta l-sekwenza "bonjour" fuq munzell tagħna, dan huwa dak dijagramma tagħna look like issa. Ara x'jiġri? Aħna imbuttat fis-ewwel element ta 'firxa spag tagħna u aħna upped għadd daqs tagħna li tkun l-1. Mela jekk inħarsu lejn id-differenza bejn l-pjastri 2, hawn kien 0, hawnhekk qabel l-buttuna. Hawn hu wara l-buttuna. Qabel il-buttuna, wara l-buttuna. U issa għandna element wieħed fil-munzell tagħna. Hu l-sekwenza "hello", u li hu. Kollox fil-firxa, fl-array kordi tagħna, għadu żibel. Aħna ma initialized dan. Ejja ngħidu aħna timbotta ieħor spaga fuq munzell tagħna. Aħna ser push "dinja" fuq dan iż-żmien. Allura tista 'tara "dinja" hawnhekk tmur fuq quċċata ta' "hello", u l-għadd daqs tmur sa 2. Issa nistgħu push "CS50", u li ser imorru fuq nett mill-ġdid. Jekk immorru lura, tista 'tara kif aħna qed timbotta l-affarijiet fuq quċċata tal-munzell. U issa aħna nikseb li pop. Meta aħna popped xi ħaġa off tal-munzell, x'ġara? Kulħadd tara d-differenza? Huwa pjuttost sottili. [Student] Id-daqs. >> Yeah, id-daqs mibdula. X'iktar inti mistenni għall-bidla? [Student] Il-kordi, wisq. >> Dritt. Il-kordi wisq. Jirriżulta li meta int tagħmel dan il-mod, għaliex aħna mhux qed ikkupjar l-elementi fil-munzell tagħna, għandna attwalment ma jkollhom jagħmlu xi ħaġa; nistgħu biss jużaw id-daqs li jżommu rekord tan-numru ta 'affarijiet fil-firxa tagħna b'tali mod li meta aħna pop darb'oħra, għal darb'oħra aħna biss decrement daqs tagħna sa 1. M'hemm l-ebda ħtieġa li fil-fatt imorru fi u jissostitwixxu xejn. Tip ta 'funky. Jirriżulta li aħna tipikament biss leave affarijiet waħdu, għaliex dan huwa xogħol inqas għalina li jagħmlu. Jekk aħna ma jkollhom imorru lura u jissostitwixxu xi ħaġa, allura għaliex jagħmlu dan? Allura meta aħna pop darbtejn off tal-munzell, dak kollu li ma huwa decrement-daqs koppja ta 'drabi. U għal darb'oħra, dan huwa biss għaliex aħna mhux qed ikkupjar affarijiet in munzell tagħna. Iva? Jimxi 'l quddiem. [Student, mhux intelliġibbli] >> U allura x'jiġri meta timbotta xi ħaġa mill-ġdid? Meta inti timbotta xi ħaġa mill-ġdid, fejn ma tmur? Fejn ma tmur, Basil? >> Into kordi [1]? >> Dritt. Għaliex ma tmur fis kordi [3]? [Basile] Minħabba li nesa li kien hemm xi ħaġa fil-kordi [1] u [2]? [Hardison] Eżattament. Munzell tagħna, essenzjalment, "nesa" li kien azjenda fuq xejn f'qatet [1] jew kordi [2], hekk meta aħna push "woot", hija biss tpoġġi dan in-element fil-kordi [1]. Hemm xi mistoqsijiet dwar kif taħdem din, fil-livell bażiku? [Sam] Għalhekk dan mhux dinamiku bl-ebda mod, f'termini ta 'ammont jew f'termini tad-daqs tal-munzell? [Hardison] Eżattament. Dan huwa - il-punt kien li dan ma kienx munzell dinamiku growning. Dan huwa munzell li tista 'żżomm, l-aktar, 4 * char i, l-aktar erba affarijiet. Jekk konna li tipprova u imbotta ħaġa 5, liema taħseb li għandu jiġri? [Studenti, mhux intelliġibbli] [Hardison] Eżattament. Hemm numru ta 'affarijiet li jista' jiġri. Dan jista 'possibbilment seg tort, jiddependi fuq dak li aħna kienu - kif eżattament konna implimentazzjoni tal-back-end. Dan jista 'jissostitwixxu. Dan jista 'jkun li overflow buffer li tkellimna dwar fil-klassi. Liema jkun l-aktar ħaġa ovvja li tista jinkitbu fuqhom jekk aħna ppruvaw biex timbotta ħaġa żejda fuq munzell tagħna? Allura inti semmiet overflow buffer. Liema jista 'jkun l-unika ħaġa li se tikseb bil-miktub fuq jew stomped fuq jekk irridu fawrien aċċidentalment billi tipprova timbotta ħaġa żejda? [Daniel, mhux intelliġibbli] possibbli. >> Imma inizjalment, x'jista 'jiġri? X'jiġri jekk aħna ppruvaw biex timbotta xi ħaġa 4? Jista jissostitwixxu d-daqs, mill-inqas ma 'din id-dijagramma memorja li konna ltqajna. Fl-ispeċifikazzjoni sett problema, li huwa dak li aħna qed tmur biex jiġu implimentazzjoni llum, dak li rridu nagħmlu tagħmel huwa biss ritorn foloz. Metodu push tagħna se terġa 'lura għal valur Boolean, u li l-valur Boolean se jkun veru jekk il-buttuna jirnexxilu u falz jekk ma nkunux nistgħu imbotta xejn aktar minħabba li l-munzell hija sħiħa. Ejja jimxu permezz ta 'ftit ta' dak il-kodiċi id-dritt issa. Hawn funzjoni push tagħna. Push-funzjoni tagħna għal munzell se jieħdu fil-sekwenza li jitpoġġew fuq il-munzell. Huwa ser jirritorna veru jekk l-sekwenza kienet b'suċċess imbuttat fuq il-mod ieħor munzell u falza. Xi suġġerimenti dwar dak li jista 'jkun ewwel ħaġa tajba li tagħmel hawn? [Sam] Jekk id-daqs ugwali kapaċità mbagħad jirritornaw falza? [Hardison] Bingo. Nizza xogħol. Jekk id-daqs huwa l-kapaċità, aħna qed tmur biex jirritornaw falza. Aħna ma tista 'tpoġġi xejn aktar munzell tagħna. Inkella, irridu li xi ħaġa fuq il-quċċata tal-munzell. X'inhi "l-quċċata tal-munzell," inizjalment? [Daniel] Daqs 0? >> Daqs 0. X'inhu l-quċċata tal-munzell wara hemm ħaġa waħda fil-ċmieni? Missy, do you know? [Missy] Wieħed. Daqs >> hija waħda, eżattament. Inti ikompli jżid id-daqs, u kull darba int tqegħid fis-element ġdid lejn id-daqs indiċi fil-firxa. Nistgħu nagħmlu dan ma 'dak it-tip ta' one-liner, jekk dan jagħmel sens. Allura konna ltqajna kordi firxa tagħna, aħna qed tmur li jkollhom aċċess għaliha fil-indiċi daqs, u aħna qed biss jmorru taħżen * char tagħna fil hemmhekk. Avviż kif theres ebda ikkupjar string għaddejjin fil hawn, ebda allokazzjoni dinamika tal-memorja? U mbagħad Missy aġġornati dak li aħna issa għandhom jagħmlu, għaliex aħna ve maħżuna l-sekwenza fil-post xieraq fil-firxa, u qalet li kellna biex inkrement-daqs minn hekk li aħna lesti għall-buttuna li jmiss. Allura nistgħu nagħmlu dan bl s.size + +. Fuq dan il-punt, aħna ve imbuttat fis firxa tagħna. X'hemm l-aħħar ħaġa li għandna nagħmlu? [Student] Ritorn veru. >> Ritorn veru. Allura huwa pjuttost sempliċi, kodiċi pjuttost sempliċi. Mhux wisq. Ladarba inti ħadthom imgeżwer ras tiegħek madwar kif l-munzell xogħlijiet, dan huwa pjuttost sempliċi biex wieħed jimplimentah. Issa, il-parti li jmiss ta 'dan huwa popping sensiela off tal-munzell. Jien ser tagħti inti guys xi żmien biex jaħdmu fuq din id-daqsxejn ftit. Huwa kważi essenzjalment l-treġġiegħ lura ta 'dak li aħna ghamilt hawn fil push. What I ghamilt huwa attwalment - oops. Stajt Booted up apparat hawn fuq, u fl-appliance, Stajt jinġibed up-problema stabbilita 5 ispeċifikazzjoni. Jekk aħna zoom fil hawn, nistgħu naraw jien fil cdn.cs50.net/2012/fall/psets/pset5.pdf. Have you guys jitniżżel f'dan il-kodiċi li jinsab hawn, section6.zip? Kull dritt. Jekk int ma jsir dan, tagħmel dan id-dritt issa, verament malajr. I ser jagħmlu dan fil-tieqa terminal tiegħi. I attwalment ma kien up here. Yeah. Iva, Sam? >> Għandi mistoqsija dwar għaliex ma inti tgħid parentesi s.string "i ta 'daqs = str? X'inhu str? Huwa dak definit x'imkien qabel, jew - oh, fil-str * char? [Hardison] Iva, eżattament. Dan kien l-argument. >> Oh, okay. Jiddispjacini. [Hardison] Aħna qed tispeċifika l-sekwenza biex timbotta pulzieri Il-kwistjoni oħra li tista 'toħroġ li aħna ma verament jitkellmu dwar hawn kien aħna ħa għall mogħtija li kellna dan il-varjabbli imsejħa s li kien fl-ambitu u aċċessibbli għalina. Aħna ħa għall mogħtija li s kienet din Struct munzell. Allura tħares lura lejn dan il-kodiċi timbotta, tista 'tara li aħna qed tagħmel Jittieħed ma' din is-sekwenza li ltqajna għadda fl- iżda mbagħad kollha f'daqqa, aħna qed aċċess s.size, bħal, fejn ma i ġejjin minn? Fil-kodiċi li aħna qed tmur biex tħares lejn fl-arkivju taqsima u allura l-għalf li inti ser tkun qed tagħmel fil-problema tiegħek settijiet, ħadna munzell tagħna Struct varjabbli globali sabiex inkunu nistgħu jkollhom aċċess għaliha fil-funzjonijiet differenti tagħna mingħajr ma jkollhom manwalment tgħaddiha madwar u tgħaddih b'referenza, jagħmlu dak kollu li tip ta 'għalf lilu. Aħna biss qerq ftit, jekk inti se, biex tagħmel affarijiet nicer. U li xi ħaġa li aħna qed tagħmel hawn, għaliex dan huwa għall-gost, huwa aktar faċli. Spiss, tkun taf tara nies jagħmlu dan jekk ikollhom waħda kbira struttura tad-data li l-jiġu operata fi żmien il-programm tagħhom. Ejja ħa mmorru lura fuq l-appliance. Did kulħadd b'suċċess tikseb l-section6.zip? Kulħadd unzip billi tuża section6.zip unzip? Jekk inti tmur fis-sezzjoni 6 direttorju - aah, kollha fuq il-post - u inti lista x'hemm fil hawn, tara li inti ħadthom ltqajna tliet differenti. fajls c. You ħadthom ltqajna kju, l sll, li huwa wieħed wieħed marbut mal-lista, u munzell. Jekk inti tiftaħ stack.c, tista 'tara li konna ltqajna dan Struct definit għalina, il Struct eżatt li aħna biss tkellem dwar fl-pjastri. Imxejna ltqajna varjabbli globali tagħna għall-munzell, konna ltqajna funzjoni timbotta tagħna, u allura konna ltqajna funzjoni pop tagħna. I ser tpoġġi l-kodiċi għall push back up fuq il-pjastra hawn, imma dak nixtieq inti guys tagħmel huwa, għall-aħjar ħila tiegħek, mur u jimplimentaw il-funzjoni pop. Ladarba inti ħadthom implimentati dan, inti tista 'tiġbor din ma tagħmel munzell, u mbagħad għaddi l-eżekutibbli munzell riżultanti, u li se jimxu kollha ta 'dan il-kodiċi tat-test stabbiliti hawn li fil prinċipali. U prinċipali jieħu ħsieb ta 'attwallment tagħmel il-buttuna u pop sejħiet u l-iżgurar li kollox imur permezz ta 'kull dritt. Hija wkoll initializes l-daqs munzell dritt hawn sabiex inti ma għandekx għalfejn tinkwieta dwar initializing dan. Inti jista 'jassumi li huwa kien suppost initialized mill-ħin li inti jkollhom aċċess għaliha fil-funzjoni pop. Does li jagħmel sens? Allura here we go. Hemm il-kodiċi push. I ser jagħtuk guys 5 jew 10 minuti. U jekk għandek xi mistoqsijiet fil-interim waqt li int kodifikazzjoni, jekk jogħġbok staqsi lilhom out loud. Mela jekk ikollok għal punt ta 'twaħħil, staqsi. Let me know, let kulħadd jaf. Xogħol mal-proxxmu tiegħek wisq. [Daniel] Aħna biss timplimenta pop dritt issa? >> Just pop. Għalkemm inti tista 'kopja l-implimentazzjoni ta' push jekk tixtieq hekk li l-ittestjar se taħdem. Għaliex huwa diffiċli li jittestjaw l-affarijiet jkollna fis - jew, huwa diffiċli biex tiġi ttestjata l-affarijiet popping barra ta 'ċumnija, jekk ma jkunx hemm xi ħaġa fil-munzell li tibda bil. X'inhu pop suppost li jirritornaw? L-element mill-quċċata tal-munzell. Huwa mistenni li tikseb l-element off tal-quċċata tal-munzell u mbagħad decrement-daqs tal-munzell, u issa inti tilfu l-element fuq il-quċċata. U allura inti tirritorna l-element fuq il-quċċata. [Student, mhux intelliġibbli] [Hardison] Allura x'jiġri jekk inti tagħmel dan? [Student, mhux intelliġibbli] X'inhu jispiċċa jiġri huwa up int probabilment aċċess jew element li ma ġiex initialized għadhom, hekk kalkolu tiegħek ta 'fejn l-aħħar element huwa huwa off. Allura hawn, jekk tinnota, fl timbotta, aħna qed aċċess kordi fl-element s.size għaliex dan huwa indiċi ġdid. Hu l-quċċata ġdida tal-munzell. Billi pop, s.size se tkun l-ispazju li jmiss, l-ispazju li fuq quċċata ta 'l-elementi kollha fil-munzell tiegħek. Allura l-element minn fuq għal aktar mhuwiex s.size, iżda, huwa taħt dan. Il-ħaġa oħra li tagħmel meta inti - fl pop, huwa inti għandek decrement-daqs. Jekk tiftakar lura għall-dijagramma tagħna ftit dritt hawn, verament, l-unika ħaġa li aħna raw jiġri meta aħna imsejjaħ pop kienet li dan id-daqs niżel, l-ewwel sat-2, imbagħad għal 1. Imbagħad meta aħna imbuttat element ġdid fuq, dan imur fuq fil-post xieraq. [Basil] Jekk il-s.size huwa 2, allura ma kienx ikun mur element 2, u mbagħad youd tixtieq li pop dan l-element off? Allura jekk aħna marru għall - >> Mela ejja nħarsu lejn din darb'oħra. Jekk dan huwa munzell tagħna f'dan il-punt u nitolbu pop, fejn indiċi huwa l-element top-aktar? [Basile] Fl 2, iżda li għaddej biex pop 3. >> Dritt. Allura dak fejn id-daqs tagħna huwa ta '3, imma irridu li pop l-element fil-indiċi 2. Huwa dan it-tip tipiku ta 'off minn waħda li għandek ma' l-zero-indiċjar tal arrays. Allura inti tixtieq li pop-tielet element, iżda l-tielet element mhuwiex indiċi 3. U r-raġuni aħna ma jkollhomx biex tagħmel dan 1 nieqes meta aħna qed timbotta huwa minħabba dritt issa, tinnota li l-element top-aktar, jekk konna biex timbotta xi ħaġa oħra fuq il-munzell f'dan il-punt, aħna rridu li timbotta lilha fil indiċi 3. U huwa biss hekk jiġri li d-daqs u l-indiċi line up meta int timbotta. Min ltqajna implimentazzjoni munzell xogħol? You ħadthom ltqajna munzell ħidma waħda. Għandek pop taħdem għadhom? [Daniel] Iva. I think so. Programm >> s tmexxija u mhux seg faulting, huwa istampar? Ma print out "suċċess" meta inti run? Yeah. Għamla munzell, run, jekk tistampa "suċċess" u ma tmurx boma, allura kollha tajjeb. Kull dritt. Ejja jmorru fuq l-appliance verament malajr, u aħna ser jimxu permezz ta 'dan. Jekk inħarsu lejn x'inhu għaddej hawn ma pop, Daniel, dak li kien l-ewwel ħaġa li għamilt? [Daniel] Jekk s.size huwa akbar minn 0. [Hardison] Okay. U għaliex ma inti tagħmel dan? [Daniel] Biex ikun żgurat li kien hemm xi ħaġa ġewwa l-munzell. [Hardison] Dritt. Inti tixtieq li jittestjaw biex tiżgura li s.size huwa akbar minn 0; mod ieħor, dak li tridu li jiġri? [Daniel] null Ritorn? Null Ritorn >>, eżattament. Mela jekk s.size huwa akbar minn 0. Imbagħad dak li aħna se jagħmlu? What do we do jekk il-munzell ma tkunx vojta? [Stella] Inti decrement-daqs? >> Inti decrement-daqs, okay. Allura kif ma inti tagħmel dan? >> S.size--. [Hardison] Gran. U allura dak li ma tagħmel? [Stella] U mbagħad I qal ritorn s.string [s.size]. [Hardison] Gran. Inkella inti tirritorna null. Iva, Sam? [Sam] Għaliex ma jkunx jeħtieġ li jiġu s.size + 1? [Hardison] Plus 1? >> Yeah. >> Ghandek dan. [Sam] Ħsibt għaliex inti qed tieħu 1 minn, allura int ser jirritorna jkunx il-wieħed li huma talbu. [Hardison] U dan kien biss dak li konna nitkellmu dwar din il-kwistjoni kollha ta '0 indiċijiet. Allura jekk aħna zoom lura hawn fuq. Jekk inħarsu lejn dan Guy dritt hawn, tista 'tara li meta aħna pop, aħna qed popping l-element fil-indiċi 2. Allura aħna naqqas id-daqs tagħna l-ewwel, imbagħad id-daqs tagħna logħbiet indiċi tagħna. Jekk aħna ma decrement-daqs ewwel, imbagħad għandna nagħmlu daqs -1 u mbagħad decrement. Great. Kollha tajba? Kwalunkwe mistoqsijiet dwar dan? Hemm numru ta 'modi differenti biex tikteb dan ukoll. Fil-fatt, nistgħu nagħmlu xi ħaġa anke - nistgħu nagħmlu one-liner. Nistgħu nagħmlu ritorn one-linja. Allura nistgħu ngħidu decrement qabel nerġgħu lura billi tagħmel dan. Allura tqegħid tal-- qabel il s.size. Li jagħmel il-linja verament dens. Fejn id-differenza bejn il -. I daqs u s.size-- hija li din postfix - huma jitolbu dan postfix minħabba li l-- jiġi wara l-s.size-- ifisser li s.size hija evalwata għall-finijiet tal-konstatazzjoni tal-indiċi kif huwa bħalissa meta din il-linja hija esegwita, u mbagħad dan - jiġri wara l-linja gets esegwiti. Wara l-element fil s.size indiċi huwa aċċessibbli. U li mhux dak li rridu, għaliex irridu li l-decrement li jiġri l-ewwel. Othewise, aħna qed tmur biex tkun aċċess għall-firxa, effettivament, barra mill-limiti. Aħna qed tmur biex tkun aċċess għall-element ta 'hawn fuq il-wieħed li aħna verament tixtieq li l-aċċess. Yeah, Sam? >> Huwa aktar mgħaġġla jew l-użu RAM inqas li jagħmlu f'linja waħda jew le? [Hardison] Onestament, huwa verament jiddependi. [Sam, mhux intelliġibbli] >> Yeah, dan jiddependi. Tista 'tagħmel tricks kompilatur biex jiksbu l-kumpilatur li jiġi rikonoxxut li, normalment, Nimmaġina. Allura aħna stajt msemmija ftit dwar dan il-għalf ottimizzazzjoni kumpilatur li inti tista 'tagħmel fil-kompilazzjoni, u dak l-tip ta 'ħaġa li kompilatur jista' jkun kapaċi biex insemmu, bħal oh, ħej, forsi I tista 'tagħmel dan kollu f'operazzjoni waħda, għall-kuntrarju tat-tagħbija tal-varjabbli daqs minn RAM, decrementing dan, maħżuna lura, u mbagħad tagħbija lura fl-ġdid biex jipproċessaw l-bqija ta 'din l-operazzjoni. Imma tipikament, no, dan mhuwiex il-tip ta 'ħaġa li għaddej biex jagħmlu program tiegħek ħafna aktar mgħaġġla. Kwalunkwe mistoqsijiet aktar fuq stacks? Allura imbuttar u popping. Jekk inti guys tixtieq li jippruvaw l-edizzjoni Hacker, dak li aħna ghamilt fl-edizzjoni Hacker huwa attwalment marret u dan għamlitu munzell jikbru b'mod dinamiku. L-isfida hemm primarjament l hawn fil-funzjoni timbotta, biex insemmu kif jagħmlu dan array jikbru kif inti żżomm imbuttar elementi aktar u aktar fuq il-munzell. Huwa fil-fatt mhux wisq kodiċi addizzjonali. Just sejħa biex - inti għandek tiftakar li jiksbu l-sejħiet li malloc fil hemm suppost, u mbagħad figura meta int ser sejħa realloc. Li sfida gost jekk int interessat. Iżda għalissa, ejja jimxu fuq, u ejja nitkellmu dwar kjuwijiet. Skrollja permezz ta 'hawn. Il-kju huwa parentela mill-qrib tal-munzell. Allura fil-munzell, l-affarijiet li ġew stabbiliti aħħar kienu l-ewwel affarijiet li mbagħad miksuba. Imxejna ltqajna dan l-aħħar fl-ewwel barra, jew LIFO, tordna. Billi fil-kju, kif youd jistennew minn meta int bil-wieqfa fil-linja, l-ewwel persuna li tikseb fil-linja, l-ewwel ħaġa li tikseb fis-kju, hija l-ewwel ħaġa li gets miksuba mill-kju. Kjuwijiet huma wkoll ta 'spiss użati meta aħna qed jittrattaw ma' graphs, bħal tkellimna dwar qasir mal stacks, u kjuwijiet huma wkoll handy għal mazz ta 'affarijiet oħra. Ħaġa waħda li jitla 'spiss qed tipprova żżomm, per eżempju, lista magħżula ta 'elementi. U inti tista 'tagħmel dan ma' firxa. Tista 'żżomm lista magħżula ta' affarijiet fil-firxa, iżda fejn dan gets delikata huwa imbagħad inti dejjem għandek issib l-post xieraq biex daħħal il-ħaġa li jmiss. Mela jekk għandek firxa ta 'numri, 1 sa 10, u allura inti tixtieq li jespandu li biex il-numri 1 sa 100, u int jkollna dawn in-numri sabiex każwali u jippruvaw iżommu kollox magħżula kif tmur permezz, inti tispiċċa jkollhom jagħmlu ħafna ta 'ċaqliq. Bil ċerti tipi ta 'kjuwijiet u ċerti tipi ta' strutturi tad-data sottostanti, inti tista 'attwalment jżommha pjuttost sempliċi. Inti ma għandekx li żżid xi ħaġa u mbagħad jqalleb l-ħaġa sħiħa kull darba. Lanqas ma għandek tagħmel ħafna ta 'ċaqliq mill-elementi interni madwar. Meta nħarsu lejn kju, tara li - ukoll fil queue.c fil-kodiċi taqsima - il Struct li konna tak huwa verament simili għall-Struct li aħna ħadt għal munzell. Hemm eċċezzjoni waħda għal din, u li eċċezzjoni waħda hija li għandna dan integer addizzjonali imsejjaħ ir-ras, u l-kap hawnhekk huwa biex iżżomm rekord tal-kap tal-kju, jew l-ewwel element fil-kju. Bil-munzell, konna kapaċi li jżommu rekord ta 'l-element li aħna kienu waslu sabiex tkun irkuprata, jew il-quċċata tal-munzell, bl-użu biss id-daqs, billi bil-kju, qed ikollna biex jittrattaw truf opposti. Aħna qed tipprova tindi affarijiet fuq fl-aħħar, iżda mbagħad jirritornaw affarijiet minn quddiem. Allura effettiv, bir-ras, aħna għandna l-indiċi tal-bidu tal-kju, u d-daqs tagħtina l-indiċi ta 'l-aħħar tal-kju sabiex inkunu nistgħu irkuprata l-affarijiet mill-kap u żid affarijiet fuq il-denb. Billi bil-munzell, konna biss qatt jittrattaw il-quċċata tal-munzell. Aħna qatt ma kellhom aċċess għall-qiegħ tal-munzell. Aħna biss miżjud affarijiet fil-wiċċ u ħa off affarijiet tal-quċċata hekk aħna ma bżonn il-qasam extra ġewwa Struct tagħna. Does li ġeneralment jagħmel sens? Kull dritt. Iva, Charlotte? [Charlotte, mhux intelliġibbli] [Hardison] Li l-kwistjoni kbira, u li kienet waħda li ħarāu fl-lecture. Forsi mixi permezz ftit eżempji se juru għaliex aħna ma jridu jużaw kordi [0] bħala l-kap tal-kju. Allura immaġina li għandna kju tagħna, aħna qed tmur biex sejħa hija kju. Fil-bidu, meta konna biss instantiated dan, meta konna biss iddikjarat dan, aħna ma initialized xejn. Dan kollu żibel. Allura naturalment aħna tixtieq li tagħmel ċert li aħna initialize kemm id-daqs u l-oqsma tar-ras li jkun 0, xi ħaġa raġonevoli. Aħna jista 'wkoll jimxi' l quddiem u null l-elementi fil-kju tagħna. U biex tagħmel dan tajbin dijagramma, avviż li issa kju tagħna tista 'żżomm biss tliet elementi; billi munzell tagħna tista 'żżomm 4, kju tagħna tista' żżomm biss tlieta. U dan huwa biss biex jagħmlu l-tajbin dijagramma. L-ewwel ħaġa li jiġri hawn huwa li aħna enqueue-sekwenza "hi". U biss bħal għamilna mal-munzell, xejn terriblement differenti hawn, aħna tarmi l-sekwenza fuq mill kordi [0] u inkrement daqs tagħna sa l-1. Aħna enqueue "bye", jiġrilha jitqiegħdu fuq. Allura dan qisu munzell għall-aktar parti. Bdejna off hawn, element ġdid, element ġdid, id-daqs jżomm għaddejjin up. X'jiġri f'dan il-punt meta rridu dequeue xi ħaġa? Meta aħna rridu li dequeue, li huwa l-element li rridu dequeue? [Basile] Strings [0]. >> Zero. Eżattament dritt, Basile. Aħna rridu li jeħles mill-sekwenza ewwel, dan wieħed, "hi". Allura dak li kien il-ħaġa oħra li mibdula? Avviż meta aħna popped xi ħaġa off tal-munzell, aħna biss biddel id-daqs, iżda hawnhekk, konna ltqajna koppja ta 'affarijiet li bidla. Mhux biss il-bidla daqs, iżda l-bidliet ras. Dan sejjer lura għal punt Charlotte iktar kmieni: għaliex għandna dan il-kap kif ukoll? Jagħmel sens issa, Charlotte? Tip >> tal. [Hardison] Tip ta '? Allura dak li ġara meta aħna dequeued? What did il-kap tagħmel dan issa huwa interessanti? [Charlotte] Oh, minħabba li nbidlu - okay. Nara. Minħabba li l-kap - fejn ir-ras hija li tipponta lejn il-bidliet f'termini tal-post. Huwa m'għadux dejjem il-wieħed indiċi żero. >> Yeah, eżattament. Dak li ġara kien jekk dequeueing l-element għolja sar u aħna ma kellhiex il-qasam ras għaliex konna dejjem sejħa din is-sekwenza ta '0 indiċi l-kap ta' kju tagħna, allura aħna d jkollhom li ċċaqlaq il-bqija tal-kju isfel. Għandna d jkollhom li neqilbu "bye" minn mill-kordi [1] li l-kordi [0]. U kordi [2] sa kordi [1]. U aħna d jkollhom biex jagħmlu dan għall-lista sħiħa ta 'elementi, il-firxa sħiħa ta 'elementi. U meta aħna qed tagħmel dan ma 'firxa, li gets verament għaljin. Allura hawnhekk, mhuwiex big deal. Aħna biss tliet elementi fil array tagħna. Imma jekk kellna kju ta 'elementi elf jew ta' elementi miljun, u mbagħad kollha f'daqqa, aħna jibdew jagħmlu mazz ta 'dequeue sejħiet kollha fil-linja, affarijiet verament se jrattab kif xiftijiet kollox isfel kontinwament. You know, bidla ta '1, bidla ta' 1, bidla ta '1, bidla ta' 1. Minflok, aħna nużaw dan il-kap, aħna sejħa hija "pointer" anki jekk mhuwiex verament pointer fis-sens strett; mhuwiex tip pointer. Huwa mhux * int jew * char jew xi ħaġa bħal dik. Iżda huwa tipponta jew li tindika l-kap ta 'kju tagħna. Yeah? [Student] Kif dequeue taf li ftit pop off dak kollu li huwa l-kap? [Hardison] Kif ma dequeue taf kif pop off x'ikun l-kap? Dritt >>, yeah. >> Liema huwa tħares lejn huwa biss ikun x'ikun l-qasam ewlieni huwa stabbilit għal. Allura f'dan il-każ l-ewwel, jekk inħarsu dritt hawn, ewlieni tagħna huwa 0, 0 indiċi. >> Dritt. [Hardison] Hekk hija biss jgħid okay, ukoll, l-element fil-indiċi 0, l-sekwenza "hi", huwa l-element fir-ras ta kju tagħna. Allura aħna qed tmur biex dequeue li Guy. U li se tkun l-element li gets lura lill-sejjieħ. Iva, Saad? >> Allura l-ras bażikament jistabbilixxi l - fejn int ser indiċi dan? Dik hija l-bidu ta 'dan? >> Yeah. Okay. >> [Hardison] Dik hija isiru l-bidu ġdid għall-firxa tagħna. Allura meta inti dequeue xi ħaġa, kull ma għandek tagħmel huwa aċċess għall-element fil indiċi q.head, u li se tkun l-element li inti tixtieq li dequeue. Inti ukoll għandek decrement-daqs. Ser naraw fi ftit fejn l-affarijiet jiksbu ftit delikata ma 'dan. Aħna dequeue, u issa, jekk aħna enqueue mill-ġdid, fejn do we enqueue? Fejn ma l-element li jmiss tmur fil-kju tagħna? Say irridu li enqueue-sekwenza "CS". Li fih indiċi se tmur? [Studenti] Strings [2]. >> Żewġ. Għaliex 2 u mhux 0? [Basile] Minħabba li issa l-ras huwa ta '1, b'tali mod li bħall-bidu tal-lista? [Hardison] Dritt. U dak tindika t-tmiem tal-lista? Liema kienu aħna bl-użu biex juri l-aħħar ta 'kju tagħna? Ir-ras hija l-kap ta 'kju tagħna, il-bidu ta' kju tagħna. X'inhu l-aħħar ta 'kju tagħna? [Studenti] Daqs. >> Daqs, eżattament. Allura elementi ġodda tagħna jmorru f'mill-daqs, u l-elementi li nieħdu off come off ras. Meta aħna enqueue l-element li jmiss, aħna qed tqegħid f'mill-daqs. [Student] Qabel ma tqiegħed dik għalkemm, id-daqs kien 1, id-dritt? [Hardison] Dritt. Allura ma pjuttost fil-daqs. + Daqs, mhux +1, imma r-ras +. Għaliex aħna mċaqlaq kollox bl-ammont tar-ras. Allura hawn, issa konna ltqajna kju ta 'daqs 1 li jibda fil-indiċi 1. Id-denb huwa indiċi 2. Iva? [Student] X'jiġri meta inti dequeue kordi [0], u slots l kordi "fil-memorja biss tikseb mbattla, bażikament, jew biss minsija? [Hardison] Yeah. F'dan is-sens, aħna qed biss jinsa minnhom. Jekk konna ħażna kopji tagħhom għall - strutturi ħafna dejta se spiss taħżen kopji tagħhom stess ta 'l-elementi sabiex il-persuna li tamministra l-istruttura tad-data ma jkollhom għalfejn tinkwieta dwar fejn dawk kollha pointers huma għaddejjin. L-istruttura tad-data istivi fuq kollox, iżżomm fuq l-kopji kollha, biex tiżgura li kollox tippersisti xieraq. Madankollu, f'dan il-każ, dawn l-istrutturi tad-data biss, għas-sempliċità, mhux qed jagħmlu kopji ta 'xi ħaġa li aħna qed ħażna fihom. [Student] Allura dan huwa firxa kontinwa ta '-? >> Iva. Jekk inħarsu lura lejn dak id-definizzjoni kienet ta 'din l-istruttura, huwa. Huwa biss firxa standard bħal inti stajt tidher, firxa ta '* char i. Does li -? >> Yeah, I kien biss mintix jekk inti ser eventwalment jispiċċaw ta 'memorja, sa ċertu punt, jekk ikollok dawn spots vojta fil-firxa tiegħek? [Hardison] Yeah, li l-punt tajjeb. Jekk inħarsu lejn dak li ġara issa f'dan il-punt, aħna ve mimlija sal kju tagħna, jidher qisu. Iżda aħna ma verament mimlija kju tagħna għaliex għandna kju li l-daqs 2, iżda jibda fil indiċi 1, minħabba li fejn pointer ewlieni tagħna huwa. Bħalek kienu jgħidu, dak l-element fil-kordi [0], fil-indiċi 0, mhuwiex verament hemmhekk. Mhuwiex fil-kju tagħna aktar. Aħna biss ma jolqot biex tmur fi u jissostitwixxu dan meta aħna dequeued dan. Allura anke jekk jidher qisu konna jispiċċaw tal-memorja, aħna verament ma. Dan il-post huwa disponibbli għalina l-użu. Il xieraq imġieba, jekk konna biex jippruvaw u l-ewwel dequeue xi ħaġa bħal "bye", li se pop bye off. Issa kju tagħna jibda fil-indiċi 2 u ta 'daqs 1. U issa jekk aħna jippruvaw u enqueue xi ħaġa mill-ġdid, jiġifieri 50, 50 għandhom imorru f'dan il-post fi indiċi 0 għaliex huwa għadu disponibbli għalina. Iva, Saad? [Saad] Does li jiġri awtomatikament? [Hardison] Dan ma jiġri pjuttost awtomatikament. Inti għandek tagħmel l-matematika biex jagħmluha taħdem, imma essenzjalment dak li aħna ghamilt hija li aħna stajt biss imgeżwer madwar. [Saad] U huwa okay jekk dan ikollu toqba fin-nofs ta 'dan? [Hardison] Huwa jekk nistgħu nagħmlu l-matematika jaħdem kif suppost. U jirriżulta li dan huwa attwalment mhux li diffiċli li tagħmel ma 'l-operatur mod. Hekk biss bħal għamilna mal Caesar u l-għalf kripto, jużaw mod, nistgħu nibdew l-affarijiet biex nagħlaq madwar u jibqgħu għaddejjin madwar u madwar u madwar kju tagħna, jżommu dik pointer ras jiċċaqalqu madwar. Avviż li d-daqs huwa dejjem jirrispetta l-għadd ta 'elementi fil-fatt fil-kju. U huwa biss il-pointer ras li żżomm iċ-ċikliżmu permezz. Jekk inħarsu lejn dak li ġara hawn, jekk immorru lura għall-bidu, u inti biss tara x'jiġri lill-kap meta aħna enqueue xi ħaġa, ma ġara xejn lill-kap. Meta aħna enqueued xi ħaġa oħra, xejn ġara lill-kap. Hekk kif aħna dequeued xi ħaġa, il-kap tmur minn waħda. Aħna enqueued xi ħaġa, xejn ma jiġri lill-kap. Meta aħna dequeue xi ħaġa, kollha f'daqqa-ras gets inkrementat. Meta aħna enqueue xi ħaġa, xejn ma jiġri lill-kap. X'jista 'jiġri f'dan il-punt jekk konna biex dequeue xi ħaġa mill-ġdid? Kwalunkwe ħsibijiet? X'jiġri lill-kap? X'għandu jiġri lill-kap jekk konna biex dequeue xi ħaġa oħra? Ir-ras dritt issa huwa fil-indiċi 2, li jfisser li l-kap tal-kju hija kordi [2]. [Student] Li prospetti 0? >> Għandu jirritornaw għal 0. Għandu wrap lura madwar, eżattament. S'issa, kull darba we called dequeue, aħna kont qed jżid wieħed għall-ras, żid waħda għar-ras, żid 1 għar-ras, żid wieħed għall-ras. Hekk kif dan pointer ras gets għall-indiċi aħħar firxa tagħna, allura għandna biex nagħlaq lura madwar il-bidu, jmorru lura għal 0. [Charlotte] Dak li jiddetermina l-kapaċità tal-kju munzell? [Hardison] F'dan il-każ, konna biss qed tuża kostanti # definit. Okay. >> [Hardison] Fil-fajl c attwali., Inti tista 'tmur fi u muck miegħu ftit u tagħmlu kbar jew ftit kif tixtieq. [Charlotte] Allura meta inti qed jagħmilha kju, kif taħseb li jagħmlu l-kompjuter jafu kemm hu kbir trid li l-munzell li jkun? [Hardison] Li l-kwistjoni kbira. Hemm ftit ta 'modi. Wieħed huwa għal ftit tiddefinixxi lilha bil-quddiem u jgħidu dan se jkun kju li għandu 4 elementi jew 50 elementi jew 10,000. Il-mod ieħor huwa li tagħmel dak li l-folks edizzjoni Hacker qed jagħmlu u joħolqu funzjonijiet li jkollhom kju tiegħek jikbru b'mod dinamiku kif l-affarijiet aktar tikseb miżjud pulzieri [Charlotte] Allura li jmorru ma 'l-ewwel għażla, liema sintassi tuza li tgħid il-programm x'inhu d-daqs tal-kju? [Hardison] Ah. Mela ejja nikseb minn dan. Jien xorta fl stack.c hawn, hekk jien biss ser iscroll sal-quċċata hawn. Tista 'tara dan id-dritt hawn? Dan huwa l-# jiddefinixxi kapaċità 10. U dan huwa kważi l-sintassi istess eżatt li għandna għall kju. Ħlief fil-kju, konna ltqajna dak il-qasam Struct żejda fil hawn. [Charlotte] Oh, ħsibt li l-kapaċità maħsuba tal-kapaċità għall-sekwenza. [Hardison] Ah. >> Li huwa t-tul massimu tal-kelma. >> Ghandek dan. Yeah. Il-kapaċità hawnhekk - li l-punt kbir. U din hija xi ħaġa li diffiċli għaliex dak li konna ddikjarati hawnhekk huwa firxa ta '* char i. Firxa ta 'indikaturi. Dan huwa firxa ta 'Chars. Din hija probabbilment dak li inti stajt tidher meta inti kont qed tiddikjara buffers tiegħek għall-fajl I / O, meta inti kont qed toħloq kordi manwalment fuq il-munzell. Madankollu, dak li konna ltqajna hawn huwa firxa ta 'char * i. Allura huwa firxa ta 'indikaturi. Fil-fatt, jekk irridu zoom lura out u nħarsu lejn dak li għaddej hawn fil-preżentazzjoni, tara li l-elementi attwali, id-data karattru ma tkunx maħżuna fil-firxa innifsu. X'hemm maħżuna fi array tagħna hawn huma pointers għad-data karattru. Okay. Allura aħna stajt tidher kif id-daqs tal-kju huwa bħad mal-munzell, id-daqs dejjem jirrispetta l-għadd ta 'elementi bħalissa fil-kju. Wara li jagħmel 2 enqueues, id-daqs huwa 2. Wara li tagħmel dequeue-daqs huwa issa 1. Wara li jagħmel ieħor enqueue-daqs huwa lura sa 2. Allura l-daqs definittivament jirrispetta n-numru ta 'elementi fil-kju, u allura l-kap biss iżomm ċikliżmu. Hija tmur minn 0-1-2, 0-1-2, 0-1-2. U kull darba li nsejħu dequeue, il-pointer ras gets inkrementat għall-indiċi li jmiss. U jekk ir-ras huwa ta 'madwar li jmorru fuq, huwa loops lura madwar għal 0. Allura ma 'dan, nistgħu jikteb l-funzjoni dequeue. U aħna qed tmur biex iħallu l-funzjoni enqueue għalik guys biex jimplimentaw minflok. Meta aħna dequeue element minn kju tagħna, dak li kien l-ewwel ħaġa li għamilt Daniel meta bdejna bil-miktub il-funzjoni pop għall stacks? Let me tisma 'minn xi ħadd li ma jkunx mitkellma s'issa. Ejja ara, Saad, do you remember dak Daniel ma kif l-ewwel ħaġa meta kiteb pop? [Saad] Kien hemm, kien - >> Hu ttestjati għal xi ħaġa. [Saad] Jekk id-daqs huwa akbar minn 0. >> Eżattament. U dak li kien li l-ittestjar għall? [Saad] Li kien l-ittestjar biex tara jekk hemm xi ħaġa ġewwa l-firxa. [Hardison] Yeah. Eżattament. Allura inti ma tistax pop xejn barra min-munzell jekk huwa vojt. Bl-istess mod, inti ma tistax dequeue xejn minn kju jekk huwa vojt. X'inhu l-ewwel ħaġa li għandna nagħmlu fil-funzjoni dequeue tagħna hawn, do you think? [Saad] Jekk id-daqs huwa akbar minn 0? >> Yeah. F'dan il-każ, stajt attwalment biss ttestjati biex tara jekk huwa 0. Jekk huwa 0, nistgħu ritorn null. Iżda loġika istess eżatt. U ejja tkompli ma 'dan. Jekk id-daqs mhijiex 0, fejn huwa l-element li rridu dequeue? [Saad] Fl-ras? >> Eżattament. Nistgħu biss iġbed l-ewwel element fil-kju tagħna billi taċċessa l-element fir-ras. Crazy Xejn. Wara dan, dak li għandu nagħmlu? Dak li jiġri? Liema kienet l-unika ħaġa oħra li aħna tkellem dwar fl dequeue? Żewġ affarijiet li jiġri, għax kju tagħna inbidlet. [Daniel] Naqqas id-daqs. >> Għandna biex jitnaqqas id-daqs, u jżidu l-ras? Eżattament. Biex tiżdied il-kap, ma nistgħux biss bl-addoċċ jżid ir-ras, tiftakar. Aħna ma tista 'biss tagħmel queue.head + +. Irridu wkoll jinkludu dan mod mill-kapaċità. U għaliex għandna Mod mill-kapaċità, Stella? [Stella] Minħabba li għandu biex nagħlaq madwar. >> Eżattament. Aħna mod mill-kapaċità minħabba li jkollu wrap lura madwar għal 0. Allura issa, f'dan il-punt, nistgħu nagħmlu dak Daniel qal. Nistgħu decrement-daqs. U allura nistgħu biss jirritorna l-element li kien fil-quċċata tal-kju. Huwa jistenna tip ta 'gnarly fl-ewwel. Inti jista 'jkollhom kwistjoni. Jiddispjacini? [Sam] Għaliex l-ewwel fil-quċċata tal-kju? Fejn ma li jmorru? [Hardison] Dan ġej mill-raba 'linja mill-qiegħ. Wara aħna test biex tiżgura li kju tagħna ma tkunx vojta, aħna iġbed * char ewwel, aħna iġbed l-element li l-seduta l-indiċi ras ta 'firxa tagħna, ta' spag firxa tagħna, >> u sejħa li l-ewwel? [Hardison] U aħna sejħa hija l-ewwel. Yeah. Just biex issegwi fuq dik, għaliex taħseb li kellna biex jagħmlu dan? [Sam] Kull 1 huwa biss jirritorna q.strings [q.head]? >> Yeah. >> Għaliex aħna qed tagħmel dan jinbidlu ta 'l-q.head bil-funzjoni mod, u hemm ebda mod biex tagħmel dan fi żmien linja tar-ritorn wkoll. [Hardison] Eżattament. Int post fuq. Sam s totalment fuq il-post fuq. Ir-raġuni kellna biex tiġbed l-ewwel element fil-kju tagħna u jaħżnu ġo varjabbli għaliex din il-linja fejn aħna kien għadu kemm q.head, hemm l-operatur mod fil hemm ma tkunx xi ħaġa li nistgħu nagħmlu u li hija jkollha effett fuq ir-ras mingħajr - f'linja waħda. Allura aħna attwalment ikollhom iġbed l-ewwel element, allura aġġusta l-ras, taġġusta l-daqs, u mbagħad jirritorna l-element li aħna miġbud 'il barra. U din hija xi ħaġa li aħna ser tara toħroġ aktar tard mal- listi marbuta, kif aħna play madwar magħhom. Spiss meta int ħelsien jew jarmi listi marbuta għandek bżonn biex tiftakar l-element li jmiss, il-pointer li jmiss ta 'lista marbuta qabel ma jintrema dak attwali. Minħabba inkella inti tarmi l-informazzjoni ta 'dak ix-xellug fil-lista. Issa, jekk inti tmur appliance tiegħek, inti tiftaħ queue.c-'x minn dan. Mela jekk jien jiftħu queue.c, let me zoom fil hawn, tkun taf tara li għandek fajl simili li tħares. Simili li tħares 'fajl għal dak li kellna qabel ma stack.c. Imxejna ltqajna Struct tagħna għall kju definit eżatt kif rajna fuq il-pjastri. Aħna funzjoni enqueue tagħna li huwa għalik li tagħmel. U aħna għandna l-funzjoni dequeue hawn. Il-funzjoni dequeue fil-fajl ma ġietx implementata, imma jien ser erġa 'poġġih fuq il-PowerPoint sabiex inti tista tip fil, jekk inti tixtieq. Allura għall-5 minuti jew hekk, inti guys jaħdmu fuq enqueue li huwa kważi biss l-oppost ta 'dequeue. Inti ma għandekx biex jaġġustaw ras meta int enqueueing, imma dak do ikollok biex taġġusta? Daqs. Allura meta inti enqueue, il-kap soġġorni mhux mimsusa, id-daqs gets mibdula. Iżda dan ma tieħu xi ftit ta '- inti se jkollhom jilagħbu mal-madwar li mod biex insemmu eżattament dak indiċi l-element il-ġdid għandu jiddaħħal fl. So I ser jagħtuk guys ftit, tpoġġi dequeue back up fuq il-pjastra, u kif inti guys xi mistoqsijiet, shout out sabiex inkunu nistgħu kollha jitkellmu dwarhom bħala grupp. Ukoll, id-daqs inti don 't - meta inti taġġusta l-daqs, inti tista' dejjem biss - do ikollok mod id-daqs qatt? [Daniel] No >> Inti ma għandekx Mod tad-daqs, id-dritt. Minħabba d-daqs dejjem se, jekk you're - jekk wieħed jassumi int ġestjoni affarijiet kif xieraq, id-daqs dejjem se jkun bejn 0 u 3. Meta inti għandek mod meta int tagħmel enqueue? [Student] Biss għal-ras. >> Biss għal-ras, eżattament. U għaliex inti għandek mod fil-livelli kollha fl-enqueue? Meta hija sitwazzjoni fejn youd għandek mod? [Student] Jekk ikollok Jittieħed fuq spazji, bħal fil spazji 1 u 2, u allura inti bżonn li żżid xi ħaġa ta '0. [Hardison] Yeah, eżattament. Mela jekk pointer ras tiegħek hija fl-aħħar nett, jew jekk id-daqs tiegħek plus kap tiegħek hija akbar, jew minflok, se nagħlaq madwar il-kju. Allura f'din is-sitwazzjoni li konna ltqajna up hawn fuq il-pjastra dritt issa, jekk irrid li enqueue xi ħaġa dritt issa, irridu enqueue xi ħaġa fuq indiċi 0. Mela jekk inti tħares lejn fejn il-50 tmur, u I-sejħa enqueue 50, tmur stabbiliti hemmhekk fil-qiegħ. Hija tmur fil-0 indiċi. Huwa jissostitwixxi l-"hi" li kienet diġà dequeued. [Daniel] Ma inti tieħu kura ta 'dak dequeue diġà? Għaliex ma tagħmel xejn mal-kap fl enqueue? [Hardison] Oh, hekk int ma jimmodifikawx ir-ras, sorry. Imma inti għandek tuża l-operatur mod meta int aċċess l-element li inti tixtieq li enqueue meta int aċċess l-element li jmiss fil-kju tiegħek. [Basile] I ma tagħmel dan, u sibt "suċċess" fuq hemmhekk. [Daniel] Oh, I jifhmu dak li qed tgħid. [Hardison] Allura inti didn't - inti biss għamlet fil q.size? [Basile] Yeah. I biss mibdula naħat, I ma tagħmel xejn mal-kap. [Hardison] Inti ma attwalment ikollhom reset-ras li tkun xi ħaġa, imma meta inti indiċi fil-firxa kordi, inti fil-fatt ikollhom imorru quddiem u kkalkula fejn l-element li jmiss huwa, minħabba withe-munzell, l-element li jmiss fil ċmieni tiegħek kienet dejjem fil-indiċi korrispondenti mal-qies. Jekk nagħtu ħarsa lura up fuq il-funzjoni tagħna push munzell, nistgħu dejjem plunk fil element ġdid tagħna dritt fil-daqs indiċi. Billi bil-kju, aħna ma tistax tagħmel dan għaliex jekk aħna qed fuq din is-sitwazzjoni, jekk aħna enqueued 50 string ġdida tagħna tmur dritt fil kordi [1] li aħna ma trid tagħmel. Aħna rridu li jkollhom l-sekwenza l-ġdida jmorru fuq indiċi 0. Xi ħadd Does - iva? [Student] Għandi mistoqsija iżda mhux verament relatati. Xi jfisser meta xi ħadd eżatt jitlob xi ħaġa bħal pointer Pred? X'inhu dak l-isem qasir għall? Naf huwa biss l-isem. [Hardison] pointer Pred? Ejja naraw. F'liema kuntest? [Istudenti] Kien l-insert. I tista 'titolbok aktar tard jekk inti tixtieq għaliex mhuwiex verament relatat, imma jien biss - [Hardison] Minn kodiċi daħħal David minn taħdita? Aħna jista 'pull up li u jitkellmu dwar dan. Aħna ser jitkellmu dwar dak li jmiss, ladarba irridu jiksbu l-listi marbuta. Mela ejja verament malajr tħares lejn dak li l-funzjoni enqueue Dehra. Liema kienet l-ewwel ħaġa li n-nies ippruvaw jagħmlu fil-linja enqueue tiegħek? Fis dan kju? Simili għal dak li għamilt għall munzell imbuttar. What did you do, Stella? [Stella, mhux intelliġibbli] [Hardison] Eżattament. Jekk (q.size == KAPAĊITÀ) - I bżonn biex ċingi tiegħi fil-post it-tajjeb - ritorn foloz. Zoom fi ftit. Okay. Issa x'inhu l-ħaġa li jmiss li kellna li jagħmlu? Eżatt bħal ma 'l-munzell, u mdaħħla fil-post dritt. U għalhekk dak li kien il-post dritt li daħħal dik? Bl-munzell kien daqs indiċi, ma 'dan huwa pjuttost mhux dak. [Daniel] Għandi q.head-'jew - q.strings >>? >> Yeah. q.strings [q.head + q.size mod KAPAĊITÀ]? [Hardison] Aħna probabbilment tixtieq li tqiegħed parentesi madwar din hekk li aħna qed jkollna l-preċedenza xierqa u b'tali mod li cleart għal kulħadd. U stabbiliti li huma ugwali? >> To str? >> To str. Great. U issa x'inhu l-aħħar ħaġa li għandna nagħmlu? Eżatt bħal għamilna fil-ċmieni. >> Inkrement id-daqs? >> Inkrement id-daqs. Boom. U mbagħad, peress li l-kodiċi istarter biss lura foloz fil-kontumaċja, irridu li tbiddel dan l minnu jekk kollox imur permezz ta 'u kollox imur sew. Kull dritt. Li l-lott ta 'informazzjoni għall-taqsima. Aħna ma pjuttost fuq. Aħna rridu li nitkellmu verament malajr dwar weħidhom marbuta ma 'listi. I ser tpoġġi dan up sabiex inkunu tista 'tmur lura għal aktar tard. Imma ejja mur lura għall-preżentazzjoni tagħna għal ftit ftit aktar slides. Allura enqueue huwa Todo, issa aħna ghamilt dan. Issa ejja tagħti ħarsa lejn weħidhom marbuta ma 'listi. Aħna tkellimna dwar dawn aktar ftit fil-lecture. Kemm inti guys raw il-demo fejn kellna nies awkwardly tipponta lejn kull numri oħra u żamma? >> I kien f'dak. >> What did you guys think? Did li, nisperaw tiċċara dawn ftit ftit? Ma 'lista, jirriżulta li nittrattaw dan it-tip li aħna qed tmur biex sejħa node. Billi bil-kju u l-munzell kellna structs li aħna'd sejħa kju fil munzell, kellna dawn kju ġdid fit-tipi munzell, hawn lista hija verament ftit magħmula minn mazz ta 'nodes. Fl-istess mod li kordi huma biss mazz ta 'Chars kollha ħejjew ħdejn xulxin. Lista marbuta hija biss node node u ieħor u ieħor node node u ieħor. U aktar milli smashing l-lymph flimkien u ħażna tagħhom contiguously id-dritt ħdejn xulxin fil-memorja, li jkollha dan il-werrej li jmiss jippermetti li jaħżnu l-lymph kull meta, bl-addoċċ. U mbagħad it-tip ta 'wajer ilkoll flimkien mal-punt minn wieħed għall-ieħor. U dak li kien l-vantaġġ kbir li dan kellu fuq firxa? Matul kollox ħażna contiguously biss mwaħħla ħdejn xulxin? Tiftakar? Yeah? >> Allokazzjoni memorja Dinamika? >> Dynamic memorja allokazzjoni f'liema sens? [Student] Fil li inti tista 'żżomm jagħmilha akbar u inti ma għandekx jiċċaqalqu firxa sħiħa tiegħek? [Hardison] Eżattament. Allura ma 'firxa, meta inti tixtieq li jitqiegħed element ġdid fis-nofs ta' dan, inti għandek bidla kollox biex tagħmel spazju. U bħal tkellimna dwar il-kju, huwa għalhekk li għandna iżommu dan pointer ras, hekk li aħna mhux qed kontinwament ċaqliq affarijiet. Minħabba li gets għaljin jekk inti ħadthom ltqajna firxa kbira u int dejjem tagħmel dawn inserzjonijiet każwali. Billi bil-lista, kull ma għandek tagħmel huwa tarmi fuq node ġdid, taġġusta l-pointers, u qed isir. X'inhu sucks dwar dan? Minbarra l-fatt li mhuwiex faċli biex jaħdmu ma bħala firxa? Yeah? [Daniel] Well, I raden huwa aktar diffiċli li jkollhom aċċess għal element speċifiku fil-lista marbuta? [Hardison] Inti tista 'mhux biss jaqbżu element arbitrarju fin-nofs tal-lista marbuta tiegħek. Kif għandek tagħmel dan minflok? >> Int għandek pass permezz tal-ħaġa sħiħa. [Hardison] Yeah. Ikollok tmur permezz ta 'waħda fi żmien, wieħed kull darba. Huwa enormi - huwa uġigħ. X'hemm l-oħra - hemm ieħor downfall għal dan. [Basile] Inti ma tistax tmur quddiem u lura? Ikollok tmur f'direzzjoni waħda? [Hardison] Yeah. Allura kif nistgħu issolvi dan, xi kultant? [Basile] Doppjament marbuta listi? >> Eżattament. Hemm listi doppjament-konnessi. Hemm ukoll - sorry? [Sam] Huwa li l-istess bħall-użu tal-ħaġa Pred li - I biss mfakkar, mhuwiex li dak il-ħaġa Pred huwa għall? Mhix li fl bejn doppjament u waħedhom? Ħarsa [Hardison] Ejja lejn dak eżattament li kien isir. Allura here we go. Hawn il-kodiċi lista. Hawnhekk għandna predptr, fil hawn. Huwa dan dak li kienu jitkellem dwar? Allura dan kien - hu ħelsien lista u hu jippruvaw biex jaħżnu pointer lilha. Din mhix l-doppjament, weħidhom marbuta listi. Nistgħu nitkellmu aktar dwar dan aktar tard peress li dan qed jitkellem dwar tillibera l-lista u nixtieq li juru xi għalf ieħor 1. imma huwa biss - huwa ftakar l-valur tal-ptr [Student] Oh, huwa pointer preçedenti? >> Yeah. Allura li nistgħu mbagħad inkrement ptr innifsu qabel we mbagħad ħielsa dak predptr hu. Għaliex ma nistgħux ptr b'xejn u mbagħad sejħa ptr = ptr li jmiss, id-dritt? Dan ikun ħażin. Mela ejja ara, lura għal dan Guy. Il-ħaġa ħażina oħra dwar il-listi hija li filwaqt li ma 'firxa aħna biss għandhom l-elementi kollha huma stess f'munzelli ħdejn xulxin, hawn aħna wkoll daħħalna dan il-werrej. Allura hemm xi blokki addizzjonali ta 'memorja li qed ikollna l-użu għal kull element li aħna qed jaħżnu fil-lista tagħna. Nikbru flessibbiltà, imma niġu bi spiża. Jidħol ma din l-ispiża iż-żmien, u niġu ma 'din l-ispiża tal-memorja wisq. Ħin fis-sens li aħna issa jkollhom jgħaddu kull element fil-firxa biex isibu l-waħda fil-indiċi 10, jew li kienet tkun indiċi 10 fil-firxa. Just verament malajr, meta aħna dijagramma out dawn il-listi, tipikament aħna jżommu lill-kap tal-lista jew il-pointer 1 tal-lista u jinnota li dan huwa pointer veru. Huwa biss 4 bytes. Huwa mhux node innifisha. Allura inti tara li hija għandha l-ebda valur int fiha, l-ebda pointer jmiss fiha. Huwa litteralment biss pointer. Huwa ser punt għal xi ħaġa li hija Struct node attwali. [Sam] A pointer imsejħa glandoli? >> Dan huwa - l-ebda. Dan huwa pointer għal xi ħaġa ta 'node tip. Huwa pointer għal Struct node. >> Oh, okay. Dijagramma fuq ix-xellug, il-kodiċi fuq il-lemin. Aħna tista 'tistabbilixxi li null, li huwa mod tajjeb biex tibda. Meta inti dijagramma li, inti jew tikteb bħala null jew inti tpoġġi linja permezz ta 'dan bħal dik. Wieħed mill-modi eħfef biex jaħdmu ma 'listi, u aħna nitolbuk tagħmel kemm prepend u tehmeż biex tara d-differenzi bejn it-tnejn, iżda prepending definittivament hija aktar faċli. Meta inti prepend, dan huwa fejn inti - meta inti prepend (7), inti tmur u joħolqu l-Struct node u int tkun qed tissettja 1 għall-punt li dan, għaliex issa, peress li aħna prepended dan, li għaddej biex tkun fil-bidu tal-lista. Jekk aħna prepend (3), li toħloq ieħor node, iżda issa 3 ġejja qabel is-7. Allura aħna qed essenzjalment timbotta l-affarijiet fuq il-lista tagħna. Issa, tista 'tara li prepend, kultant xi nies sejħa hija timbotta, għax int timbuttah element ġdid fuq il-lista tiegħek. Huwa wkoll faċli li titħassar fuq quddiem ta 'lista. Sabiex in-nies se spiss jirrikjedu li pop. U b'dak il-mod, inti tista 'emulazzjoni munzell tintuża lista marbuta. Whoops. Jiddispjacini, issa aħna qed jkollna fis tehmeż. Allura hawnhekk għandna prepended (7), issa għandna prepend (3). Jekk aħna prepended xi ħaġa oħra fuq din il-lista, jekk aħna prepended (4), allura aħna d jkollhom 4 u mbagħad 3 u mbagħad 7. Mela allura nistgħu pop u neħħi 4, neħħi 3, neħħi 7. Ħafna drabi l-mod aktar intuwittiv biex jaħsbu dwar dan huwa ma tehmeż. Allura stajt diagrammed barra dak li look like ma 'tehmeż hawnhekk. Hawnhekk, mehmuż (7) ma tfittex ebda differenti għaliex hemm biss element wieħed fil-lista. U jpoġġu (3) tqiegħdu fit-tmiem. Forsi tista 'tara dritt issa l-trick ma' tehmeż hija li peress li aħna biss nafu fejn il-bidu tal-lista hija, li tehmeż ma 'lista inti jkollhom jimxu fit-triq kollha permezz tal-lista biex jiksbu l-aħħar, stop, imbagħad jibnu node tiegħek u kollox plunk isfel. Wajer l-għalf up. Allura ma prepend, kif aħna biss ripped permezz ta 'dan verament malajr, meta inti prepend għal lista, huwa pjuttost sempliċi. Inti tagħmel għoqda ġdida tiegħek, jinvolvi xi allokazzjoni memorja dinamika. Allura hawnhekk aħna qed jagħmlu Struct node jużaw malloc. Allura malloc aħna qed jużaw għaliex dan ser imwarrba memorja għalina għal aktar tard għaliex aħna ma rridux dan - irridu dan il-memorja jippersistu għal żmien twil. U aħna jiksbu pointer għall-ispazju fil-memorja li aħna biss allokata. Aħna nużaw daqs tal node, aħna ma somma-oqsma. Aħna ma manwalment jiġġeneraw in-numru ta 'bytes, minflok nużaw sizeof sabiex inkunu nafu aħna jkollna l-għadd xieraq ta 'bytes. Għandna niżguraw li tittestja dik is-sejħa malloc tagħna rnexxielha. Din hija xi ħaġa li trid tagħmel b'mod ġenerali. Fuq il-magni moderni, baqgħalna tal-memorja mhux xi ħaġa li faċli sakemm int allokazzjoni ton ta 'għalf u tagħmel lista enormi, imma jekk int bini Jittieħed għal, ngħidu aħna, bħal iPhone jew Android, inti għandek riżorsi limitati tal-memorja, speċjalment jekk inti qed tagħmel xi ħaġa intensa. Allura huwa tajjeb li tikseb fil-prattika. Avviż li stajt użati funzjonijiet differenti koppja hawn li inti stajt tidher li huma tip ta 'ġodda. Allura fprintf huwa bħad printf ħlief ewwel argument tagħha huwa l-fluss li inti tixtieq li jistampaw. F'dan il-każ, irridu li jistampaw il-sekwenza iżball standard li hija differenti mill-outstream standard. Permezz ta 'default turi up fl-istess post. Hija wkoll tistampa l-terminal, imma int tista '- jużaw dawk kmandi li tgħallimt dwar, it-tekniki direzzjoni mill-ġdid inti tgħallmu dwar in video Tommy għall set problema 4, inti tista dirett li għal oqsma differenti, imbagħad ħruġ, dritt hawn, ħruġ programm tiegħek. Huwa essenzjalment simili jirritornaw minn prinċipali, ħlief nużaw ħruġ għax hawn ritorn mhux se tagħmel xejn. Aħna mhux prinċipali, sabiex jirritornaw ma ħruġ tal-programm simili li rridu. Allura aħna tuża l-funzjoni ta 'ħruġ u jagħtih kodiċi żball. Imbagħad hawn aħna waqqafna l-node ġdid il-valur il-qasam, il-kamp i tagħha li tkun ugwali għal i, u allura aħna wajer it up. Waqqafna pointer li jmiss tal-node ġdid għall-punt li l-ewwel, u allura l-ewwel issa se juru l-node ġdid. Dawn il-linji 1 ta 'kodiċi, aħna qed attwalment bini tal-node ġdid. Mhux l-aħħar żewġ linji ta 'din il-funzjoni iżda dawk 1. Inti tista 'attwalment pull out in funzjoni, fis funzjoni helper. Li spiss dak I do huwa, I iġbed it out in funzjoni, I call it xi ħaġa simili node jibnu, u li żżomm il-funzjoni prepend pjuttost żgħir, huwa biss 3 linji imbagħad. I jagħmlu sejħa għall-funzjoni tiegħi node jibnu, u mbagħad I wajer kollox up. Il-ħaġa finali nixtieq biex turi li inti, u jien ser tavżak tagħmel tehmeż u dak kollu li fuq tiegħek, huwa kif jtenni fuq lista. Hemm mazz ta 'modi differenti biex tirrepeti fuq lista. F'dan il-każ, aħna qed tmur biex issib it-tul ta 'lista. Allura aħna tibda bil tul = 0. Dan huwa simili ħafna għall-kitba strlen għal string. Dan huwa dak li nixtieq biex turi li inti, dan għal loop dritt hawn. Huwa jistenna kinda funky; mhuwiex l-soltu i int = 0, i jmiss. I ser tavżak timla l-lakuni hawn għaliex aħna qed out ta 'żmien. Iżda jżomm dan f'moħħu kif inti taħdem fuq psets spellr tiegħek. Listi marbuta, jekk int implimentazzjoni ta 'tabella hash, definittivament se jidħlu fil ferm handy. U wara li dan idiom għall looping fuq affarijiet se jagħmlu l-ħajja ħafna aktar faċli, nisperaw. Kwalunkwe mistoqsijiet, malajr? [Sam] Se inti tibgħat il-sll mimlija u sc? [Hardison] Yeah. I ser jibgħat slides kompluti u mimlija sll munzell u queue.cs. [CS50.TV]