[Powered by Google Translate] [Walkthrough - 6 a leagtar Fadhb]
[Zamyla Chan - Ollscoil Harvard]
Is é [seo CS50. - CS50.TV]
>> Dia duit, gach duine, agus fáilte a chur Walkthrough 6: Huff'n Puff.
I Puff Huff'n cad atá á dhéanamh againn ag dul a bheith ag déileáil le comhad comhbhrúite Huffman
agus ansin puffing sé ar ais ar bun, decompressing mar sin,
ionas gur féidir linn aistriúchán a dhéanamh ó na 0s agus 1s seolann go bhfuil an t-úsáideoir dúinn
agus convert sé ar ais isteach sa téacs bunaidh.
Pset 6 ag dul a bheith deas fionnuar toisc go bhfuil tú ag dul chun roinnt de na huirlisí
a d'úsáid tú i pset 4 agus pset 5 agus de chineál ar le chéile dóibh i 1 coincheap deas néata
nuair a thagann tú chun smaoineamh ar sé.
>> Chomh maith leis sin, fhéadfaí a rá, bhí pset 4 agus 5 na psets is dúshlánaí a bhí againn a thairiscint.
Mar sin, ó anois, ní mór dúinn an pset 1 níos mó i C,
agus ansin tar éis go bhfuil muid ar aghaidh go dtí cláir gréasáin.
Mar sin, comhghairdeas a dhéanamh díbh féin chun dul thar an hump misniúla i CS50.
>> Bogadh ar do Puff Huff'n, tá ár bosca uirlisí seo pset ag dul a bheith crainn Huffman,
mar sin a thuiscint, ní hamháin conas a dénártha crainn obair ach freisin go sonrach crainn Huffman,
conas a bhíonn siad tógtha.
Agus ansin tá muid ag dul go bhfuil a lán de cód dáilte sa pset,
agus beidh muid ag teacht ar a fheiceáil go bhfuil iarbhír roinnt de chód
Ní fhéadfadh muid a bheith in ann a thuiscint go hiomlán go fóill,
agus mar sin beidh na na. comhaid c, ach ansin a gcuid a ghabhann leo. h comhaid
Beidh a thabhairt dúinn go leor tuiscint gur gá dúinn go mbeidh a fhios againn conas a oibríonn na feidhmeanna sin
nó ar a laghad cad iad ceaptha a dhéanamh - a n-ionchuir agus aschuir -
fiú amháin más rud é nach bhfuil a fhios againn cad atá ag tarlú sa bhosca dubh
nó nach thuiscint cad atá ag tarlú sa bhosca dubh laistigh de.
Agus ansin ar deireadh, mar is gnách, tá muid ag déileáil le struchtúir sonraí nua,
pointe cineálacha áirithe nóid sin le rudaí áirithe,
agus mar sin a bheith anseo le peann agus páipéar, ní hamháin don phróiseas dearaidh
agus nuair a bhíonn tú ag iarraidh a figiúr amach conas ba chóir do pset obair
ach freisin le linn debugging.
Is féidir leat GDB taobh do peann agus páipéar agus a chur tú síos cad iad na luachanna,
áit a bhfuil do saighde atá dírithe, agus rudaí mar sin.
>> An Chéad a ligean ar féachaint ar na crainn Huffman.
Tá crainn Huffman crainn dénártha, rud a chiallaíonn go bhfuil gach nód amháin 2 leanaí.
I crainn Huffman é an tréith go bhfuil na luachanna is minice a
Tá ionadaíocht ag an giotán is ísle.
Chonaic muid i samplaí léacht de cód Morse, a chineál comhdhlúite roinnt litreacha.
Má tá tú ag iarraidh aistriú ar A nó E, mar shampla,
bhfuil tú ag aistriú go minic, mar sin in ionad a bheith a bhaint as an sraith iomlán de giotán
leithdháileadh don chineál sin sonraí is gnách, compress tú sé síos go dtí níos lú,
agus ansin na litreacha a bhfuil ionadaíocht chomh minic bhfuil ionadaíocht le giotán níos faide
toisc nach féidir leat deis go nuair a weigh tú amach na minicíochtaí sin le feiceáil na litreacha.
Tá an smaoineamh céanna anseo i gcrainn Huffman
áit a bhfuil muid ag déanamh slabhra, ar chineál an cosán a fháil ar na carachtair áirithe.
Agus ansin na carachtair a bhfuil an mhinicíocht is mó a
ag dul a bheith ionadaíocht na píosaí is ísle.
>> An bealach go bhfuil tú a thógáil crann Huffman
Is trí chur go léir de na carachtair sin le feiceáil sa téacs
agus ríomh an fhigiúir minicíocht, cé chomh minic a láithreoidh siad.
D'fhéadfadh sé seo a bheith ina líon ar cé mhéad uair a bhfuil na litreacha
nó b'fhéidir chéatadán de as na carachtair go léir cé mhéad cosúil gach ceann.
Agus mar sin tá cad a dhéanann tú nuair a bhíonn tú gach ceann de sin amach léarscáil,
ansin tú ag féachaint do na minicíochtaí ísle 2 agus ansin páirt a ghlacadh leo mar deartháireacha
i gcás ansin tá an nód tuismitheoir ina leith ar mhinicíocht a bhfuil an suim a 2 leanbh.
Agus a rá ansin tú de réir an ghnáis go bhfuil an nód chlé,
leanann tú go bhfuil ag tar éis an brainse 0,
agus ansin é an nód rightmost an brainse 1.
Mar a chonaic muid i cód Morse, ba é an gotcha amháin go má bhí tú ach bíp bíp agus an
bhí sé débhríoch.
D'fhéadfadh sé a bheith 1 litir nó d'fhéadfadh sé a bheith ina sraith 2 litir.
Agus mar sin cad a dhéanann Huffman crainn mar gheall ar nádúr na carachtair
nó ar ár carachtair deiridh iarbhír a bheith ar an nód deiridh ar an brainse -
Tagraíonn muid dóibh siúd le duilleoga - de bhua nach féidir a bheith ann aon débhríocht
i dtéarmaí na litreach bhfuil tú ag iarraidh a ionchódú le sraith de píosaí
mar gheall ar áit ar bith ar feadh na píosaí a léiríonn 1 litir
beidh tú trasna ar litir eile ar fad, agus ní mbeidh aon mearbhall ann.
Ach beidh muid ag dul isteach samplaí gur féidir leat guys a fheiceáil i ndáiríre go
in ionad ag insint dúinn ach tú go bhfuil sin fíor.
>> Ligean ar breathnú ar shampla simplí de chrann Huffman.
Tá mé ar shraith anseo go bhfuil 12 carachtair ar fad.
Tá mé 4 Mar a, 6 BS, agus 2 CS.
Bheadh ​​mo chéad chéim a chomhaireamh.
Cé mhéad uair a feiceáil? Dealraíonn sé 4 huaire sa téad.
B cosúil 6 huaire, agus C le feiceáil 2 uair.
Ar ndóigh, tá mé ag dul a rá mé ag baint úsáide B an chuid is mó go minic,
mar sin ba mhaith liom B chun ionadaíocht a dhéanamh leis an líon is ísle de na giotán, an líon is ísle de 0s agus 1s.
Agus ansin tá mé ag dul freisin a bheith ag súil C a cheangal ar an méid is mó de 0s agus 1s chomh maith.
An Chéad bhfuil cad a rinne mé anseo a chur mé iad in ord ardaitheach ó thaobh minicíochta.
Feicimid go bhfuil an C agus an A, iad siúd ar ár 2 minicíochtaí ísle.
Chruthú againn nód tuismitheoir, agus nach bhfuil nód tuismitheoir litir a bhaineann leis,
ach a dhéanann sé go mbeadh minicíocht, a bhfuil an tsuim sin.
Éiríonn an tsuim 2 + 4, a bhfuil 6.
Ansin againn leanúint ar an brainse chlé.
Más rud é go raibh muid ag an nód 6, ansin ba mhaith linn leanúint 0 a fháil chun C
agus ansin 1 a fháil chun A.
Mar sin, anois ní mór dúinn 2 nóid.
Tá an luach 6 agus ansin ní mór dúinn freisin eile nód le luach 6.
Agus mar sin iad siúd 2 ní amháin ar an 2 is ísle ach freisin ach an 2 atá fágtha,
mar sin againn páirt a ghlacadh daoine eile tuismitheoir, leis an tsuim a bheith 12.
Mar sin anseo ní mór dúinn ár Huffman crann
nuair a fháil go B, a bheadh ​​ach an beagán 1
agus ansin a fháil chun a ba mhaith linn a bheith 01 agus ansin C a bhfuil 00.
Mar sin anseo linn a fheiceáil go bunúsach tá muid ag léiríonn na carachtair le ceachtar 1 nó 2 giotán
i gcás ina bhfuil an B, mar a tuaradh, ar an laghad.
Agus bhí ag súil ansin dúinn C go bhfuil an chuid is mó, ach ós rud é tá sé chomh beag sin Huffman crann,
ansin tá an A ionadaíocht freisin ag 2 giotán seachas áit éigin i lár.
>> Díreach chun dul thar sampla eile simplí ar an crann Huffman,
rá agat an teaghrán "Dia duit."
Cad a dhéanann tú é an chéad ba mhaith leat a rá cé mhéad uair a dhéanann H feiceáil i seo?
H cosúil uair amháin agus ansin cosúil e uair amháin agus ansin ní mór dúinn l le feiceáil faoi dhó
agus o feiceáil uair amháin.
Agus mar sin ansin tá súil againn a litir a bheidh ionadaíocht ag an líon is lú de giotán?
[Mac léinn] l. >> L. Yeah. l go bhfuil ceart.
Tá súil againn go l ionadaíocht a dhéanamh ar an líon is lú de giotán
toisc go l úsáidtear an chuid is mó sa téad "Dia duit."
Cad tá mé ag dul a dhéanamh anois go bhfuil a tharraingt amach na nóid.
Tá mé 1, a bhfuil H, agus ansin ceann eile 1, a bhfuil e, agus ansin 1, a bhfuil o -
ceart anois tá mé ag ord a chur orthu - agus ansin 2, a bhfuil l.
Ansin mé a rá go bhfuil an mbealach a thógáil mé crann Huffman chun teacht ar an 2 nóid ag na minicíochtaí a laghad
agus a dhéanfadh iad siblíní a chruthú nód tuismitheoir.
Anseo ní mór dúinn 3 nóid leis an mhinicíocht is ísle. Tá siad ar na 1.
Mar sin anseo a roghnaímid a ceann táimid ag dul chun nasc ar dtús.
Ligean le rá liom a roghnú H agus an e.
Beidh suim na 1 + 1 Is é 2, ach ní hionann sin nód litir a bhaineann leis.
Tá sé ach an luach.
Anois táimid ag breathnú ar na 2 minicíochtaí eile is ísle.
Sin 2 agus 1. D'fhéadfadh a bheith ceachtar de na 2, ach tá mé ag dul a roghnú an ceann seo.
Is é an tsuim 3.
Agus ansin ar deireadh, tá mé ach 2 clé, mar sin ansin go mbeidh 5.
Ansin, ag súil leis anseo, má líontar an ionchódú le sin,
1s i gcónaí go bhfuil an brainse ceart agus 0s an ceann ar chlé.
Ansin ní mór dúinn l ionadaíocht ag beagán ach 1 agus ansin an o de 2
agus go dtagann ansin e ar 2 agus ansin an H síos go dtí 3 giotán.
Mar sin, is féidir leat a tharchur teachtaireacht seo "Dia duit" in ionad iarbhír ag baint úsáide as na carachtair
ag díreach 0s agus 1s.
Mar sin féin, cuimhnigh go bhfuil i roinnt cásanna bhí againn ceangail lenár minicíocht.
D'fhéadfadh muid tar éis dul isteach ceachtar an H agus an o chéad b'fhéidir.
Nó ansin ina dhiaidh sin ar nuair a bhí againn ar an l ionadaíocht ag 2
chomh maith leis an tháinig aon ionadaíocht faoi 2, d'fhéadfadh muid a bheith nasctha amháin.
>> Agus mar sin nuair a sheolann tú an 0s agus 1s, nach iarbhír a ráthú
gur féidir leis an faighteoir a léamh go hiomlán do theachtaireacht ceart as an bat
toisc nach bhféadfadh siad a fhios a cinneadh a rinne tú.
Mar sin, nuair a bhíonn muid ag déileáil le comhbhrú Huffman,
ar bhealach mór dúinn a rá leis an faighteoir ár dteachtaireacht conas a shocraigh muid -
Caithfidh siad a fhios ag roinnt de chineál ar eolas breise
chomh maith leis an teachtaireacht comhbhrúite.
Caithfidh siad a thuiscint conas mar a bhreathnaíonn an crann iarbhír cosúil,
conas a rinne muid i ndáiríre na cinntí sin.
>> Anseo bhí á dhéanamh againn ach samplaí bunaithe ar an líon iarbhír,
ach uaireanta is féidir leat a bheith chomh maith le crann Huffman
bunaithe ar an minicíocht ag a bhfuil an chuma litreacha, agus tá sé ar an bpróiseas céanna.
Anseo tá mé in iúl i dtéarmaí céatadáin nó codáin,
agus mar sin anseo an rud ceannann céanna.
Bhfaighidh mé an 2 is ísle, suim leo, an 2 eile is ísle, suim leo,
go dtí go bhfuil mé crann iomlán.
Cé go raibh muid ábalta é a dhéanamh bíodh bealach, nuair a bhíonn muid ag déileáil le céatadáin,
ciallaíonn sé táimid ag rudaí a roinnt agus déileáil le deachúlacha nó snámhann áit
má tá muid ag smaoineamh faoi struchtúir sonraí de cheann.
Cad a fhios faoi flótaí?
Cad fadhb coiteann nuair a bhíonn muid ag déileáil le flótaí?
[Mac léinn] uimhríocht míchruinn. >> Yeah. Imprecision.
Mar gheall ar imprecision snámhphointe, ar an pset sin a dhéanann muid cinnte
nach bhfuil muid chailleann aon luachanna, ansin táimid ag dul i ndáiríre a bheith ag déileáil leis an líon.
Mar sin, má bhí tú chun smaoineamh ar nód Huffman, má fhéachann tú ar ais go dtí an struchtúr anseo,
má fhéachann tú ar na cinn glas tá sé ina leith ar mhinicíocht a bhaineann leis
chomh maith le pointí sé le nód a d'fhág chomh maith le nód dá cheart.
Agus ansin na cinn dearg ann freisin le carachtar a bhaineann leo.
Ní Táimid ag dul a dhéanamh na cinn ar leith do na tuismitheoirí agus ansin na nóid deiridh,
a thagraíonn againn le duilleoga, ach beidh na díreach tar éis na luachanna NULLComment.
Le haghaidh gach nód beidh orainn carachtar, an siombal gur ionann an nód,
ansin minicíocht chomh maith le pointeoir a leanbh chlé chomh maith lena leanbh ceart.
Ba mhaith leis an duilleoga, atá ag bun an-, chomh maith leideanna nód
lena chlé agus chun a gceart, ach ós rud é nach bhfuil na luachanna sin atá dírithe ar nóid iarbhír,
cad a bheadh ​​a luach a bheith? >> [Mac léinn] NULLComment. >> NULLComment. Go díreach.
Seo sampla de conas a d'fhéadfadh tú ionadaíocht ar an minicíocht i flótaí,
ach táimid ag dul a bheith ag déileáil le sé le slánuimhreacha,
mar sin tá go léir a rinne mé athrú ar an gcineál sonraí a iniúchadh ann.
>> A ligean ar dul ar aghaidh go dtí beagán níos mó de shampla casta.
Ach anois go atá déanta againn na cinn simplí, tá sé ach an bpróiseas céanna.
Gheobhaidh tú an 2 minicíochtaí ísle, suim na minicíochtaí
agus sin é an minicíocht nua do nód tuismitheoir,
a dhíríonn ansin go dtí a chlé leis an brainse 0 agus an ceart leis an brainse 1.
Má tá an teaghrán "Is é seo cs50," ansin ní chomhairtear cé mhéad uair a luaitear T,
h luaite, i, s, c, 5, 0.
Ansin tá cad a rinne mé anseo leis na nóid dearg chuir mé díreach tar éis,
Dúirt mé Tá mé ag dul go bhfuil na carachtair ar deireadh thiar ag bun mo chrann.
Glacfar ag dul a bheith gach ceann de na duilleoga.
Ansin tá cad a rinne mé in eagar mé iad le minicíocht in ord ardaitheach,
agus tá sé seo i ndáiríre ar an mbealach a ndéanann an cód pset sé
Is sórtálfar í dó le minicíocht agus ansin in ord aibítre.
Mar sin, tá sé an líon chéad agus ansin ord aibítre de réir an minicíocht.
Ansin tá cad ba mhaith liom a dhéanamh mhaith liom a fháil an ráta is ísle 2. Sin 0 agus 5.
Ba mhaith liom suim leo, agus sin 2. Ansin, ba mhaith liom leanúint ar aghaidh, teacht ar an chéad 2 is ísle.
Sin iad na 1s dhá, agus iad siúd a bheith ansin 2 chomh maith.
Anois, tá a fhios agam go bhfuil mo chéad chéim eile ag dul a bheith ag teacht isteach an líon is lú,
a bhfuil an T, an 1, agus ansin a roghnú ar cheann de na nóid go bhfuil 2 mar an minicíocht.
Mar sin anseo tá muid 3 roghanna.
Cad tá mé ag dul a dhéanamh ar an sleamhnán bhfuil ach rearrange amhairc orthu ar do shon
ionas gur féidir leat a fheiceáil conas tá mé ag tógáil suas.
Cad é an cód agus do chód dáilte ag dul a dhéanamh a bheith ar an gceann T
leis an nód 0 agus 5.
Mar sin, ansin go leanann suimeanna go 3, agus ansin dúinn ar an bpróiseas.
Tá an 2 agus an 2 anois na cinn is ísle, mar sin ansin iad siúd suim 4.
Tá ag gach duine tar éis go dtí seo? Maith go leor.
Ansin, tar éis go bhfuil muid ar an 3 agus an 3 gur gá iad a chur leis suas,
mar sin arís tá mé ag athrú díreach tar éis é ionas gur féidir leat a fheiceáil amhairc ionas nach ndéanann sé fháil ró-messy.
Ansin ní mór dúinn a 6, agus ansin is é ár n-chéim deiridh anois go bhfuil againn ach 2 nóid
we suim na a dhéanamh ar an fhréamh ár crann, a bhfuil 10.
Agus a dhéanann an uimhir 10 ciall toisc ionadaíocht gach nód,
a luach, a n-uimhir minicíocht, bhí cé mhéad uair a tháinig siad sa téad,
agus ansin ní mór dúinn 5 carachtair in ár téad, ionas go ndéanann ciall.
Má fhéachann muid suas ar conas ba mhaith linn a ionchódú i ndáiríre é,
mar a bhí súil, an i agus an s, a bheith le feiceáil an chuid is mó go minic
Tá ionadaíocht ag an líon is ísle de na píosaí.
>> Bí cúramach anseo.
I crainn Huffman cúrsaí an cás i ndáiríre.
An S chás uachtair atá difriúil ná s CásÍochtair.
Má bhí againn "Is é seo CS50" le ceannlitreacha, ansin bheadh ​​an s CásÍochtair le feiceáil ach amháin faoi dhó,
a bheith go mbeadh nód le 2 mar a luach, agus ansin bheadh ​​chás uachtair S ach aon uair amháin.
Mar sin, ansin bheadh ​​do chrann struchtúir a athrú toisc go bhfuil tú i ndáiríre duilleog breise anseo.
Ach bheadh ​​an tsuim a bheith fós 10.
Sin an méid táimid ag dul i ndáiríre a bheith ag glaoch ar an sheiceála,
an Chomh maith gach ceann de na cionta.
>> Anois go atá clúdaithe againn crainn Huffman, is féidir linn a Léim isteach Puff Huff'n, an pset.
Táimid ag dul chun tús a chur le cuid de na ceisteanna,
agus tá sé seo ag dul a fháil accustomed tú le crainn dhénártha agus conas a oibríonn ar fud seo a leanas:
nóid líníocht, a chruthú do struct Rialú an féin nód,
agus féachaint conas a d'fhéadfadh tú a chur isteach i crann dhénártha, ceann a tá curtha in eagar,
thrasnaíonn sé, agus rudaí mar sin.
Go bhfuil eolas ag dul cinnte chun cabhrú leat nuair a Léim tú isteach sa chuid Puff Huff'n
an pset.
San eagrán caighdeánach an pset, tá do tasc Puff a chur i bhfeidhm,
agus tá sé sa leagan a hacker do chúram a chur i bhfeidhm Huff.
Cad a dhéanann Huff é a thógann sé téacs agus ansin aistríonn sé sé isteach ar an 0s agus 1s,
ionas an próiseas a rinne muid thuas i gcás ina chomhaireamh againn ar an minicíochtaí
agus ansin rinne an crann agus ansin dúirt sé, "Conas is féidir liom a fháil T?"
T Tá ionadaíocht ag 100, rudaí mar sin,
agus ansin bheadh ​​Huff a chur ar an téacs agus ansin aschur go dénártha.
Ach freisin mar tá a fhios againn gur mhaith linn a chumas ár faighteoir an teachtaireacht
a athchruthú an crann céanna, folaíonn sé freisin eolas faoi na comhaireamh minicíocht.
Ansin le Puff tá léargas tugtha comhad dhénártha de 0s agus 1s
agus a thabhairt freisin ar an eolas faoi na minicíochtaí.
Aistrímid gach ceann de na ais 0s agus 1s isteach an teachtaireacht bhunaidh go raibh,
mar sin táimid ag decompressing sin.
Má tá tú ag déanamh an t-eagrán caighdeánach, ní gá duit a chur i bhfeidhm Huff,
mar sin ansin is féidir leat é a úsáid ach an cur i bhfeidhm fhoireann Huff.
Tá treoracha sa spec ar conas a dhéanamh sin.
Is féidir leat a reáchtáil i bhfeidhm d'fhoireann Huff ar gcomhad téacs áirithe
agus a úsáid ansin go aschur mar do ionchur puff.
>> Mar a luaigh mé cheana, ní mór dúinn a lán de cód dáilte le haghaidh an gceann seo.
Tá mé ag dul chun tús a chur ag dul tríd.
Tá mé ag dul a chaitheamh chuid is mó den am ar an. Comhaid h
mar gheall ar an. comhaid c, toisc go bhfuil muid ar an u.
agus foráiltear leis go dúinn leis na fréamhshamhlacha de na feidhmeanna,
ní mór dúinn go hiomlán a thuiscint go díreach -
Más rud é nach dtuigeann tú cad atá ar siúl sa. Comhaid c, ansin nach bhfuil imní iomarca,
ach déan iarracht cinnte a ghlacadh breathnú mar a d'fhéadfadh sé a thabhairt ar roinnt leideanna
agus tá sé úsáideach a fháil a úsáidtear chun léamh daoine eile cód.
>> Ag Breathnú ar an huffile.h, sa tuairimí Dearbhaíonn sé sraith de astarraingt le haghaidh Huffman-códaithe comhaid.
Má théann muid síos, feicimid go bhfuil uasmhéid de 256 siombailí go bhféadfaimis cóid gá le.
Áirítear leis seo go léir na litreacha na haibítre - chás uachtair agus CásÍochtair -
agus ansin siombailí agus uimhreacha, srl
Ansin anseo tá roinnt draíochta a aithint comhad Huffman-códaithe.
Laistigh de chód Huffman mbíonn siad ag dul go bhfuil uimhir draíochta áirithe
bhaineann leis an header.
D'fhéadfadh sé seo cosúil líon ach draíochta randamach,
ach má tá tú aistriú i ndáiríre sé isteach ASCII, ansin spells sé i ndáiríre amach Huff.
Anseo ní mór dúinn a struct le haghaidh comhad Huffman-ionchódaithe.
Níl gach ceann de na saintréithe a bhaineann le comhad Huff.
Ansin síos anseo ní mór dúinn an header le haghaidh comhad Huff, agus mar sin tugaimid Huffeader
in ionad a chur leis an h breise mar fuaimeanna sé mar an gcéanna ar aon nós.
Gleoite.
Tá roinnt draíochta a bhaineann leis.
Má tá sé iarbhír Huff comhad, tá sé ag dul a bheith ar an uimhir suas thuas, an ceann seo draíochta.
Agus ansin beidh sé eagar.
Mar sin, le haghaidh gach siombail, a bhfuil 256,
tá sé ag dul a liostú cad iad na minicíocht na siombailí laistigh de na comhaid Huff.
Agus ansin ar deireadh, ní mór dúinn a sheiceála do na minicíochtaí,
Ba chóir go mbeadh an tsuim sin a minicíochtaí.
Mar sin, go s cad is Huffeader.
Ansin tá roinnt feidhmeanna a sheoladh ar ais an beagán eile sa chomhad Huff
chomh maith le scríobhann le beagán chun an comhad a Huff, agus ansin an fheidhm anseo, hfclose,
go Dúnann i ndáiríre an comhad Huff.
Roimhe sin, bhí muid ag déileáil le díreach fclose díreach,
ach nuair a tá tú comhad Huff, in ionad an fclosing sé
cad a bhfuil tú ag dul i ndáiríre a dhéanamh ná hfclose agus é a hfopen.
Tá na feidhmeanna sonracha ar na comhaid Huff go bhfuil muid ag dul a bheith ag déileáil leis.
Ansin anseo a léamh againn sa cheanntásc agus ansin an header scríobh.
>> Díreach ag léamh an. H comhad is féidir linn a de chineál ar fháil tuiscint ar cad a d'fhéadfadh comhad Huff a bheith,
cad saintréithe tá sé, gan iarbhír ag dul isteach sa huffile.c,
a, má táimid Léim i, tá dul chun bheith ina beagán níos casta.
Tá sé go léir an comhad I / O déileáil anseo le leideanna.
Anseo feicimid go nuair a tugaimid hfread, mar shampla, tá sé fós ag plé le fread.
Níl muid ag fáil réidh de na feidhmeanna sin go hiomlán, ach táimid a sheoladh siúd atá le glacadh de chúram
taobh istigh an comhad Huff in ionad a dhéanamh ar fad é féin.
Is féidir leat glaoch a scanadh tríd an má tá tú aisteach
agus dul agus craiceann an ciseal ar ais le beagán.
>> Is é an comhad seo chugainn go bhfuil muid ag dul chun breathnú ar tree.h.
Sula i sleamhnáin an Walkthrough dúirt muid táimid ag súil nód Huffman
agus rinne muid nód struct Rialú an.
Táimid ag súil sé go bhfuil siombail, minicíocht, agus ansin 2 réaltaí nód.
Sa chás seo cad tá muid ag déanamh seo go bunúsach mar an gcéanna
ach amháin in ionad an nód táimid ag dul a glaoch orthu crainn.
Tá feidhm go nuair a ghlaonn tú a dhéanamh crann tuairisceáin sé tú pointeoir crann.
Ar ais go dtí speller, nuair a bhí tú ag déanamh nód nua
dúirt tú nód * focal nua = malloc (deachúlach) agus rudaí mar sin.
Go bunúsach, tá mktree ag dul a bheith ag déileáil le sin duit.
Mar an gcéanna, nuair is mian leat a bhaint crann,
mar sin tá go bunúsach freeing an crann nuair a bhíonn tú ag déanamh leis,
in ionad go sonrach ag iarraidh saor in aisce ar sin, tá tú i ndáiríre ag dul díreach a bhaint as an fheidhm rmtree
nuair a théann tú ar an pointeoir leis an crann agus ansin beidh tree.c cúram a ghlacadh de sin duit.
>> Táimid i tree.c.
Táimid ag súil na feidhmeanna céanna ach amháin a fheiceáil i bhfeidhm chomh maith.
Mar súil againn, nuair a ghlaonn tú mktree mallocs sé an méid crann i pointeoir,
initializes gach ceann de na luachanna leis an luach NULLComment, agus mar sin 0s nó NULLs,
agus tuairisceáin ansin an pointeoir leis an crann go bhfuil tú malloc'd díreach a thabhairt duit.
Seo nuair a ghlaonn tú a bhaint crann a dhéanann sé ar dtús cinnte nach bhfuil tú ag freeing dúbailte.
Déanann sé cinnte go bhfuil tú i ndáiríre crann gur mian leat a bhaint de.
Anseo mar gheall ar áireamh crann, freisin, a leanaí,
cad a dhéanann sé seo iarrann sé go hathchúrsach bhaint crann ar an nód clé den crann
chomh maith leis an nód ceart.
Sula FreeS sé an tuismitheoir, ní mór é go saor in aisce do na páistí chomh maith.
Tuismitheoir freisin idirmhalartaithe le root.
An tuismitheoir chéad uair riamh, mar sin cosúil leis an mór-mór-mór-mór-seanathair
nó crann seanmháthair, an chéad ní mór dúinn go saor in aisce síos na leibhéil ar dtús.
Mar sin, lean go dtí an bun, saor in aisce dóibh siúd, agus ansin teacht ar ais ar bun, saor in aisce dóibh siúd, etc
Mar sin, tá go crann.
>> Anois, táimid ag foraoise.
Foraoise nuair a áit tú gach ceann de do crann Huffman.
Tá sé seo ag rá go bhfuil muid ag dul chun rud éigin a bheith ar a dtugtar ar bun
go bhfuil a pointeoir le crann chomh maith le pointeoir chuig breacadh ar a dtugtar seo chugainn.
Cad a struchtúr den chineál seo cuma mhaith?
Deir sé de chineál ar sé thar ann.
Ceart thar anseo.
Tá liosta nasctha.
Feicimid go bhfuil nuair atá againn ar bun tá sé cosúil le liosta nasctha de plots.
Tá foraoise a shainmhínítear mar liosta nasctha de plots,
agus mar sin struchtúr na foraoise táimid ag dul ach go bhfuil pointeoir ar ár breacadh an chéad
agus go bhfuil plota crann laistigh nó in áit pointí le crann
agus pointí ansin an plota eile, mar sin de agus mar sin de.
Chun a dhéanamh foraoise tugaimid mkforest.
Ansin tá roinnt feidhmeanna go leor úsáideach anseo.
Tá Pioc áit a théann tú i foraoise agus ansin tá an luach ar ais a * Crann,
pointeoir le crann.
Cad a bheidh Pioc dhéanamh beidh sé dul isteach san fhoraois go bhfuil tú dírithe ar
ansin bain crann leis an mhinicíocht is ísle as an bhforaois
agus ansin a thabhairt duit an pointeoir leis an crann.
Nuair a ghlaonn tú phiocadh, ní bheidh an crann ann san fhoraois níos mó,
ach tá an luach ar ais an pointeoir leis an crann.
Ansin tá tú plandaí.
Ar choinníoll go gcuireann tú i pointeoir le crann go bhfuil minicíocht neamh-0,
cad a dhéanfaidh gléasra dhéanamh ná a thógfaidh sé ar an bhforaois, an crann a ghlacadh, agus plandaí taobh istigh crann na foraoise.
Anseo atá againn rmforest.
Cosúil a bhaint crann, rud a freed go bunúsach i ngach ceann dár crainn dúinn,
bhaint foraoise beidh gach rud saor in aisce atá san fhoraois.
>> Má táimid i forest.c, beidh orainn a bheith ag súil a fheiceáil ar a laghad 1 ordú rmtree in ann,
mar gheall ar cuimhne saor in aisce san fhoraois má tá crainn foraoise ann,
ansin ar deireadh thiar tá tú ag dul a bheith a bhaint na crainn chomh maith.
Má táimid i forest.c, ní mór dúinn ár mkforest, a bhfuil mar táimid ag súil.
Táimid rudaí malloc.
Táimid thúsú an plota den chéad uair sa bhforaois mar NULLComment mar tá sé folamh chun tús a chur leis,
ansin linn a fheiceáil Pioc, a tuairisceáin an crann leis an meáchan is ísle, an mhinicíocht is ísle,
agus faigheann ansin réidh go nód ar leith a dhíríonn ar an crann agus an ceann eile,
sin a thógann sé go amach as an liosta nasctha na foraoise.
Agus ansin anseo tá muid plandaí, lena gcuirtear crann isteach ar an liosta nasctha.
Cén foraoise é nach gcoinníonn sé nicely in eagar sé dúinn.
Agus ansin ar deireadh, ní mór dúinn rmforest agus, mar a bhí súil, ní mór dúinn rmtree ar a dtugtar ann.
>> Ag Breathnú ar an cód dáilte go dtí seo, bhí huffile.c is dócha go mór fada an deacra a thuiscint,
ach na comhaid eile a bhí féin deas simplí a leanúint.
Le ár n-eolas ar leideanna agus liostaí nasctha agus den sórt sin,
bhí muid in ann a leanúint go maith go leor.
Ach tá go léir is gá dúinn a dhéanamh i ndáiríre cinnte go bhfuil muid a thuiscint go hiomlán ar an. H comhaid
mar is gá duit a bheith ag glaoch na feidhmeanna sin, déileáil leis na luachanna ar ais,
sin a dhéanamh cinnte go dtuigeann tú go hiomlán cad atá ag dul a dhéanamh
aon uair a ghlaonn tú ar cheann de na feidhmeanna sin.
Ní Ach a thuiscint i ndáiríre taobh istigh de sé go leor riachtanach toisc go bhfuil muid siúd. Comhaid h.
Tá 2 níos mó comhaid fágtha inár cód dáilte.
>> A ligean ar breathnú ar Dumpáil.
Dumpáil ag a comment anseo thógann comhad Huffman-comhbhrúite
agus ansin aistríonn agus dumps a chuid ábhar amach.
Anseo feicimid go tá ag iarraidh é hfopen.
Tá an cineál scáthánú chun comhaid * tiúnála fopen,
agus ansin a théann tú ar an eolas.
Tá sé beagnach mar an gcéanna ach amháin in áit * comhad tú ag dul i Huffile;
in ionad fopen bhfuil tú ag dul i hfopen.
Anseo léaghthar san header an chéad, a bhfuil de chineál ar cosúil leis an gcaoi a léamh againn sa cheanntásc
le haghaidh comhad bitmap.
Cad táimid ag déanamh anseo seiceáil a fheiceáil cé acu an t-eolas header
Tá an uimhir draíochta ceart go léiríonn go bhfuil sé iarbhír Huff comhad,
ansin gach ceann de na seiceálacha a dhéanamh cinnte go bhfuil an comhad go bhfuil muid ag oscailt comhad iarbhír huffed nó nach bhfuil.
Cad é seo a dhéanann é aschur sé an minicíochtaí de gach ceann de na siombailí gur féidir linn a fheiceáil
laistigh de teirminéal isteach tábla grafacha.
Tá an chuid seo ag dul a bheith úsáideach.
Tá sé rud beag agus léann giotán ngiotán isteach giotán athraitheach agus ansin priontaí sé amach.
Mar sin má bhí mé Dumpáil chun glaoch ar hth.bin, a bhfuil mar thoradh ar huffing comhad
ag baint úsáide as an réiteach foirne, ba mhaith liom seo a fháil.
Tá sé seo outputting gach ceann de na carachtair agus ansin a chur ar an minicíocht ag a láithreoidh siad.
Má táimid, tá an chuid is mó acu 0s ach amháin i gcás seo: H, a bhfuil an chuma faoi dhó,
agus ansin T, a bhfuil an chuma uair amháin.
Agus ansin anseo tá an teachtaireacht iarbhír i 0s agus 1s.
Má táimid ar hth.txt, atá is dócha an teachtaireacht bunaidh huffed sin,
táimid ag súil chun roinnt HS agus TS in ann.
Go sonrach, táimid ag súil a fheiceáil ach 1 T agus 2 HS.
Anseo tá muid i hth.txt. Tá sé go deimhin HTH.
San áireamh ann, cé nach féidir linn é a fheiceáil, tá carachtar líne nua.
Is é an hth.bin comhad Huff ionchódú an carachtar líne nua chomh maith.
Anseo mar tá a fhios againn go bhfuil an t-ordú HTH agus ansin líne nua,
féidir linn a fheiceáil go bhfuil an H ionadaíocht dócha ach 1 amháin
agus ansin tá an T dócha 01 agus ansin tá an H seo chugainn 1 mar aon le
agus ansin ní mór dúinn a líne nua le fios ag dhá 0s.
Cool.
>> Agus ansin ar deireadh, toisc go bhfuil muid ag déileáil le éagsúla. C agus. Comhad h,
táimid ag dul chun argóint casta go leor a bheith ar an tiomsaitheoir,
agus mar sin anseo tá muid Makefile a dhéanann Dumpáil ar do shon.
Ach i ndáiríre, tá tú chun dul faoi a dhéanamh do chomhad puff.c féin.
An Makefile Ní iarbhír déileáil le déanamh puff.c ar do shon.
Táimid ag fágáil go bhfuil suas chun tú a chur in eagar ar an Makefile.
Nuair a théann tú a ordú mhaith a dhéanamh ar fad, mar shampla, déanfaidh sé iad go léir ar do shon.
Thig leat chun breathnú ar na samplaí de Makefile ón pset am atá thart
chomh maith le dul amach ar an gceann a fheiceáil conas a d'fhéadfá a bheith in ann a dhéanamh do chomhad Puff
trí eagarthóireacht an Makefile.
Sin mar gheall air ar ár cód dáilte.
>> Nuair atá againn gotten tríd sin, ansin tá anseo ach eile meabhrúchán
ar conas a bhfuil muid ag dul a bheith ag déileáil leis an nóid Huffman.
Ní Táimid ag dul a bheith ag iarraidh iad a nóid níos mó; táimid ag dul a bheith ag glaoch orthu crainn
nuair a táimid ag dul a bheith thar ceann a siombail le Char,
a n-minicíocht, ar an líon tarluithe, le slánuimhir.
Táimid ag úsáid a bhaint as mar tá sé níos cruinne ná snámhphointe.
Agus ansin ní mór dúinn eile pointeoir leis an leanbh chlé chomh maith leis an leanbh ceart.
A foraoise, mar a chonaic muid, ach liosta nasctha crann.
I ndeireadh na dála, nuair a bhíonn muid ag tógáil suas ár Huff comhad,
ba mhaith linn ár n-foraoise a bhfuil ach 1 crann -
1 crann, 1 fréimhe le páistí éagsúla.
Níos luaithe ar an nuair a bhí a dhéanamh againn ach ár gcrainn Huffman,
thosaigh muid amach trí chur gach ceann de na nóid isteach ar ár scáileán
agus ag rá táimid ag dul go bhfuil na nóid,
deireadh thiar tá siad ag dul a bheith ar na duilleoga, agus is é seo a n-tsiombail, is é seo a n-minicíocht.
In ár foraoise má tá muid ach 3 litir, go bhfuil foraoise de 3 crainn.
Agus ansin mar a théann muid ar aghaidh, nuair a chuir muid an tuismitheoir chéad uair,
rinne muid foraoise de 2 crainn.
Bhaint againn 2 de na leanaí sin as ár foraoise agus ansin ionad sé le nód tuismitheoir
go raibh iad siúd 2 nóid mar leanaí.
Agus ansin ar deireadh, ár n-chéim dheireanach le déanamh ár shampla leis an Mar, BS, agus CS
bheadh ​​a dhéanamh ar an tuismitheoir deiridh,
agus mar sin ansin bheadh ​​go bhfuil ár líon iomlán na crainn san fhoraois a thabhairt go dtí an 1.
An bhfuil gach duine a fheiceáil conas a thosaíonn tú amach le crainn éagsúla i do foraoise
agus deireadh suas le 1? Maith go leor. Cool.
>> Cad a theastaíonn a dhéanamh le haghaidh Puff?
Cad is gá dúinn a dhéanamh ná a chinntiú, mar i gcónaí, a thugann siad dúinn an cineál ceart ionchur
ionas gur féidir linn a reáchtáil i ndáiríre an gclár.
Sa chás seo tá siad ag dul a bheith a thabhairt dúinn i ndiaidh a chéad argóint ordú-líne
2 níos mó: an comhad a ba mhaith linn a decompress agus an t-aschur an chomhaid decompressed.
Ach nuair a théimid ar cinnte go bhfuil siad pas a fháil dúinn i méid ceart luachanna,
ba mhaith linn a chinntiú go bhfuil an t-ionchur comhad Huff nó nach bhfuil.
Agus ansin nuair a ráthaíocht againn go bhfuil sé comhad Huff, ansin ba mhaith linn chun ár crann,
a thógáil suas an crann den sórt sin a oireann sé an crann go bhfuil an duine a chuir an teachtaireacht tógtha.
Ansin, tar éis a thógáil againn an crann, ansin is féidir linn déileáil leis an, 0s agus 1s gur éirigh siad i
leanúint leis na ar feadh ár n-crann mar tá sé comhionann,
agus ansin scríobh an teachtaireacht amach, an giotán a léirmhíniú ar ais i carachtair.
Agus ansin ag an deireadh toisc go bhfuil muid ag déileáil le leideanna anseo,
ba mhaith linn a dhéanamh cinnte go nach bhfuil againn aon leaks cuimhne
agus go bhfuil muid gach rud saor in aisce.
>> Is é a chinntiú ar úsáid chuí hata aois dúinn faoin am seo.
Glacann muid i ionchur, a bhfuil ag dul a bheith an t-ainm an chomhaid a puff,
agus ansin a shonrú a bhfuil aschur,
mar sin an t-ainm an chomhaid le haghaidh an t-aschur puffed, a bheidh an comhad téacs.
Sin úsáid. Agus anois ba mhaith linn a chinntiú go bhfuil an t-ionchur huffed nó nach bhfuil.
Ag smaoineamh ar ais, bhí rud ar bith sa chód dáilte a d'fhéadfadh cabhrú linn
le tuiscint cibé an bhfuil comhad huffed nó nach bhfuil?
Bhí eolas i huffile.c faoin Huffeader.
Tá a fhios againn go bhfuil gach comhad Huff a Huffeader a bhaineann leis le roinnt draíochta
chomh maith le sraith de na minicíochtaí do gach siombail
chomh maith le sheiceála.
Tá a fhios againn go bhfuil, ach thóg muid freisin le breathnú ar dump.c,
ina raibh léamh i gcomhad Huff.
Agus mar sin a dhéanamh sin, bhí sé a sheiceáil cibé an raibh huffed sé i ndáiríre nó nach bhfuil.
Mar sin, b'fhéidir gur féidir linn úsáid a bhaint as dump.c mar struchtúr le haghaidh ár puff.c.
Ar ais go pset 4 nuair a bhí againn an chomhaid comhad a chóipeáil i triples RGB
agus a léirmhíniú againn gur le haghaidh Whodunit agus Resize,
mar an gcéanna, tá cad a fhéadfaí tú a dhéanamh a reáchtáil díreach leis an ordú mar cp dump.c puff.c
agus úsáid roinnt de chód ann.
Mar sin féin, níl sé ag dul a bheith chomh simplí de phróiseas
chun aistriú do dump.c i puff.c,
ach ar a laghad tugann sé tú áit éigin a thosú
maidir le conas a chinntiú go bhfuil an t-ionchur huffed iarbhír nó nach
chomh maith le roinnt rudaí eile.
Táimid tar éis a chinntiú úsáide cuí agus chinntigh go bhfuil an t-ionchur huffed.
Gach uair go atá déanta againn go bhfuil déanta againn ár n-seiceáil earráid cuí,
mar sin comhairimh agus quitting an fheidhm má tharlaíonn teip éigin, má tá fadhb ann.
>> Anois tá cad ba mhaith linn a dhéanamh a thógáil an crann iarbhír.
Má táimid i Foraoise, tá 2 príomhfheidhmeanna
go bhfuil muid ag dul a iarraidh a bheith an-eolach.
Níl na plandaí feidhm Boole go plandaí crann minicíocht neamh-0 taobh istigh dár foraoise.
Agus mar sin tá a théann tú i pointeoir le foraoise agus le pointeoir le crann.
Ceist tapa: Cé mhéad foraoisí tú nuair a bhíonn tú ag tógáil crann Huffman?
Is é ár foraoise cosúil ár chanbhás, ceart?
Mar sin, táimid ag dul ach go bhfuil 1 foraoise, ach táimid ag dul go bhfuil crainn éagsúla.
Mar sin, sula ghlaonn tú plandaí, tá tú ag dul is dócha a iarraidh a dhéanamh do foraoise.
Tá ordú chun má fhéachann tú isteach i forest.h ar conas is féidir leat a dhéanamh foraoise.
Is féidir leat a crann. Tá a fhios againn conas a dhéanamh sin.
Agus ansin is féidir leat a roghnú freisin crann ó na foraoise,
deireadh a chur le crann leis an meáchan is ísle agus a thabhairt duit an pointeoir leis sin.
Ag smaoineamh ar ais go dtí nuair a bhí á dhéanamh againn ar na samplaí féin,
nuair a bhí ag tarraingt orainn sé amach, ní mór dúinn ach díreach leis na naisc.
Ach anseo in ionad a chur go díreach ar na naisc,
smaoineamh ar é níos mó mar tá tú ag removing 2 de na nóid agus ansin ina ionad ag ceann eile.
A chur in iúl go bhfuil i dtéarmaí piocadh agus plandáil,
bhfuil tú ag piocadh 2 crainn agus ansin plandáil crann eile
go bhfuil na 2 crainn a roghnaigh tú mar leanaí.
Chun cur leis crann Huffman, is féidir leat léamh i na siombailí agus na minicíochtaí d'fhonn
toisc go dtugann an Huffeader go a thabhairt duit,
Tugann tú le sraith de na minicíochtaí.
Mar sin, is féidir leat dul ar aghaidh agus díreach aon rud neamhaird a dhéanamh leis an 0 ann
toisc nach bhfuil muid ag iarraidh 256 duilleoga ag an deireadh é.
Ba mhaith linn ach líon na duilleoga go bhfuil carachtair
a úsáidtear iarbhír sa chomhad.
Is féidir leat léamh sna siombailí, agus gach ceann de na siombailí a bhfuil neamh-0 minicíochtaí,
iad siúd ag dul a bheith crainn.
Cad féidir leat a dhéanamh gach uair a léigh tú i siombail minicíocht neamh-0,
is féidir leat plandaí go crann san fhoraois.
Nuair atá tú a plandaí na crainn san fhoraois, is féidir leat páirt a ghlacadh na crainn mar deartháireacha,
mar sin dul ar ais ar plandáil agus ag piocadh nuair a roghnaigh tú 2 agus ansin plandaí 1,
i gcás go bhfuil 1 go planda tú tuismitheoir an 2 leanbh a roghnaigh tú.
Dá bhrí sin tá ansin do toradh deiridh ag dul a bheith ina crann amháin i do foraoise.
Sin é an chaoi tú a thógáil do chrann.
>> Tá roinnt rudaí a d'fhéadfadh dul go mícheart anseo
toisc go bhfuil muid ag déileáil le déanamh crainn nua agus déileáil le leideanna agus rudaí mar sin.
Sula nuair a bhí muid ag déileáil le leideanna,
aon uair a malloc'd againn bhíomar ag iarraidh a dhéanamh cinnte nach raibh sé ar ais chugainn le luach pointeoir NULLComment.
Mar sin, ag céimeanna éagsúla laistigh den phróiseas seo tá dul chun bheith roinnt cásanna
nuair a d'fhéadfadh do chlár theipeann.
Cad ba mhaith leat a dhéanamh ná ba mhaith leat a dhéanamh cinnte go bhfuil tú ag déileáil leis na earráidí,
agus sa spec a deir sé iad a láimhseáil gracefully,
mar sin is maith phriontáil amach teachtaireacht chuig an úsáideoir ag insint dóibh cén fáth go bhfuil an clár a scor
agus ansin scor go pras é.
Chun seo a dhéanamh handling earráid, cuimhnigh gur mian leat é a sheiceáil
gach uair amháin go bhféadfadh go mbeadh teip.
Gach uair amháin go bhfuil tú ag déanamh pointeoir nua
ba mhaith leat a dhéanamh cinnte go bhfuil go rathúil.
Sula cad a úsáid againn a dhéanamh ná a dhéanamh pointeoir nua agus malloc é,
agus ansin ba mhaith linn a sheiceáil cibé an bhfuil an pointeoir NULLComment.
Mar sin, tá ag dul a bheith ar roinnt cásanna inar ach is féidir leat a dhéanamh,
ach uaireanta tá tú ag glaoch i ndáiríre ar fheidhm
agus laistigh feidhme sin, go bhfuil an ceann a tá ag déanamh an mallocing.
Sa chás sin, má táimid ar ais go dtí roinnt de na feidhmeanna laistigh den chód,
Tá cuid acu feidhmeanna Boole.
I gcás teibí má táimid tar éis feidhm Boole a dtugtar foo,
go bunúsach, is féidir linn glacadh leis go chomh maith le a dhéanamh is cuma cad a dhéanann foo,
ós rud é tá sé ina fheidhm Boole, tuairisceáin sé fíor nó bréagach -
fíor má éiríonn leo, bréagach más rud é nach bhfuil.
Mar sin, ba mhaith linn a sheiceáil cibé an bhfuil an luach ar ais foo fíor nó bréagach.
Má tá sé bréagach, ciallaíonn sé sin go bhfuil muid ag dul a iarraidh a phriontáil de shaghas éigin teachtaireacht
agus scor ansin ar an gclár.
Cad ba mhaith linn a dhéanamh ná a sheiceáil leis an luach ar ais foo.
Má fhilleann foo bréagach, ansin a fhios againn gur bhain muid roinnt de chineál ar earráid
agus ní mór dúinn a scor ár gclár.
Is bealach chun é seo a bhfuil riocht ina bhfuil an fheidhm iarbhír féin do riocht.
Abair foo Bíonn i x.
Is féidir linn a bheith mar choinníoll más rud é (foo (x)).
Go bunúsach, ciallaíonn sé go más rud é ag deireadh na forghníomhaitheach foo tuairisceáin sé fíor,
ansin is féidir linn é seo a dhéanamh toisc go bhfuil an fheidhm chun meastóireacht a dhéanamh foo
d'fhonn meastóireacht a dhéanamh ar riocht ar fad.
Mar sin, ansin go bhfuil conas is féidir leat rud éigin a dhéanamh más rud é ar ais an fheidhm fíor agus tá sé rathúil.
Ach nuair a bhíonn tú seiceáil earráid, ba mhaith leat ach amháin a scor má tuairisceáin do fheidhm bréagach.
Cad a d'fhéadfaí tú a dhéanamh ná a chur díreach ar == bréagach nó díreach add a Bang os comhair é
agus ansin caithfidh tú más rud é (! foo).
Laistigh den chomhlacht sin riocht a bheadh ​​agat gach ceann de na láimhseáil earráid,
mar sin is maith, "Níorbh fhéidir seo a chruthú crann" agus ansin 1 nó rud éigin mar sin ar ais.
Cad a dhéanann sin, cé go bhfuil, go cé go ais foo bréagach -
Abair foo tuairisceáin fíor.
Ansin, ní gá duit a ghlaoch foo arís. Sin míthuiscint choitianta.
Toisc go raibh sé i do riocht, tá sé meastóireacht cheana féin,
mar sin agat cheana féin an toradh má tá tú ag baint úsáide as a dhéanamh ar chrann nó rud éigin mar sin
nó gléasra nó Pioc nó rud éigin.
Tá sé cheana féin go luach. Tá sé chun báis cheana féin.
Mar sin tá sé úsáideach a úsáid feidhmeanna Boole mar choinníoll
mar gheall ar cibé acu atá nó nach bhfuil tú a fhorghníomhú iarbhír an comhlacht ar an lúb,
fhorghníomhú sé an fheidhm aon nós.
>> Is é ár dara chéim dheireanach scríobh an teachtaireacht a chur chuig an gcomhad.
Nuair a muid ag cur an crann Huffman, ansin scríobh an teachtaireacht a chur chuig an comhad a deas simplí.
Tá sé deas simplí anois a leanúint ach an 0s agus 1s.
Agus mar sin de réir an ghnáis a fhios againn gur i gcrann Huffman na 0s léiríonn fhág
agus léireofar an 1s ceart.
Mar sin, má ansin léigh tú i giotán ngiotán, gach uair go bhfaigheann tú 0
Feicfidh tú a leanúint ar an brainse ar chlé, agus ansin gach uair a léigh tú i 1
bhfuil tú ag dul a leanúint ar an brainse ceart.
Agus ansin tá tú ag dul chun leanúint ar aghaidh go dtí go bhuail tú duilleog
mar go bhfuil na duilleoga ag dul a bheith ag deireadh na brainsí.
Conas is féidir linn a rá cé acu againn hit duille nó nach bhfuil?
Dúirt muid é roimh.
[Mac léinn] Má tá na leideanna NULLComment. >> Yeah.
Is féidir linn a insint má tá muid bhuail duille má tá na leideanna le crainn araon chlé agus ar dheis NULLComment.
Perfect.
Tá a fhios againn gur mhaith linn a léamh i giotán ngiotán isteach inár comhad Huff.
Mar a chonaic muid roimh i dump.c, cad a rinne siad iad a léamh i giotán ngiotán a ionchur sa chomhad Huff
agus a phriontáil díreach amach cad a bhí na píosaí.
Ní Táimid ag dul a bheith á dhéanamh sin. Táimid ag dul a bheith ag déanamh rud éigin go bhfuil beagán níos casta.
Ach cad is féidir linn a dhéanamh is féidir linn a ghlacadh go beagán de chód a léann i do na giotán.
Anseo atá againn an beagán slánuimhir a ionadaíonn do na giotán atá ann faoi láthair go bhfuil muid ar.
Tógann sé seo ar chúram iterating gach ceann de na píosaí sa chomhad go dtí go bhuail tú ar deireadh an chomhaid.
Bunaithe ar sin, ansin bhfuil tú ag dul a iarraidh go bhfuil roinnt de chineál ar iterator
chun Traverse do chrann.
Agus atá bunaithe ansin ar cibé an bhfuil an beagán 0 nó 1,
bhfuil tú ag dul a iarraidh chun bogadh ceachtar go iterator ar chlé nó é a bhogadh leis an gceart
léir ar an mbealach go dtí go bhuail tú duille, mar sin an bealach ar fad go dtí an nód go bhfuil tú ar
Ní pointe do nóid ar bith níos mó.
Cén fáth ar féidir linn é seo a bhfuil comhad Huffman ach ní cód Morse?
Toisc i cód Morse níl le beagán de athbhrí.
D'fhéadfadh muid a bheith cosúil le, OH go fóill, tá muid buailte litir feadh na slí, agus mar sin b'fhéidir is é seo ár litir,
ach má leanamar ach beagán níos faide, ansin ba mhaith linn a bheith buailte litir eile.
Ach ní ar sin dul chun tarlú i ionchódú Huffman,
ionas gur féidir linn a bheith cinnte go bhfuil an t-aon bhealach go bhfuil muid ag dul a bhuail le carachtar
Is é má tá an nód leanaí an chlé agus ar dheis NULLComment.
>> Mar fhocal scoir, ba mhaith linn go saor in aisce i ngach ceann dár chuimhne.
Ba mhaith linn an dá gar an comhad Huff go atá muid ag déileáil le
chomh maith a bhaint le gach ceann de na crainn sa foraoise.
Bunaithe ar do chur i bhfeidhm, tá tú ag dul is dócha a iarraidh a glaoch a bhaint foraoise
in ionad dul go hiarbhír tríd gach ceann de na crainn tú féin.
Ach má rinne tú aon chrainn sealadacha, beidh tú ag iarraidh go saor in aisce go.
Tá a fhios agat do chód is fearr, sin a fhios agat áit a bhfuil tú a leithdháileadh cuimhne.
Agus mar sin má théann tú i, tús a fiú Rialú F'ing do malloc,
féachaint ar aon uair is tú malloc agus a chinntiú go saor tú gach ceann de sin
ach ansin ag dul díreach trí do chód,
tuiscint a fháil ar an áit a bheadh ​​agat a leithdháileadh cuimhne.
De ghnáth, go dtiocfadh leat ach a rá, "Ag deireadh an comhad a bhfuil mé ag dul díreach foraoise a bhaint ar mo foraoise,"
mar sin soiléir go bunúsach go cuimhne, saor in aisce go,
"Agus ansin tá mé ag dul freisin chun an comhad a dhúnadh agus ansin tá mo chlár ag dul a scor."
Ach is é sin an t-am amháin a Éirigh do chlár?
Níl, mar gheall ar uaireanta d'fhéadfadh sé go raibh earráid a tharla.
B'fhéidir nach raibh muid ábalta a oscailt comhad nó nach bhféadfaí a dhéanamh eile crann linn
nó a tharla de shaghas éigin earráid sa phróiseas leithdháilte cuimhne agus mar sin ar ais í NULLComment.
Tharla earráid a tharla agus ansin ar ais linn agus éirí as an tobac.
Mar sin, ansin ba mhaith leat a dhéanamh cinnte go bhfuil aon uair is féidir gur féidir do chlár éirí as an tobac,
ba mhaith leat a saor in aisce ar fad do chuimhne ann.
Níl sé ag dul ach a bheith ag an deireadh an-an fheidhm is mó a scor tú do chód.
Ba mhaith leat chun breathnú ar ais go dtí ngach cás go bhfuil do chód a d'fhéadfadh ar ais d'fhéadfadh a bheith ró-luath
agus déanann ansin saor in aisce is cuma cén chuimhne ciall.
Abair go raibh ar a dtugtar leat a dhéanamh foraoise agus ar ais bréagach.
Ansin tú nach mbeidh gá is dócha a bhaint do foraoise
toisc nach bhfuil tú ag foraoise go fóill.
Ach ag gach pointe sa chód áit a d'fhéadfadh tú ar ais ró-luath
ba mhaith leat a dhéanamh cinnte go saor in aisce tú aon chuimhne is féidir.
>> Mar sin, nuair a bhíonn muid ag déileáil le freeing cuimhne agus a bhfuil leaks féideartha,
ba mhaith linn a ní amháin a úsáid ár breithiúnas agus ár loighic
ach a úsáid freisin Valgrind a chinneadh an againn freed i ngach ceann dár chuimhne i gceart nó nach bhfuil.
Is féidir leat siúl ceachtar Valgrind ar Puff agus ansin caithfidh tú chun pas a fháil freisin
an líon ceart ordú-líne argóintí a Valgrind.
Is féidir leat siúl go bhfuil, ach tá an t-aschur le beagán cryptic.
Táimid tar éis gotten le beagán a úsáidtear chun é le speller, ach is gá dúinn fós cabhair le beagán níos mó,
mar sin ag rith ansin é le bratacha cúpla níos mó cosúil leis an sceitheadh-seiceáil = iomlán,
a thabhairt is dócha dúinn roinnt aschur níos mó cabhrach ar Valgrind.
>> Ansin tá eile tip úsáideach nuair a bhíonn tú debugging an t-ordú diff.
Is féidir leat rochtain a fháil ar na foirne i bhfeidhm Huff, á reáchtáil go ar chomhad téacs,
agus aschur ansin é le comhad dénártha, a dénártha Huff comhad, a bheith ar leith.
Ansin, má ritheann tú do puff féin ar an gcomhad dénártha,
ansin go hidéalach, tá do chomhad téacs outputted ag dul a bheith comhionann
leis an ceann bunaidh a ritheadh ​​tú isteach
Anseo tá mé ag baint úsáide as hth.txt mar an sampla, agus sin an ceann a labhair faoi i do spec.
Sin literally ach HTH agus ansin líne nua.
Ach bhraitheann cinnte saor in aisce agus moltar duit cinnte chun úsáid a bhaint as samplaí níos faide
le haghaidh do chomhad téacs.
>> Is féidir leat a chur fiú a lámhaigh ag b'fhéidir compressing agus ansin decompressing
roinnt de na comhaid a d'úsáid tú i speller cosúil le Cogadh agus Síochána
nó Jane Austen nó rud éigin mar sin - a bheadh ​​de chineál ar cool - nó Cumhachtaí Austin,
cineál déileáil le comhaid níos mó toisc nach ba mhaith linn teacht síos dó
má úsáidtear muid an uirlis seo chugainn anseo, LS-l.
Táimid ag úsáid chun ls, a liostaíonn bunúsach go léir an t-ábhar inár n-eolaire reatha.
Dul thar an l brat-Taispeánann iarbhír an méid comhaid sin.
Má théann tú tríd an spec pset, siúlóidí sé i ndáiríre tú tríd chruthú an comhad dénártha,
de huffing é, agus a fheiceann tú go bhfuil do chomhaid an-bheag
an costas spás compressing é agus aistriú go léir na faisnéise sin
de na minicíochtaí agus rudaí mar sin níos tábhachtaí ná an sochar iarbhír
de compressing an comhad sa chéad áit.
Ach má ritheann tú é ar roinnt comhaid téacs níos faide, ansin d'fhéadfadh tú a fheiceáil go dtosaíonn tú a fháil ar roinnt sochar
i compressing na comhaid.
>> Agus ansin ar deireadh, ní mór dúinn ár sean PAL GDB, atá ag dul cinnte chun teacht i handy freisin.
>> An bhfuil muid tá aon cheist agat ar chrainn Huff nó an próiseas b'fhéidir a dhéanamh ar na crainn
nó aon ceisteanna eile ar Puff Huff'n?
Maith go leor. Beidh mé ag fanacht thart ar feadh beagán.
>> Go raibh maith agat, gach duine. Ba é seo Walkthrough 6. Agus dea-luck.
>> [CS50.TV]