[Powered by Google Translate] [ஒத்திகை - சிக்கல் அமை 6]
[Zamyla சான் - ஹார்வர்ட் பல்கலைக்கழகம்]
[இந்த CS50 உள்ளது. - CS50.TV]
>> அனைவருக்கும் வணக்கம், மற்றும் ஒத்திகையும் 6 வரவேற்க: Huff'n பஃப்.
Huff'n பஃப் நாம் என்ன செய்கிறாய் என்று ஒரு ஹஃப்மேன் சுருக்கப்பட்ட கோப்பை கையாள்வதில் போகிறது
பின்னர், மீண்டும் அதை puffing எனவே, அதை decompressing
நாம் 0 க்கள் மற்றும் 1 வி பயனர் நமக்கு அனுப்புகிறது என்று இருந்து மொழிபெயர்க்க முடியும்
மற்றும் அசல் உரை அதை மீண்டும் மாற்ற.
நீங்கள் கருவிகள் சில பார்க்க போகிறோம் ஏனெனில் Pset 6 அழகாக இருக்கும்
நீங்கள் 1 அழகான சுத்தமாகவும் கருத்து அவற்றை ஒருங்கிணைப்பதற்கான pset 4 மற்றும் pset 5 மற்றும் வகையான பயன்படுத்தப்படும் என்று
நீ அதை பற்றி யோசித்து வரும் போது.
>> மேலும், வாதிடுகையில், pset 4 மற்றும் 5 நாம் வழங்க வேண்டும் என்று மிகவும் சவாலான psets இருந்தன.
எனவே இப்போது, நாம், சி இந்த 1 மேலும் pset வேண்டும்
அதன் பின்னர் நாம் வலை நிரலாக்க செய்ய இருக்கிறோம்.
எனவே CS50 உள்ள கடினமான மேட்டு மேல் பெற உங்களை வாழ்த்துகிறேன்.
>> Huff'n பஃப் க்கு மேல் நகரும், இந்த pset எங்கள் கருவி பெட்டி, ஹஃப்மேன் மரங்கள் போகிறீர்கள்
எனவே பைனரி மரங்கள் பணி ஆனால் குறிப்பாக ஹஃப்மேன் மரங்கள் மட்டும் எப்படி புரிந்து,
எப்படி அவர்கள் கட்டப்பட்டது.
பின்னர் நாம், இந்த pset உள்ள விநியோகம் குறியீடு நிறைய போகிறது
நாம் குறியீடு சில என்று உண்மையில் வந்து பார்க்கிறேன்
நாம், முழுமையாக இன்னும் புரிந்து கொள்ள முடியாது
அதனால் அந்த பின்னர் அவர்கள் இணைந்த. h கோப்புகள். கேட்ச் கோப்புகள் இருக்கும், ஆனால்
நம்மை நாம் அந்த செயல்பாடுகளை எவ்வாறு தெரியும் அதனால் வேண்டும் என்று போதுமான புரிதல் கொடுக்கும்
அல்லது குறைந்த பட்சம் என்ன செய்ய வேண்டும் - அவர்களின் உள்ளீடுகள் மற்றும் வெளியீடுகளை -
நாம் கருப்பு பெட்டியில் என்ன நடக்கிறது என்று தெரியவில்லை கூட
அல்லது உள்ள கருப்பு பெட்டியில் என்ன நடக்கிறது என்று எனக்கு புரியவில்லை.
பின்னர் இறுதியாக, வழக்கம் போல், நாம், புதிய தரவு கட்டமைப்புகள் கையாள்வதில்
அந்த முனைகளில் குறிப்பிட்ட வகையான, சில விஷயங்களை சுட்டி
அதனால் இங்கே வடிவமைப்பு செயல்முறை மட்டும் அல்ல, ஒரு பேனா மற்றும் காகிதம் கொண்டு
மற்றும் போது உங்கள் pset வேலை எப்படி கண்டுபிடிக்க முயற்சிக்கும்
ஆனால் பிழைத்திருத்தங்களுக்கும் போது.
நீங்கள் மதிப்புகள் என்ன கீழே எடுத்து போது, உங்கள் பேனா மற்றும் காகிதம் இணைந்து GDB முடியும்
அங்கு உங்கள் அம்புகள் சுட்டிக்காட்டி, அந்த போன்ற விஷயங்கள்.
>> முதல் ஹஃப்மேன் மரங்கள் பார்க்க போகலாம்.
ஹப்மன் மரங்கள் ஒவ்வொரு கணு மட்டும் 2 குழந்தைகள் உள்ளன அதாவது, பைனரி மரங்கள்.
ஹஃப்மேன் மரங்கள் பண்பு என்று மிகவும் அடிக்கடி மதிப்புகள்
fewest பிட்கள் குறிப்பிடப்படுகிறது.
நாம் மோர்ஸ் குறியீடு மற்றும் விரிவுரை உதாரணங்கள், தொகுக்கப்பட்டு, எந்த வகையான சில கடிதங்களை பார்த்த.
நீங்கள் எடுத்துக்காட்டாக ஒரு ஒரு அல்லது ஒரு மின், மொழிபெயர்க்க முயற்சிக்கும் போது
நீங்கள் அடிக்கடி மொழிபெயர்ப்பது அதனால் பதிலாக பிட்கள் முழு தொகுப்பு பயன்படுத்த கொண்ட
என்று வழக்கமான தரவு வகை ஒதுக்கீடு, நீங்கள், குறைவான அது கீழே அழுத்தி
பின்னர் குறிப்பிடப்படுகின்றன யார் அந்த கடிதங்கள் குறைவாக பெரும்பாலும் நீண்ட பிட்கள் குறிப்பிடப்படுகின்றன
அந்த கடிதங்கள் தோன்றும் அதிர்வெண்கள் அவுட் எடையை போது நீங்கள் வாங்க முடியும் என்பதால்.
நாம் ஹஃப்மேன் மரங்கள் இங்கு ஒரே யோசனை
அங்கு நாம் ஒரு சங்கிலி, சில எழுத்துக்களை பெற பாதையில் ஒரு வகையான செய்கிறீர்கள்.
பின்னர் மிக அதிர்வெண் கொண்ட பாத்திரங்கள்
fewest பிட்கள் குறிப்பிடப்படுகின்றன வேண்டும் போகிறோம்.
>> நீங்கள் ஒரு ஹஃப்மேன் மரம் கட்டுவதற்கு அந்த வழி
உரையில் காணப்படும் எழுத்துகள் அனைத்து வைப்பதன் மூலம்
அவற்றின் அதிர்வெண் கணக்கிடும்போது, எப்படி அடிக்கடி தோன்றும்.
இந்த ஒன்று அந்த கடிதங்கள் தோன்றும் எத்தனை முறை ஒரு எண்ணிக்கை முடியும்
அல்லது ஒருவேளை ஒவ்வொரு தோன்றும் எத்தனை அனைத்து கதாபாத்திரங்கள் வெளியே ஒரு சதவீதம்.
அதனால் என்ன செய்ய, நீ அந்த ஒப்பிடப்படுகிறது அவுட் அனைத்து உள்ளது
நீங்கள் 2 குறைந்த அலைவரிசைகளை பார்க்க பின்னர் உடன்பிறப்புகள் அவர்களை சேர
அங்கு பின்னர் பெற்றோர் முனை அதன் 2 குழந்தைகள் தொகை ஒரு அதிர்வெண் உள்ளது.
பின்னர் நீங்கள் மாநாட்டின் மூலம் என்ன என்று இடது முனை,
நீங்கள், 0 கிளை தொடர்ந்து அந்த பின்பற்ற
பின்னர் rightmost முனை 1 கிளை.
நாம் மோர்ஸ் குறியீடு பார்த்த போது, ஒரு gotcha என்று நீங்கள் ஒரு பீப் மற்றும் பீப் செய்தால்
அது தெளிவற்ற இருந்தது.
அது என்றோ 1 கடிதம் முடியும் அல்லது 2 கடிதங்கள் வரிசை முடியும்.
அதனால் என்ன ஹஃப்மேன் மரங்கள் இல்லை என்பது எழுத்துக்கள் இயல்பு ஏனெனில்
அல்லது நம் இறுதி உண்மையான பாத்திரங்கள் கிளை கடந்த முனைகள் இருப்பது -
நாம் இலைகள் என அந்த பார்க்கவும் - அந்த பண்பு எந்த சந்தேகம் இருக்க முடியாது
நீங்கள் பிட்கள் தொடர் குறியாக்கம் முயற்சிக்கும் எந்த கடிதத்தின் அடிப்படையில்
ஏனெனில் 1 கடிதம் பிரதிநிதித்துவப்படுத்தும் பிட்கள் சேர்ந்து எங்கும்
நீங்கள் மற்றொரு முழு கடிதம் ஏற்பட்டால், அங்கு எந்த குழப்பமும் இருக்காது.
ஆனால் நாங்கள் உங்களுக்கு உண்மையில் பார்க்க முடியும் என்று உதாரணங்கள் போக வேண்டும் என்று
பதிலாக நாம் அது உண்மை என்று சொல்கிறேன்.
>> ஒரு ஹஃப்மேன் மரம் ஒரு எளிய உதாரணம் பார்க்கிறேன்.
நான் 12 எழுத்துகள் என்று இங்கே ஒரு சரம் வேண்டும்.
நான் 6 BS, மற்றும் 2 Cs, என 4 உள்ளன.
என் முதல் படி எண்ண வேண்டும்.
ஒரு எத்தனை முறை தோன்றும்? இது சரம் 4 முறை தோன்றும்.
பி 6 முறை தோன்றும், மற்றும் சி 2 முறை தோன்றும்.
இயற்கையாகவே, நான், பெரும்பாலும் பி பயன்படுத்தி நான் சொல்ல போகிறேன்
அதனால் நான் பிட்கள் fewest எண், 0 க்கள் மற்றும் 1 வி என்ற fewest எண் பி பிரதிநிதித்துவம் வேண்டும்.
பின்னர் நான் சி அதே 0 க்கள் மற்றும் 1 வி பெரும்பாலான அளவு தேவைப்படுகிறது எதிர்பார்க்க போகிறேன்.
முதல் நான் இங்கே என்ன நான் அதிர்வெண் அடிப்படையில் ஏறுவரிசையில் அவர்களை வைக்கப்படுகிறது.
நாம் சி மற்றும் ஏ, அந்த எங்கள் 2 குறைந்த அதிர்வெண்கள் என்று பார்க்க.
நாம் ஒரு தாய் முனை உருவாக்க, மற்றும் அந்த பெற்றோர் முனை அது தொடர்புடைய ஒரு கடிதம் இல்லை
ஆனால் அதை தொகை ஒரு அதிர்வெண், கிடையாது.
கூட்டுத்தொகையாக 6 இது 2 + 4, ஆகிறது.
நாம் இடது கிளை பின்பற்ற.
நாங்கள் 6 முனை என்றால், நாம் சி பெற 0 பின்பற்ற வேண்டும்
பின்னர் 1 ஏ பெற
எனவே இப்போது நாம் 2 முனைகளில் வேண்டும்.
நாம் மதிப்பு 6 மற்றும் பிறகு நாங்கள் மதிப்பு 6 மற்றொரு முனை வேண்டும்.
அதனால் அந்த 2 குறைந்த 2 ஆனால் உள்ளன என்று மட்டும் 2, மட்டும் தான்
எனவே தொகை 12 என்ற நிலையில், மற்றொரு தாய் மூலம் அந்த சேர.
இங்கு நாம் ஹஃப்மேன் மரம்
பி பெற எங்கு, என்று ஒரு பிட் 1 வேண்டும்
பின்னர் ஒரு பெற நாம் சி 00 என்ற பின் 01 மற்றும் வேண்டும்.
இங்கு நாம் அடிப்படையில் நாம் 1 அல்லது 2 பிட்கள் அல்லது இந்த எழுத்துகள் குறிக்கும் என்று பார்க்க
அங்கு என கணிக்கப்பட்டுள்ளது பி,, குறைந்தது உள்ளது.
பின்னர், நாம் சி மிகவும் வேண்டும் என எதிர்பார்க்கப்படுகிறது, ஆனால் இது போன்ற ஒரு சிறிய ஹஃப்மேன் மரம் என்பதால்
பின் ஒரு மேலும் நடுத்தர எங்கோ எதிராக 2 பிட்கள் குறிப்பிடப்படுகின்றன.
>> வெறும் ஹஃப்மேன் மரம் மற்றொரு உதாரணம் மேல் செல்ல,
நீங்கள் சரம் வேண்டும் என்று "ஹலோ."
நீ என்ன செய்ய நீங்கள் எத்தனை முறை எச் இந்த தோன்றும் என்று கூறுவேன் முதலில்?
எச் முறை மற்றும் மின் தோன்றும் தோன்றும் முறை மற்றும் நாம் இருமுறை தோன்றும் l வேண்டும்
மற்றும் ஓ முறை தோன்றும்.
அதனால் நாம் பிட்கள் குறைந்தது பல குறிப்பிடப்படுகின்றன வேண்டும் என்று கடிதம் எதிர்பார்க்கலாம்?
[மாணவர்] எல். >> எல். Yeah. எல் சரிதான்.
நாங்கள் எல் பிட்கள் குறைந்தது பல குறிப்பிடப்படுகின்றன வேண்டும் எதிர்பார்க்கிறோம்
ஏனெனில் L "ஹலோ." சரம் மிகவும் பயன்படுகிறது
நான் இப்போது செய்ய போகிறேன் என்ன இந்த முனைகள் வெளியே இழுக்கும்.
நான் ஓ இது மின் இது மற்றொரு 1, பின்னர் ஒரு 1, எச் இது, 1 வேண்டும், மற்றும் -
எல் என்பது, பின்னர் 2 - இப்போது நான் பொருட்டு அவற்றை.
பிறகு நான் ஒரு ஹஃப்மேன் மரம் கட்ட வழி குறைந்தது அதிர்வெண்கள் 2 முனைகளில் கண்டுபிடிக்க என்று
மற்றும் ஒரு பெற்றோர் முனை உருவாக்குவதன் மூலம், அவர்கள் உடன்பிறப்புகள் செய்ய.
இங்கே நாம் குறைந்த அலைவரிசை கொண்ட 3 முனைகளில் வேண்டும். அவர்கள் அனைத்து 1 இருக்கிறோம்.
இங்கு நாம் முதலில் இணைக்க போகிறோம், எந்த ஒரு தேர்வு.
நாம் நான் H மற்றும் மின் தேர்வு என்று.
1 தொகை + 1 2, ஆனால் இந்த முனை அது தொடர்புடைய ஒரு கடிதம் இல்லை.
அது மதிப்பு உள்ளது.
இப்போது நாம் அடுத்த 2 குறைந்த அதிர்வெண்கள் பாருங்கள்.
அந்த 2 மற்றும் 1 தான். அந்த ஒன்று, அந்த 2 இருக்க முடியும், ஆனால் நான் இந்த தேர்வு போகிறேன்.
கூட்டுத்தொகையாக 3.
பின்னர் இறுதியாக, நான் தான் பிறகு 5 என்று, 2 இடது வேண்டும்.
நான் அந்த குறியீட்டு முறையை பூர்த்தி என்றால் இங்கே, என, எதிர்பார்க்கப்படுகிறது,
1 வி எப்போதும் சரியான கிளை மற்றும் 0s இடது ஒரு உள்ளன.
நாம் 2 மூலம் 1 பிட் பின்னர் ஓ பிரதிநிதித்துவம் எல் வேண்டும்
பின்னர் 2 இ பின்னர் எச் 3 பிட்கள் கீழே விழும்.
எனவே நீங்கள் "வணக்கம்" இந்த செய்தியை அனுப்ப முடியாது பதிலாக உண்மையில் எழுத்துக்கள் பயன்படுத்தி
வெறும் 0 க்கள் மற்றும் 1 வி மூலம்.
ஆனால், பல நேரங்களில் நாம் அதிர்வெண் உறவுகளை என்று ஞாபகம்.
நாம் ஒன்று ஒருவேளை முதல் H மற்றும் ஓ சேர்ந்தார்.
அல்லது பின்னர் நாங்கள் 2 குறிப்பிடப்படுகின்றன எல் போது மீது
அதே போல் 2 குறிப்பிடப்படுகின்றன ஒரு சேர்ந்து, நாம் ஒன்றை இணைக்கப்பட்ட.
>> அதனால் நீங்கள் அனுப்ப போது 0 க்கள் மற்றும் 1 வி, உண்மையில் உத்தரவாதம் இல்லை என்று
பெறுநர் முழுமையாக சரியான பேட் ஆஃப் உங்கள் செய்தியை படிக்க முடியும் என்று
அவர்கள் நீங்கள் செய்த எந்த முடிவும் தெரியாது என்பதால்.
நாம் ஹஃப்மேன் சுருக்க கையாளும் போது,
எப்படியோ நாம் முடிவு எப்படி நமது செய்தியை பெற்றவர் சொல்ல வேண்டும் -
அவர்கள் கூடுதல் தகவல் சில வகையான அறிந்து கொள்ள வேண்டும்
அமுக்கப்பட்ட செய்தி கூடுதலாக.
அவர்கள், மரம் உண்மையில் போல் என்ன புரிந்து கொள்ள வேண்டும்
நாம் உண்மையில் அந்த முடிவுகள் எடுக்க எப்படி.
>> இங்கே நாம் வெறும், உண்மையான எண்ணிக்கை அடிப்படையில் உதாரணங்கள் செய்துகொண்டு
ஆனால் சில நேரங்களில் நீங்கள் ஒரு ஹஃப்மேன் மரம் முடியும்
அதிர்வெண் அடிப்படையில் கடிதங்கள் தோன்றும், அது சரியான அதே செயல்முறை இது.
இங்கே நான், சதவீதங்கள் அல்லது ஒரு பகுதி என்ற வகையில் அதை வெளிப்படுத்தும்
எனவே இங்கு சரியான ஒன்று.
நான், 2 குறைந்த, அவர்கள் தொகையிடும், குறைந்த அடுத்த 2, அவர்களை தொகையிடும் கண்டறிய
நான் ஒரு முழு மரம் வரை.
நாம் அது நாம் விழுக்காட்டுக்கும் கையாளும் போது அல்லது வழி, செய்ய கூட
நாம் பொருட்களை பிரித்து மற்றும் தசமங்கள் கையாள்வதில் தான் பொருள் அல்லது மிதக்கும் என்று
நாம் ஒரு தலை தரவு கட்டமைப்புகள் நினைத்துக்கொண்டு.
நாம் மிதவைகள் பற்றி என்ன தெரியும்?
நாம் மிதவைகள் கையாளும் போது ஒரு பொதுவான பிரச்சனை என்ன?
[மாணவர்] துல்லியமற்றவை கணித. >> சரி. Imprecision.
ஏனெனில் மிதவை புள்ளி imprecision, இந்த pset நாம் உறுதி என்று
நாம் எந்த மதிப்புகள் இழக்க வேண்டாம் என்று, நாம் உண்மையில் எண்ணிக்கை கையாள்வதில் போகிறாய்.
நீங்கள் இங்கே கட்டமைப்பை மீண்டும் பார்த்தால், ஒரு ஹஃப்மேன் முனை என்று என்று நீங்கள்
நீங்கள் பச்சை நிறம் பார்த்து என்றால் அது தொடர்புடைய ஒரு அதிர்வெண் உள்ளது
அத்துடன் அதன் இடது ஒரு முனை அத்துடன் அதன் சரியான ஒரு முனை சுட்டி காட்டும்.
பின்னர் சிவப்பு அங்கு அவர்கள் தொடர்புடைய ஒரு பாத்திரம் உள்ளது.
நாம், பெற்றோர்கள் மற்றும் பிறகு இறுதி முனைகளில் தனி ஒன்றை செய்ய போவதில்லை
இதில் நாம் இலைகள் என்று பார்க்கவும், மாறாக அந்த மட்டும் NULL மதிப்புகள் வேண்டும்.
ஒவ்வொரு முனையும் நாம் ஒரு கதாபாத்திரம், அந்த முனை பிரதிபலிக்கிறது என்று சின்னமாக, வேண்டும்
பின்னர் ஒரு அதிர்வெண் மற்றும் அதன் இடது குழந்தை அத்துடன் அதன் சரியான குழந்தை ஒரு சுட்டிக்காட்டி.
மிகவும் கீழே இருக்கும் இலைகள், மேலும் முனை சுட்டிகள் வேண்டும்
அவர்கள் இடது மற்றும் வலது, ஆனால் அந்த மதிப்பை உண்மையான முனைகளில் குறிக்கும் என்பதால்,
அவற்றின் மதிப்பு என்ன என்று? >> [மாணவர்] NULL. >> NULL. சரியாக.
இங்கே நீங்கள் மிதவைகள் உள்ள அதிர்வெண் பிரதிநிதித்துவம் எப்படி ஒரு எடுத்துக்காட்டாக, தான்
ஆனால் நாம், முழு அதை கையாள்வதில் போகிறாய்
அதனால் தான் அனைத்து அங்கு தரவு வகையை மாற்ற வேண்டும்.
>> ஒரு சிக்கலான உதாரணமாக ஒரு சிறிது அதிகமாக செல்லலாம்.
ஆனால் இப்போது நாம் எளிய ஒருவர் செய்த, அது அதே செயல்முறை.
நீங்கள் 2 குறைந்த அதிர்வெண்கள் கண்டறிய, அதிர்வெண்களை தொகையிடும்
என்று, உங்கள் பெற்றோர் முனை புதிய அலைவரிசை தான்
இது பின்னர் 1 கிளை உடன் 0 கிளை மற்றும் வலது அதன் இடது சுட்டிக்காட்டியுள்ளது.
நாம் சரம் "இந்த cs50 உள்ளது," இருந்தால் நாம், டி குறிப்பிடப்பட்டுள்ளது எத்தனை முறை எண்ணுவதற்கு
ம குறிப்பிட்டுள்ளார், நான், கள், கேட்ச், 5, 0.
என்ன நான் இங்கே இல்லை, நான் ஊன்றி சிவப்பு முனைகளில் உள்ளது
நான் என் மரத்தின் கீழே இறுதியில் இந்த எழுத்துக்கள் போகிறேன் என்றார்.
அந்த இலைகள் அனைத்து போகிறீர்கள்.
பிறகு என்ன செய்தேன், நான் ஏறுவரிசையில் உள்ள அதிர்வெண் அவர்கள் வரிசையில் உள்ளது
இந்த உண்மையில் pset குறியீடு இது என்று வழி
இது அதிர்வெண் மூலம் வகையான அது பின்னர் அகர வரிசைப்படி உள்ளது.
எனவே அதிர்வெண் அகர வரிசையில் முதல் மற்றும் எண்கள் உள்ளன.
என்ன நான் என்ன செய்ய நான் 2 குறைவான என்பதாகும். அந்த 0 மற்றும் 5 தான்.
நான் அவர்களை தொகையிடும், மற்றும் அந்த 2 தான். நான் அடுத்த 2 குறைவான, தொடரும்.
அந்த இரண்டு 1 வி, மற்றும் அதன் பின்னர் அதே போன்று 2 ஆக.
இப்போது நான் என் அடுத்த படி, குறைந்த எண்ணிக்கையிலான சேர வேண்டும் என்று எனக்கு தெரியும்
இதில், 1 டி, மற்றும் அதன் அதிர்வெண் 2 என்று கணுக்களின் ஒரு தேர்வு.
இங்கு நாம் 3 விருப்பங்களை வேண்டும்.
நான் ஸ்லைடிற்கான செய்ய போகிறேன் என்ன தான் பார்வை நீங்கள் அவற்றை மறுசீரமைக்க
அதனால் நான் அதை கட்டி நான் எப்படி பார்க்க முடியும்.
குறியீடு மற்றும் உங்கள் விநியோகம் குறியீடு செய்ய என்ன டி ஒரு சேர வேண்டும்
0 மற்றும் 5 முனை கொண்ட.
எனவே பின்னர் 3 தொகைகள், மற்றும் நாம் செயல்பாட்டை தொடர வேண்டும் என்று.
2 மற்றும் 2 இப்போது மிகவும் பின், 4 அந்த தொகை குறைந்த உள்ளன.
அனைவருக்கும் இதுவரை தொடர்ந்து? சரி.
அதன் பின்னர் நாம், 3 மற்றும் சேர்க்க வேண்டும் என்று 3 வேண்டும்
நீங்கள் மிகவும் அசுத்தமாக இல்லை என்று பார்வை மிகவும் பார்க்க முடியும் என்று, அதனால் மீண்டும் நான் அதை மாற்ற.
நாம் மட்டும் 2 முனைகளில் வேண்டும் என்று நாம் ஒரு 6 வேண்டும், பின்னர் நமது இறுதி முடிவை இப்போது
நாங்கள் 10 இது எங்கள் மரம், வேர் செய்ய அந்த தொகை.
ஒவ்வொரு முனையும் குறிப்பிடப்படுகின்றன ஏனெனில் மற்றும் எண் 10, அர்த்தமுள்ளதாக
அவற்றின் மதிப்பு, அவற்றின் அலைவரிசை எண்ணை, அவர்கள் சரம் தோன்றினார் எத்தனை முறை ஆகும்
பின்னர் நாங்கள் எங்கள் சரம் 5 எழுத்துக்கள், அர்த்தமுள்ளதாக என்று.
நாம் உண்மையில் அது குறியாக்கம் என்பதை பாருங்க, நீங்கள்
எதிர்பார்த்தபடி, நான் மற்றும் பெரும்பாலும் தோன்றும் கள்,
பிட்கள் fewest பல குறிப்பிடப்படுகின்றன.
>> இங்கு கவனமாக இருக்க வேண்டும்.
ஹஃப்மேன் மரங்கள் வழக்கு உண்மையில் விஷயம்.
ஒரு தொடரை எஸ் ஒரு ஸ்மால் கள் விட வித்தியாசமாக இருக்கும்.
நாம் இருந்தால், ஸ்மால் கள் மட்டும் இரண்டு முறை தோன்றும் பின்னர், மூலதன எழுத்தில் "இந்த CS50 இல்லை"
அதன் மதிப்பு 2 ஒரு முனை வேண்டும், பிறகு தொடரை எஸ் ஒருமுறை மட்டுமே இருக்கும்.
நீங்கள் உண்மையில் இங்கே ஒரு கூடுதல் இலை ஏனெனில் அதனால் உங்கள் மரம் கட்டமைப்புகள் மாற்ற வேண்டும்.
ஆனால் தொகை இன்னும் 10 இருக்கும்.
என்று, நாம் உண்மையில் செக்சம் அழைப்பு போகிறாய் என்ன
எண்ணிக்கைகள் அனைத்து கூடுதலாக.
>> இப்போது நாம் ஹஃப்மேன் மரங்கள் மூடப்பட்டிருக்கும் என்று, நாம் Huff'n பஃப், pset ஒரு டைவ் முடியும்.
நாம், கேள்விகளை ஒரு பிரிவை தொடங்க போகிறீர்கள்
மற்றும் இந்த பைனரி மரங்கள் மற்றும் எப்படி என்று சுற்றி செயல்பட கூடிய பழக்கமில்லை போகிறது:
வரைய முனைகள், ஒரு முனை உங்கள் சொந்த typedef struct உருவாக்கி,
நீங்கள் ஒரு பைனரி மரம், வரிசைப்படுத்தப்பட்ட என்று ஒரு செருக எப்படி பார்த்து,
அது, அந்த மாதிரி விஷயங்களை பயணித்து.
அந்த அறிவு நிச்சயம் Huff'n பஃப் பகுதியை நோக்கி போது நீங்கள் முழுக்கு உங்களுக்கு உதவ போகிறது
pset வேண்டும்.
Pset நிலையான பதிப்பில், உங்கள் பணி, பஃப் செயல்படுத்த உள்ளது
மற்றும் ஹேக்கர் பதிப்பு உங்கள் பணி திடீரென தோன்றும் கோப செயல்படுத்த உள்ளது.
திடீரென தோன்றும் கோப நிலை உள்ளது என்ன, அதை உரையை எடுத்து கொண்டு அதை 0 க்கள் மற்றும் 1 வி அதை மொழிபெயர்த்தால்
நாம் அதிர்வெண்கள் கணக்கில் அங்கு நாம் மேலே என்று செயல்முறை
பின்னர் மரம் செய்த பின்னர், அவர், "நான் எப்படி டி கிடைக்கும்?"
டி 100 குறிப்பிடப்படுகின்றன, அந்த மாதிரி விஷயங்களை,
பின்னர் திடீரென தோன்றும் கோப உரை பின்னர் வெளியீடு என்று பைனரி எடுக்கும்.
ஆனால் நாம் செய்தி நம் பெறுநர் அனுமதிக்க வேண்டும் என்று எனக்கு தெரியும்
அதே மரம் உருவாக்க, இது அதிர்வெண் எண்ணிக்கைகள் பற்றிய தகவல்களை சேர்க்கிறது.
பின்னர் பஃப் நாம் 0 க்கள் மற்றும் 1 வி ஒரு பைனரி கோப்பு வழங்கப்படும்
மேலும் அதிர்வெண்கள் பற்றி தகவல் கொடுக்கப்பட்டது.
நாம், அந்த அசல் செய்தியில் அந்த 0 க்கள் மற்றும் 1 வி மீண்டும் அனைத்து மொழிபெயர்க்க
எனவே நாம் அந்த decompressing.
நீங்கள் நிலையான பதிப்பு செய்கிறீர்கள் என்றால், நீங்கள், திடீரென தோன்றும் கோப செயல்படுத்த தேவையில்லை
எனவே நீங்கள் தான் திடீரென தோன்றும் கோப பணியாளர்களால் செயல்படுத்த பயன்படுத்தலாம்.
அதை எப்படி ஸ்பெக் உள்ள வழிமுறைகளை உள்ளன.
நீங்கள் ஒரு குறிப்பிட்ட உரை கோப்பு மீது திடீரென தோன்றும் கோப பணியாளர்களால் செயல்படுத்த முடியும்
பின்னர் பஃப் உங்கள் உள்ளீடு என்று வெளியீடு பயன்படுத்த.
>> நான் முன்பு கூறியது போல, நாம் இந்த ஒரு விநியோக குறியீடு நிறைய இருக்கிறது.
நான் அதை கடந்து தொடங்க போகிறேன்.
நான் பெரும்பாலான நேரம் செலவிட போகிறேன். H கோப்புகள்
நாங்கள். h ஏனெனில். கேட்ச் கோப்புகளில், ஏனெனில்
என்று, செயல்பாடுகளை முன்மாதிரிகளை எங்களுக்கு வழங்குகிறது
நாம் முழுமையாக சரியாக புரிந்து கொள்ள தேவையில்லை -
நீங்கள். கேட்ச் கோப்புகளில் என்ன நடக்கிறது என்று புரியவில்லை என்றால், மிகவும் கவலை படாதே
அது சில குறிப்புகள் கொடுக்க வேண்டும், ஏனெனில் ஆனால் கண்டிப்பாக பாருங்கள் முயற்சி
அது மற்ற மக்களின் குறியீடு படித்து பழகி கொள்ள பயனுள்ளதாக இருக்கும்.
>> Huffile.h பார்த்து, கருத்துக்களில் இது ஹஃப்மேன்-குறியீட்டு கோப்புகளை சுருக்க ஒரு அடுக்கு அறிவிக்கிறது.
நாம் கீழே சென்றால், நாம் குறியீடுகளை வேண்டும் என்று 256 குறியீடுகள் அதிகபட்ச உள்ளது என்று பார்க்க.
மேல்வரிசை மற்றும் ஸ்மால் - - இந்த எழுத்துக்கள் அனைத்து எழுத்துக்களையும் கொண்டுள்ளது
பின்னர் சின்னங்கள் மற்றும் எண்கள், முதலியன
பின்னர் இங்கே நாம் ஒரு ஹஃப்மேன்-குறியீட்டு கோப்பு அடையாளம் ஒரு மேஜிக் எண்.
ஒரு ஹஃப்மேன் குறியீடு உள்ள ஒரு சில மேஜிக் எண் போகிறது
தலைப்பு தொடர்புடைய.
இந்த, ஒரு சீரற்ற மேஜிக் எண் இருக்கும்
நீங்கள் உண்மையில் ASCII, அதை மொழிபெயர்க்க வேண்டும் ஆனால், அது உண்மையில் திடீரென தோன்றும் கோப அவுட் சுட்டிக்காட்டியவை.
இங்கே நாம் ஒரு ஹஃப்மேன்-குறியேற்றப்பட்ட கோப்பு ஒரு struct வேண்டும்.
ஒரு திடீரென தோன்றும் கோப கோப்பு தொடர்புடைய இந்த பண்புகள் அனைத்து உள்ளது.
பின்னர் கீழே இங்கே நாம் ஒரு திடீரென தோன்றும் கோப கோப்பு தலைப்பு, எனவே அதை Huffeader அழைப்பு
அதற்கு பதிலாக அதை எப்படியும் அதே ஒலிக்கும் ஏனெனில் கூடுதல் h சேர்க்கும்.
அழகு.
நாம் அது தொடர்புடைய ஒரு மேஜிக் எண்.
அது ஒரு உண்மையான திடீரென தோன்றும் கோப கோப்பு இருந்தால், அது, மேலே மேலே இந்த மேஜிக் ஒரு எண் இருக்கும் நடக்கிறது.
பின்னர் அது ஒரு வரிசை இருக்கும்.
எனவே ஒவ்வொரு குறியீட்டிற்கும், இதில் 256 உள்ளன
அந்த குறியீடுகளை அதிர்வெண் திடீரென தோன்றும் கோப கோப்பு உள்ள என்ன பட்டியலிட நடக்கிறது.
பின்னர் இறுதியாக, நாம், அதிர்வெண்களை ஒரு செக்சம் வேண்டும்
அந்த அதிர்வெண்கள் தொகை இருக்க வேண்டும்.
அதனால் தான் என்ன ஒரு Huffeader உள்ளது.
நாம் திடீரென தோன்றும் கோப கோப்பில் அடுத்த பிட் திரும்ப சில செயல்பாடுகளை
அத்துடன் hfclose, இங்கே இந்த விழா பின், திடீரென தோன்றும் கோப கோப்பு ஒரு பிட் எழுதுகிறார், மற்றும்
என்று உண்மையில் திடீரென தோன்றும் கோப கோப்பு நிறைவடைகிறது.
முன்னர், நாம், நேராக தான் fclose கையாள்வதில்
ஆனால் நீங்கள் ஒரு திடீரென தோன்றும் கோப கோப்பு போது, அதற்கு பதிலாக அது fclosing பற்றி
என்ன நீங்கள் உண்மையில் செய்ய போகிறோம் hfclose மற்றும் அதை hfopen உள்ளது.
அந்த நாம் கையாளும் போகிறாய் என்று கடுப்புடன் கோப்புகள் குறிப்பிட்ட செயல்பாடுகள் இருக்கும்.
பின்னர் இங்கே நாம் ஹெட்டரில் படித்து பின் தலைப்பு எழுத.
>> தான். H கோப்பை படித்து நாம், ஒரு திடீரென தோன்றும் கோப கோப்பு இருக்கலாம் என்ன ஒரு உணர்வு பெற என்ன செய்ய முடியும்
இது, உண்மையில் huffile.c செல்லும் இல்லாமல், என்ன பண்புகள்
இது, நாம் டைவ் என்றால், சற்று சிக்கலாக இருக்கும்.
அதை நான் / ஓ இங்கே சுட்டிகள் கையாள்வதில் கோப்பு அனைத்து உள்ளது.
இங்கே நாம் hfread அழைக்க போது, உதாரணமாக, அதை இன்னும் fread கையாள்வதில் என்று பார்க்க.
நாம் முற்றிலும் அந்த செயல்பாடுகளை விட்டொழிக்க வேண்டும், ஆனால் நாம் பார்த்து கொள்ள அந்த அனுப்பி வருகிறோம்
மாறாக அது நம்மை அனைத்து செய்யும் திடீரென தோன்றும் கோப கோப்பு உள்ளே.
நீங்கள் ஆர்வம் என்றால் நீங்கள் இந்த வழியாக ஸ்கேன் இலவச உணர முடியும்
போய் திரும்பி அடுக்கு சிறிது தலாம்.
>> நாம் பார்க்க போகிறோம் என்று அடுத்த கோப்பு tree.h. உள்ளது
ஒத்திகையும் ஸ்லைடுகள் முன்பு நாம் ஒரு ஹஃப்மேன் முனை எதிர்பார்க்க கூறினார்
நாம் ஒரு typedef struct முனை ஏற்படுத்தினார்.
நாம் அது ஒரு குறியீடாக, ஒரு அதிர்வெண், பின்னர் 2 முனை நட்சத்திரங்கள் வேண்டும் எதிர்பார்க்கிறோம்.
இந்த வழக்கில் நாம் என்ன செய்கிறோம் இந்த அடிப்படையில் தான் இருக்கிறது
அதற்கு பதிலாக முனையத்தின் தவிர நாம் மரங்கள் அழைக்க போகிறோம்.
நீங்கள் மரம் செய்ய அழைப்பு போது அது ஒரு மரம் சுட்டிக்காட்டி கொடுக்கிறது என்று ஒரு செயல்பாடு இருக்கும்.
நீங்கள் ஒரு புதிய கணு செய்யும் போது, Speller செல்ல
நீங்கள் கூறியது முனை * புதிய வார்த்தை = malloc (sizeof) மற்றும் அந்த போன்ற விஷயங்கள்.
அடிப்படையில், mktree நீங்கள் அந்த கையாள்வதில் போகிறது.
இதேபோல், ஒரு மரத்தை அகற்ற வேண்டும் போது,
அந்த அடிப்படையில், நீங்கள் முடித்துவிட்டீர்கள் போது மரம் பெறலாம்
அதற்கு பதிலாக வெளிப்படையாக அந்த இலவச அழைத்து, நீங்கள் உண்மையில் ஒரு rmtree செயல்பாட்டை பயன்படுத்த போகிறோம்
நீங்கள் அந்த மரத்தை சுட்டிக்காட்டி உள்ள கடக்க மற்றும் tree.c நீங்கள் அதை பார்த்துக்கொள்வேன்.
>> நாம் tree.c. பார்க்க
நாம் அதே செயல்படுத்த பார்க்க தவிர அதே செயல்பாடுகளை எதிர்பார்க்கிறோம்.
நாங்கள் எதிர்பார்த்தபடி, நீங்கள் mktree அழைக்க போது, ஒரு சுட்டிக்காட்டி ஒரு மரத்தின் அளவு mallocs
NULL மதிப்பை, அதனால் 0s அல்லது NULLs, இந்த மதிப்புகள் அனைத்து துவக்கும்
பின்னர் நீங்கள் உங்களை malloc'd நான் அந்த மரத்தை சுட்டிக்காட்டி கொடுக்கிறது.
இங்கே நீங்கள் மரம் நீக்க அழைக்க போது அதை முதலில் நீங்கள் இரட்டை பெறலாம் இல்லை என்பதை நீங்கள் உறுதி செய்கிறது.
அதை நீங்கள் உண்மையில் நீங்கள் நீக்க வேண்டும் என்று ஒரு மரம் வேண்டும் என்று கூறுகிறது.
ஒரு மரம் கூட அதன் குழந்தைகள் உட்பட, இங்கே தான்
இது என்ன இது மறுசுழலில் மரம் இடது முனை மீது மரம் நீக்க வேண்டும்
அதே வலது முனைக்கு என.
இது பெற்றோர் வெறுமையாக்கப்படுகிறது முன், இது போன்ற குழந்தைகளை விடுவிக்க வேண்டும்.
பெற்றோர் கூட வேர் மூலம் பரிமாற்றம் ஆகும்.
அதனால் பெரும் பெரும் பெரும் தாத்தா போல் முதல் பெற்றோர்,
அல்லது பாட்டி மரம், முதல் முதலில் அளவுகளை கீழே விடுவிக்க வேண்டும்.
எனவே அந்த இலவச, கீழே பயணிக்கின்றன, பின்னர் அந்த போன்றவற்றை, மீண்டும் இலவச வரும்
அந்த மரம் தான்.
>> இப்போது நாம் காட்டில் இருக்கும்.
உங்கள் ஹஃப்மேன் மரங்கள் அனைத்து வைக்க காட்டிற்கு உள்ளது.
இது ஒரு சதி என நாம் ஏதாவது செய்ய போகிறோம் என்று
ஒரு மரம் ஒரு சுட்டிக்காட்டி அத்துடன் அடுத்த ஒரு சதி ஒரு சுட்டிக்காட்டி உள்ளது.
என்ன கட்டமைப்பு போன்ற தோற்றத்தை இது என்ன?
இது மாதிரியான அங்கே என்கிறார்.
வலது இங்கு.
ஒரு இணைக்கப்பட்ட பட்டியலில்.
நாம் ஒரு சதி போது அதை அடுக்கு ஒரு இணைக்கப்பட்ட பட்டியலில் போல என்று.
ஒரு காட்டில், அடுக்கு ஒரு இணைக்கப்பட்ட பட்டியலில் வரையறுக்கப்படுகிறது
எனவே காட்டு கட்டமைப்பை நாம் நமது முதல் கதை ஒரு சுட்டிக்காட்டி போகிறது என்று
அந்த சதி இது ஒரு மரம் உள்ளது அல்லது ஒரு மரத்தை இடங்களும்
பின்னர் மிகவும் மற்றும் மிகவும் முன்னும் பின்னும், அடுத்த சதி சுட்டி காட்டும்.
ஒரு காட்டில் செய்ய நாம் mkforest அழைப்பு.
நாம் இங்கே சில அழகான பயன்மிக்க செயல்பாடுகளை கொண்டிருப்பதில்லை.
நீங்கள் திரும்பி மதிப்பு ஒரு மரம் * இது ஒரு காட்டில் கடந்து, எங்கே நாம், எடுக்க வேண்டும்
ஒரு மரம் ஒரு சுட்டிக்காட்டி.
என்ன தேர்வு செய்ய உங்களுக்கு சுட்டி என்று அது காட்டிற்கு செல்ல வேண்டும் என்பது தான்
பின்னர் அந்த காட்டில் இருந்து குறைந்த அதிர்வெண் ஒரு மரம் அகற்ற
பின்னர் அந்த மரத்தை நீங்கள் சுட்டிக்காட்டி கொடுக்க.
உன்னை அழைத்து அழைப்பு முறை, மரம், இனி காடுகளில் இல்லை
ஆனால் திரும்பி மதிப்பு என்று மரத்தை சுட்டிக்காட்டி இருக்கிறது.
நீங்கள் ஆலை உள்ளது.
நீங்கள் ஒரு அல்லாத 0 அதிர்வெண் கொண்ட ஒரு மரம் ஒரு சுட்டிக்காட்டி உள்ள கடக்க வேண்டும்,
என்ன ஆலை செய்வேன் அது, காடுகள் எடுத்து மரம் எடுத்து, மற்றும் ஆலை வேண்டும் என்று காட்டின் மரம் உள்ளே.
இங்கே நாம் rmforest வேண்டும்.
அடிப்படையில் எங்களுக்கு மரங்கள் அனைத்தும் விடுதலை இதில் மரம், நீக்க ஒத்த
காட்டில் நீக்க அந்த காட்டில் உள்ள இலவச எல்லாம் சாப்பிடுவேன்.
>> நாம் forest.c பார்த்து இருந்தால், நாம், அங்கு குறைந்த பட்சம் 1 rmtree கட்டளையை பார்க்க எதிர்பார்க்க வேண்டும்
ஏனெனில் ஒரு காட்டில் உள்ள மரங்கள் இருந்தால் காட்டில் இலவச நினைவகம்,
பின்னர் இறுதியாக நீங்கள் கூட அந்த மரங்களை அகற்ற வேண்டும்.
நாம் forest.c பார்த்து இருந்தால், நாம் எதிர்பார்க்க என இது எங்கள் mkforest, இல்லை.
நாம் malloc விஷயங்கள்.
அதை தொடங்குவதற்கு காலியாக ஏனெனில் நாங்கள், NULL என காடு முதல் சதி துவக்க
நாம் குறைந்த எடை கொண்ட மரம் கொடுக்கிறது இதில் தேர்வு, குறைந்த அதிர்வெண், பார்க்க
பின்னர் அந்த குறிப்பிட்ட முனை ஒழித்துவிட்டதென்றால் அந்த மரத்தை புள்ளிகள் மற்றும் அடுத்த ஒரு,
அது காட்டின் இணைக்கப்பட்ட பட்டியலில் என்று ஆகும்.
பின்னர் இங்கே நாம் எந்த இணைக்கப்பட்ட பட்டியலில் செருகி ஒரு மரம் செடி, இல்லை.
என்ன காடு அதை நன்றாக எங்களுக்கு வரிசைப்படுத்தப்பட்ட கொண்டே இருக்கிறது.
பின்னர் இறுதியாக, நாம் எதிர்பார்த்தபடி, நாம் அங்கு அழைத்து rmtree வேண்டும், rmforest மற்றும்.
>> இதுவரை விநியோகம் குறியீடு பார்த்து, huffile.c, புரிந்து கொள்ள மிக கடினமான மூலம் ஒருவேளை இருந்தது
மற்ற கோப்புகளை தாங்களாகவே பின்பற்ற மிகவும் எளிமையான இருந்தன.
சுட்டிகள் மற்றும் தொடர்புடைய பட்டியல்கள் மற்றும் நமது அறிவை கொண்டு,
நாம் மிகவும் நன்றாக பின்பற்ற முடிந்தது.
ஆனால் உண்மையில் நாம் முழுமையாக புரிந்து என்பதை உறுதி செய்ய வேண்டும் அனைத்து. H கோப்புகள் இல்லை
நீங்கள், அந்த பதிலுக்கு மதிப்புகள் கையாள்வதில், அந்த செயல்பாடுகளை அழைப்பு வேண்டும், ஏனெனில்
எனவே நீங்கள் முழுமையாக செயல்படுத்த வேண்டும் என்ன நடவடிக்கை புரிந்து என்று உறுதி
அந்த செயல்பாடுகளை ஒரு அழைப்பு போதெல்லாம்.
ஆனால் உண்மையில் அது உள்ளே புரிந்து நாம் அந்த ஏனெனில் மிக அவசியம் இல்லை. H கோப்புகள்.
நாம் எமது விநியோக குறியீடு விட்டு 2 கோப்புகள் இல்லை.
>> இது திணிப்பு பார்க்கிறேன்.
இங்கே அதன் கருத்து மூலம் திணிப்பு ஒரு ஹஃப்மேன்-சுருக்கப்பட்ட கோப்பை எடுக்கும்
பின்னர் மொழிபெயர்கப்பட்டுள்ளது மற்றும் டம்ப் அதன் உள்ளடக்கம் ஆல் அவுட்.
இங்கே நாம் hfopen அழைப்பு என்று பார்க்க.
இந்த, * உள்ளீடு = fopen தாக்கல் செய்ய பிரதிபலிக்கும் வகையாக
பின்னர் நீங்கள் தகவலை அனுப்ப.
அதற்கு பதிலாக, நீங்கள் ஒரு Huffile கடந்து செல்லும் என்று ஒரு கோப்பு * என்ற தவிர கிட்டத்தட்ட ஒரே மாதிரியாக தான்;
அதற்கு பதிலாக fopen நீங்கள் hfopen கடந்து செல்லும்.
இங்கே நாம் வகையான நாம் ஹெட்டரில் படிக்க எப்படி ஒத்த இது, முதல் தலைப்பு படித்தேன்
ஒரு பிட்மேப் கோப்பு.
நாம் இங்கே செய்கிறீர்கள் காண சோதனை என்பதை தலைப்பு தகவல்
அது ஒரு உண்மையான திடீரென தோன்றும் கோப கோப்பு என்று குறிக்கிறது என்று உரிமை மேஜிக் எண் உள்ளது,
பின்னர் உறுதி செய்ய இந்த காசோலைகள் அனைத்தும் நாம் திறந்த ஒரு உண்மையான huffed கோப்பு அல்லது இல்லை என்று கோப்பு என்று.
என்ன செய்கிறது அது நாம் பார்க்க முடியும் என்று சின்னங்கள் அனைத்தும் அதிர்வெண்கள் வெளியீடாக உள்ளது
ஒரு வரைகலை அட்டவணை ஒரு முனையத்தில் உள்ள.
இந்த பகுதி பயனுள்ளதாக இருக்கும்.
அது ஒரு பிட் உள்ளது மற்றும் மாறி பிட் ஒரு பிட் பிட் படிக்கிறார் பின்னர் அதை அச்சிடுகிறது.
நான் ஒரு கோப்பு huffing விளைவு இது hth.bin, மீது டம்ப் அழைக்க என்று நீங்கள்
ஊழியர்கள் தீர்வு பயன்படுத்தி, நான் இந்த கிடைக்கும்.
இந்த எழுத்துக்கள் அனைத்து outputting பின்னர் அவர்கள் தோன்றும் எந்த அதிர்வெண் வைத்தது.
நாம் பார்த்தால், அவர்கள் மிக இந்த தவிர 0s உள்ளன: இரண்டு முறை தோன்றும் இதில் எச்,,
பின்னர் ஒரு முறை தோன்றும் இது டி.
பின்னர் இங்கே நாம் 0 க்கள் மற்றும் 1 வி உண்மையான செய்தி.
நாம் hth.txt பார்த்தால், இது, மறைமுகமாக huffed என்று அசல் செய்தி
நாம் அங்கு சில அதிகபட்ச மற்றும் Ts பார்க்க எதிர்பார்க்கிறோம்.
குறிப்பாக, நாம் வெறும் 1 டி மற்றும் 2 அதிகபட்ச பார்க்க எதிர்பார்க்கிறோம்.
இங்கே நாம் hth.txt உள்ளன. அது உண்மையில் HTH உள்ளது.
நாங்கள் அதை பார்க்க முடியாது என்றாலும், அங்கு சேர்க்கப்பட்டுள்ளது, ஒரு வரியில் முடிவதற்கு சற்று கதாபாத்திரம்.
திடீரென தோன்றும் கோப கோப்பு hth.bin மேலும் அதே NEWLINE தன்மையை என்கோடிங்.
இங்கே நாம், ஒழுங்கு NEWLINE பின்னர் HTH மற்றும் என்று
நாம் ஒரு ஒற்றை 1 அநேகமாக எச் குறிப்பிடப்படுகின்றன என்று பார்க்கலாம்
பின்னர் டி அநேகமாக 01 மற்றும் அடுத்த எச் 1 மற்றும்
பின்னர் நாம் இரண்டு 0s சுட்டிக்காட்டப்படுகிறது ஒரு NEWLINE வேண்டும்.
Cool.
>> பின்னர் இறுதியாக, நாம் பல. கேட்ச் கையாள்வதில் மற்றும். நீங்கள் ஏனெனில் h கோப்புகள்,
நாம், ஒடுக்கி ஒரு அழகான சிக்கலான வாதம் போகிறது
எனவே இங்கு நாம் உங்களுக்கு டம்ப் செய்கிறது என்று ஒரு Makefile வேண்டும்.
ஆனால் உண்மையில், நீங்கள் உங்கள் சொந்த puff.c கோப்பினை உருவாக்கும் பற்றி போக வேண்டும்.
Makefile உண்மையில் நீங்கள் puff.c செய்யும் சமாளிக்க முடியாது.
நாம் Makefile திருத்த நீங்கள் அதை விட்டு.
நீங்கள் அனைத்து போன்ற ஒரு கட்டளையை உள்ளிட போது, உதாரணமாக, நீங்கள் அனைவரும் செய்யும்.
கடந்த pset இருந்து Makefile உதாரணங்களை பார்க்க எனக்கு
அதே போல் உங்கள் பஃப் கோப்பு செய்ய முடியும் என்பதை இந்த ஒரு போகவில்லை
இந்த Makefile திருத்தி.
என்று நம் விநியோகம் குறியீடு அதை பற்றி.
>> நாம் அந்த வழியாக வந்திருக்கிறேன் முறை, பின்னர் இங்கே இன்னொரு நினைவூட்டல் தான்
எப்படி நாம் ஹஃப்மேன் முனைகளில் கையாள்வதில் போகிறாய்.
நாம் இனி அவர்கள் முனைகளில் அழைப்பு வேண்டும் போவதில்லை; நாம் அவர்களை மரங்கள் அழைப்பு போகிறாய்
நாம் ஒரு எரிப்பதை தங்கள் அடையாளத்தை குறிக்கும் போகிறாய் அங்கு,
அவற்றின் அதிர்வெண், ஒரு முழு எண் கொண்ட நிகழ்வுகள் பல.
அது ஒரு மிதவை விட துல்லியமான காரணம் நாம் பயன்படுத்தி வருகிறோம்.
மற்றும் நாம் இடது குழந்தை போல் வலது குழந்தை மற்றொரு சுட்டிக்காட்டி இருக்கிறது.
ஒரு காட்டில், நாம் கண்டது போல, வெறும் மரம் ஒரு இணைக்கப்பட்ட பட்டியலில் உள்ளது.
இறுதியில், நாங்கள் எங்கள் திடீரென தோன்றும் கோப கோப்பு உருவாகின்றனர் போது,
நாங்கள் எங்கள் காடுகள் தான் 1 மரம் கொண்டிருக்க வேண்டும் -
1 மரம், பல குழந்தைகள் 1 ரூட்.
முந்தைய நாம் நமது ஹஃப்மேன் மரங்கள் செய்யும் போது மீது,
நாம் திரையில் மீது முனைகள் அனைத்து வைப்பதன் மூலம் தொடங்கியது
மேலும், நாம் இந்த முனைகளில் போகிறது என்று
இறுதியில் அவர்கள் இலைகள் போகிறாய், மற்றும் இந்த அவர்களது சின்னம், இந்த அவற்றின் அதிர்வெண்.
நாம் மட்டும் 3 கடிதங்கள் இருந்தால் நம் காடுகளில், அந்த 3 மரங்கள் ஒரு காட்டில் தான்.
பின்னர் நாம், நாம் முதலில் பெற்றோர் சேர்த்தனர் போது, செல்லவேண்டும்
நாங்கள் 2 மரங்கள் ஒரு காடு இருந்தது.
நாம் நமது காட்டில் இருந்து அந்த குழந்தைகள் 2 நீக்கப்பட்ட பின்னர் பெற்றோர் முனை அதை பதிலாக
அந்த குழந்தைகள் என அந்த 2 முனைகளில் இருந்தது.
பின்னர் இறுதியாக, எமது கடந்த நிலையில், BS நமது எடுத்துக்காட்டாக செய்து கொண்ட படி, மற்றும் Cs
இறுதி பெற்றோர் செய்ய வேண்டும்,
அதனால், பின்னர் 1 காடுகளில் மரங்களை எங்கள் மொத்த எண்ணிக்கை கொண்டு என்று.
எல்லோரும் உங்கள் காட்டில் பல மரங்கள் தொடங்கும் எப்படி பார்க்கிறது
மற்றும் 1 முடிவடையும்? சரி. Cool.
>> நாம் என்ன பஃப் செய்ய வேண்டும்?
நாம் என்ன செய்ய வேண்டும் என்று எப்போதும், அவர்கள் நம்மை உள்ளீடு வலது வகை கொடுக்க, உறுதி
நாம் உண்மையில் நிரலை இயக்க முடியும்.
இந்த வழக்கில் அவர்கள் முதல் கட்டளை வரி வாதம் பிறகு எங்களுக்கு கொடுக்க போகிறாய்
2 மேலும்: நாங்கள் decompress மற்றும் decompressed கோப்பின் வெளியீடு விரும்பும் கோப்பு.
ஆனால் நாம், அவர்கள் மதிப்புகள் சரியான அளவு நம்மை கடந்து என்று உறுதி
நாம் உள்ளீடு ஒரு திடீரென தோன்றும் கோப கோப்பு அல்லது இல்லை என்று உறுதி செய்ய வேண்டும்.
பின்னர் மீண்டும் நாம், நாம் நமது மரம் உருவாக்க வேண்டும், அது ஒரு திடீரென தோன்றும் கோப கோப்பு என்று உத்தரவாதம்
இது செய்தி அனுப்பிய நபர் கட்டப்பட்ட அந்த மரத்தில் பொருந்தும் என்று மரத்தில் கட்டி.
நாம் மரம் கட்ட பிறகு, நாம் சேர்ந்து 0 க்கள் மற்றும் அவர்கள் இயற்றியது என்று 1 வி, சமாளிக்க முடியாது
இது ஒரே காரணம், நம் மரம் சேர்ந்து அந்த பின்பற்ற
பின்னர், அந்த செய்தியை எழுத எழுத்துகள் மீண்டும் பிட்கள் விளக்குவது.
பின்னர் இறுதியில் நாம், இங்கே சுட்டிகள் கையாள்வதில் ஏனெனில்
நாம் எந்த நினைவக கசிவை இல்லை என்பதை உறுதி செய்ய வேண்டும்
என்று நாம் இலவச எல்லாம்.
>> சரியான பயன்பாடு உறுதி இப்போது நமக்கு பழைய தொப்பி.
நாம் ஒரு உள்ளீடு அழைத்து, இது ஊதி வெளியிடும் சிறு மூச்சு (அ) புகை கோப்பின் பெயர் இருக்கும்,
பின்னர் நாம், ஒரு வெளியீடு குறிப்பிட
எனவே உரை கோப்பு எந்த பொங்கிய வெளியீடு, கோப்பு பெயர்.
அந்த பயன்பாடு இருக்கிறது. இப்போது நாம் உள்ளீடு huffed அல்லது இல்லை என்று உறுதி செய்ய வேண்டும்.
மீண்டும் நினைத்து, எங்களுக்கு உதவும் என்று விநியோகம் குறியீடு அங்கே எதுவும் இல்லை
ஒரு கோப்பு huffed இல்லையா புரிந்து கொண்டு?
Huffeader பற்றி huffile.c தகவல் இருந்தது.
நாம் ஒவ்வொரு திடீரென தோன்றும் கோப கோப்பு ஒரு மேஜிக் எண் அது தொடர்புடைய ஒரு Huffeader உண்டு என்பது எனக்கு தெரியும்
ஒவ்வொரு குறியீடும் அதிர்வெண்களின் அதே போல் ஒரு வரிசை
அத்துடன் ஒரு செக்சம் என்று.
நாம் என்று, ஆனால் நாங்கள், dump.c ஒரு கண்ணோட்டம் எடுத்து
இதில் ஒரு திடீரென தோன்றும் கோப கோப்பில் படித்து கொண்டிருந்தேன்.
அதனால் அதை செய்ய, அது உண்மையில் huffed அல்லது இல்லை என சோதிக்க வேண்டும்.
அதனால் நாம் நம் puff.c. ஒரு அமைப்பு என dump.c பயன்படுத்த முடியும்
மீண்டும் pset 4 நாம் RGB மும்மடிகள் உள்ள நகல் கோப்பை copy.c போது
நாம், ஹூட்யூனிட் மற்றும் மறுஅளவிடு அந்த விளக்கம்
இதேபோல், நீங்கள் என்ன செய்ய முடியும் வெறும் cp dump.c puff.c போன்ற கட்டளையை இயக்கவும்
மற்றும் அங்கு குறியீடு சில பயன்படுத்தவும்.
இருப்பினும், இது ஒரு செயல்முறை நேரடியாக இருக்க போவதில்லை
puff.c உங்கள் dump.c மொழிபெயர்ப்பது செய்ய,
ஆனால் குறைந்தபட்சம் அதை தொடங்க நீங்கள் எங்காவது கொடுக்கிறது
உள்ளீடு உண்மையில் huffed அல்லது இல்லை என்று உறுதி எப்படி
அத்துடன் ஒரு சில விஷயங்கள்.
நாம் சரியான பயன்பாடு உறுதி மற்றும் உள்ளீடு huffed என்று உறுதி.
நாம் நமது சரியான பிழை சோதனை செய்யப்படுகிறது என்று செய்துவிட்டேன் என்று ஒவ்வொரு முறையும்,
ஒரு பிரச்சனை என்றால், மீண்டும் சில தோல்வி ஏற்பட்டால் செயல்பாடு விட்டுவிடுதல்.
>> இப்போது நாம் என்ன செய்ய வேண்டும் உண்மையான மரம் கட்டி உள்ளது.
நாம் காடுகளில் இருக்கும் என்றால், 2 முக்கிய பணிகள் உள்ளன
நாம் மிகவும் பழக்கமான ஆக வேண்டும் போகிறோம் என்று.
அங்கு பூலியன் செயல்பாடு ஆலை என்று எங்கள் காட்டில் உள்ளே ஒரு அல்லாத 0 அதிர்வெண் மரம் செடிகள்.
எனவே அங்கு ஒரு காட்டில் ஒரு மரம் ஒரு சுட்டிக்காட்டி ஒரு சுட்டிக்காட்டி உள்ள கடக்க.
விரைவு கேள்வி: நீங்கள் ஒரு ஹஃப்மேன் மரம் கட்டி போது எத்தனை காடுகள் நீ?
எங்கள் காடுகள் சரி, நம் கேன்வாஸ் போன்ற?
நாம் மட்டும் 1 காட்டில் போகிறது, ஆனால் நாம் பல மரங்கள் போகிறது.
நீங்கள் தாவர அழைப்பு முன்னர், நீங்கள் மறைமுகமாக உங்கள் காட்டில் செய்ய வேண்டும் போகிறோம்.
நீங்கள் ஒரு காட்டின் செய்யலாம் எப்படி forest.h பார்க்க ஒரு கட்டளை என்று உள்ளது.
நீங்கள் ஒரு மரத்தின் தாவர முடியும். நாம் அதை எப்படி தெரியும்.
மேலும் நீ, காட்டில் இருந்து ஒரு மரம் எடுக்க முடியாது
குறைந்த எடை கொண்ட ஒரு மரம் நீக்குவது என்று நீங்கள் சுட்டிக்காட்டி கொடுக்கும்.
நாம் உதாரணங்கள் நம்மை செய்துகொண்டு போது மீண்டும் நினைத்து,
நாம் அது வரையும் போது, நாங்கள் வெறுமனே ஒரு சேர்க்கவில்லை.
ஆனால் இங்கே பதிலாக தான், இணைப்புகளை சேர்ப்பதன்
அந்த கணுக்களின் 2 நீக்கி பின்னர் மற்றொரு அதை பதிலாக நீங்கள் இன்னும் அதை நினைத்து.
பறிப்பதாக மற்றும் நடுவதற்கு அடிப்படையில் அந்த வெளிப்படுத்த,
நீங்கள் 2 மரங்கள் எடுக்கவில்லை பின்னர் மற்றொரு மரம் நடுதல்
என்று நீங்கள் குழந்தைகளை போல் எடுத்து அந்த 2 மரங்கள் உள்ளன.
ஹஃப்மேன் மரம் உருவாக்க, நீங்கள் வரிசையில் குறியீடுகள் மற்றும் அதிர்வெண்கள் படிக்க முடியும்
Huffeader உங்களுக்கு கொடுக்கிறது ஏனெனில்,
நீங்கள் அதிர்வெண்கள் ஒரு வரிசை கொடுக்கிறது.
எனவே நீங்கள் செல்லலாம் மற்றும் அதை உள்ள 0 எதையும் புறக்கணிக்க
நாம் அது முடிவில் 256 இலைகள் விரும்பவில்லை என்பதால்.
நாம் மட்டும் எழுத்துக்கள் என்று இலைகள் எண்ணிக்கை வேண்டும்
என்று உண்மையில் கோப்பு பயன்படுத்தப்படும்.
நீங்கள், அந்த குறியீடுகளை படிக்க, அல்லாத 0 அதிர்வெண்களை அந்த குறியீடுகளை ஒவ்வொரு முடியாது
அந்த மரங்கள் இருக்கும்.
நீங்கள் என்ன செய்ய முடியும், நீங்கள் ஒரு அல்லாத 0 அதிர்வெண் குறியீடாக வாசிக்க ஒவ்வொரு முறை
நீங்கள் காட்டில் அந்த மரத்தில் தாவர முடியும்.
நீ காட்டு மரங்களின் தாவர முறை, நீங்கள் உடன்பிறந்தவர்கள் என அந்த மரங்கள் சேர, முடியாது
எனவே, நடுவதற்கு மற்றும் உன்னை அழைத்து அங்கு எடுக்கவில்லை 2 பின்னர் தாவர 1 செல்கிறேன்
அங்கு 1 என்று நீங்கள் ஆலை நீங்கள் தேர்ந்தெடுத்த 2 குழந்தைகள் பெற்றோர் என்று.
எனவே, உங்கள் முடிவு உங்கள் காட்டில் ஒரு மரம் இருக்கும்.
என்று நீங்கள் உங்கள் மரம் உருவாக்க எப்படி.
>> இங்கே தவறு என்று பல விஷயங்கள் உள்ளன
ஏனெனில் நாம் புதிய மரங்கள் செய்யும் என்று போன்ற சுட்டிகள் மற்றும் பொருட்களை கையாளும் கையாள்வதில்.
நாம் சுட்டிகள் கையாளும் போது முன்,
நாம் malloc'd போதெல்லாம் நாம் ஒரு NULL சுட்டிக்காட்டி மதிப்பு தரவில்லை என்று விரும்பினார்.
இந்த செயல்முறை உள்ள பல படிகள் பல சந்தர்ப்பங்களில் இருக்க போகிறோம்
அங்கு உங்கள் திட்டம் தோல்வியடையும் வாய்ப்புள்ளது.
நீ என்ன செய்ய வேண்டும், நீங்கள் அந்த பிழைகளை கையாள என்பதை உறுதி செய்ய வேண்டும் என்று
மற்றும் ஸ்பெக் அது, மனதார அவற்றை கையாள நிதி
எனவே நிரலை விட்டு வேண்டும் ஏன் இன்னும் சொல்ல பயனர் ஒரு செய்தியை அச்சிட போன்ற
பின்னர் உடனடியாக அதை விட்டு.
இந்த பிழை கையாளுதல் செய்ய, நீங்கள் அதை பார்க்க வேண்டும் என்று நினைவில்
தோல்வி இருக்கும் என்று ஒவ்வொரு முறை.
நீங்கள் ஒரு புதிய சுட்டிக்காட்டி செய்கிறாய் என்று ஒவ்வொரு முறை
நீங்கள் வெற்றி என்று உறுதிப்படுத்தி கொள்ள வேண்டும்.
நாம் ஒரு புதிய சுட்டிக்காட்டி மற்றும் malloc அதை தான் செய்ய பயன்படுத்தப்படும் என்ன முன்,
பின்னர் நாம் சுட்டிக்காட்டி NULL என்பதை சரிபார்க்க வேண்டும்.
எனவே, நீங்கள் அதை தான் முடியும் சில சமயங்களில் இருக்க போகிறோம்
ஆனால் சில நேரங்களில் நீங்கள் உண்மையில் ஒரு செயல்பாடு அழைப்பு
அந்த செயல்பாடு இருக்கும், என்று mallocing செய்வது என்று தான்.
அந்த வழக்கில், நாம் குறியீடு உள்ள செயல்பாடுகளை சில திரும்பி பார்த்து,
இன்னும் சில பூலியன் செயல்பாடுகள் இருக்கும்.
சுருக்க வழக்கில் நாம் foo என ஒரு பூலியன் செயல்பாடு இருந்தால்,
அடிப்படையில், நாங்கள், foo என்ன செய்தாலும் செய்து கூடுதலாக என்று நினைத்து கொள்ளுங்கள்
அது ஒரு பூலியன் செயல்பாடு என்பதால், அது உண்மையா பொய்யா கொடுக்கிறது -
நீங்கள் உண்மையான வெற்றி, தவறான என்றால் இல்லை.
நாம் foo திரும்ப மதிப்பு சரி அல்லது தவறு என்பதை சரிபார்க்க வேண்டும்.
இது தவறு என்றால், அது நாம் செய்தி சில வகையான அச்சிட வேண்டும் போகிறீர்கள் என்று அர்த்தம்
பின்னர் திட்டத்தை கைவிட்டார்.
நாம் என்ன செய்ய வேண்டும் foo திரும்ப மதிப்பு சோதனை ஆகும்.
Foo தவறான கொடுக்கிறது என்றால், நாம் பிழை சில வகையான ஏற்பட்டுள்ளது என்று
நாம் நமது திட்டத்தை விட்டு நீங்கள் வெளியேற வேண்டும்.
இதை செய்ய ஒரு வழி உண்மையான செயல்பாடு தன்னை உங்கள் நிலை எங்கே ஒரு நிபந்தனை இருக்கிறது.
Foo x எடுத்து சொல்ல.
நாம் ஒரு நிபந்தனையாக இருக்க முடியும் (foo (x)).
Foo இயக்கும் முடிவில் அது உண்மை கொடுக்கிறது என்றால் அடிப்படையில், அது என்னவென்றால்,
விழாவில் foo மதிப்பீடு செய்ய ஏனெனில் நாம் இதை செய்ய முடியும்
முழு நிலையை மதிப்பீடு செய்ய வேண்டும்.
எனவே, அந்த செயல்பாடு உண்மை கொடுக்கிறது மற்றும் வெற்றிகரமான நீங்கள் ஏதாவது செய்ய முடியும் எப்படி.
ஆனால் நீங்கள் பிழை சோதனை போது, நீங்கள் உங்கள் செயல்பாடு தவறான கொடுக்கிறது என்றால் விட்டு வேண்டும்.
என்ன செய்ய நான் சேர்க்க ஒரு == தவறான அல்லது அதை முன் களமிறங்கினார் சேர்க்க
பின்னர் நீங்கள் (! foo) என்றால் இல்லை.
அந்த நிலையில் அந்த உடலுக்குள் நீ, பிழை கையாளுதல் அனைத்து வேண்டும்
எனவே "இந்த மரம் உருவாக்க முடியவில்லை", போன்ற பின்னர் 1 அல்லது அதை திருப்பி.
என்று என்ன, எனினும், foo தவறான திரும்பி கூட என்று -
Foo உண்மை கொடுக்கிறது என்று.
பிறகு நீங்கள் மீண்டும் foo அழைக்க இல்லை. என்று ஒரு தவறான கருத்து பொதுவாக உள்ளது.
இது உங்கள் நிலையில் ஏனெனில், ஏற்கனவே மதிப்பீடு,
நீங்கள் மரம் அல்லது அந்த மாதிரி ஏதாவது செய்ய பயன்படுத்தி என்றால், அதனால் நீங்கள் ஏற்கனவே முடிவு இல்லை
அல்லது ஆலை அல்லது தேர்வு அல்லது ஏதாவது.
ஏற்கனவே அந்த மதிப்பை கொண்டுள்ளது. ஏற்கனவே செயல்படுத்தப்பட்ட.
அதை நிலை போன்ற பூலியன் செயல்பாடுகளை பயன்படுத்த பயனுள்ளதாக இருக்கும்
ஏனெனில் அல்லது நீங்கள் உண்மையில் வளைய உடல் இயக்க முடியாது,
அதை எப்படியும் செயல்பாடு இயக்கும்.
>> கடந்த படி நமது இரண்டாவது கோப்பு செய்தியை எழுதி.
ஒருமுறை நாங்கள் ஹஃப்மேன் மரம் கட்டி, பின் கோப்பு செய்தியை எழுதி அழகான நேர்மையானவன்.
அது 0 க்கள் மற்றும் 1 வி பின்பற்ற இப்போது மிகவும் நேரடியான தான்.
அதனால் மாநாட்டின் மூலம் நாம் ஒரு ஹஃப்மேன் கிளையில் 0s விட்டு குறிக்கின்றன என்று
மற்றும் 1 வி சரியான குறிப்பிடுகின்றன.
நீங்கள் ஒரு 0 கிடைக்கும் என்று நீங்கள் பிட் பிட் படிக்க மிகவும் பின், ஒவ்வொரு முறையும்
நீங்கள் ஒரு 1 படிக்கும் ஒவ்வொரு முறையும் பின்னர் இடது கிளை பின்பற்ற, மற்றும் நான்
நீங்கள் சரியான கிளை பின்பற்ற போகிறோம்.
நீங்கள் ஒரு இலை ஹிட் வரை பின் தொடர போகிறோம்
இலைகள் கிளைகள் இறுதியில் இருக்கும் என்பதால்.
நாம் ஒரு இலை அல்லது வெற்றி தான் என்பதை எப்படி சொல்ல முடியும்?
நாம் முன்பே சொன்னது.
[மாணவர்] சுட்டிகள் NULL இருந்தால். >> சரி.
இடது மற்றும் வலது ஆகிய மரங்கள் சுட்டிகளையும் NULL நாம் ஒரு இலை ஹிட் தான் நாம் சொல்ல முடியும்.
ஆனால்.
நாம் நம் திடீரென தோன்றும் கோப கோப்பில் பிட் பிட் படிக்க வேண்டும் என்று.
நாம் dump.c முன்பு பார்த்த, அவர்கள் என்ன செய்தார்கள் அவர்கள் திடீரென தோன்றும் கோப கோப்பில் பிட் பிட் படிக்க ஆகும்
மற்றும் அந்த பிட்கள் என்ன அச்சு.
நாம் செய்ய போவதில்லை. நாம் சற்று சிக்கலாக என்று ஏதாவது செய்ய போகிறோம்.
ஆனால் நாம் என்ன செய்ய முடியும் நாங்கள் பிட் ல் படிக்கும் குறியீடு என்று பிட் எடுத்து முடியும்.
இங்கே நாம் இருக்கிறோம் என்பதை தற்போதைய பிட் குறிக்கும் முழு பிட் உள்ளது.
நீங்கள் கோப்பு இறுதியில் வெற்றி வரை இந்த கோப்பில் பிட்கள் அனைத்து தேடி பார்த்து கொள்கிறாள்.
அந்த அடிப்படையில், நீங்கள் இயக்கி சில வகையான வேண்டும் போகிறாய்
உங்கள் மரம் தொடரவேண்டும்.
பின்னர், பிட் 0 அல்லது 1 என்று அடிப்படையாக
நீங்கள் இடது என்று இயக்கி நகர்த்த அல்லது வலது அதை நகர்த்த வேண்டும் போகிறாய்
அனைத்து வழி நீங்கள் ஒரு இலை ஹிட் வரை, எனவே அனைத்து வழி நீங்கள் தான் அந்த முனை வரை
மேலும் முனைகளில் சுட்டி இல்லை.
நாம் ஏன் ஒரு ஹஃப்மேன் கோப்பு ஆனால் மோர்ஸ் குறியீடு இந்த செய்ய முடியும்?
மோர்ஸ் குறியீடு உள்ள தெளிவின்மை ஒரு பிட் உள்ளது, ஏனெனில்.
நாங்கள் காத்திருந்தது ஓ, போன்ற இருக்க முடியும், நாம் வழியில் ஒரு கடிதம் ஹிட் தான், அதனால் இந்த, நம் கடிதம்
நாம் ஒரு பிட் இனி தொடர்ந்து இருந்தால், நாம் மற்றொரு கடிதம் ஹிட் என்று அதேசமயம்.
ஆனால் அந்த, ஹஃப்மேன் குறியீட்டு நடக்கும் இல்லை
எனவே நாங்கள் செல்கிறோம் என்று ஒரே வழி ஒரு பாத்திரம் அடிக்க என்று கவலைப்படாமலிருப்பேன் முடியும்
அந்த முனை இடது மற்றும் வலது குழந்தைகள் NULL இருந்தால் தான்.
>> இறுதியாக, நம் நினைவகம் அனைத்து விடுவிக்க வேண்டும்.
நாம் கையாளும் வருகிறோம் என்று இருவரும் நெருங்கிய திடீரென தோன்றும் கோப கோப்பு வேண்டும்
அதே போல் நம் காடுகளில் மரங்களை எல்லாம் நீக்க.
உங்கள் செயல்பாடு அடிப்படையில், ஒருவேளை நீங்கள் காட்டில் நீக்க அழைக்க வேண்டும் போகிறாய்
பதிலாக உண்மையில் மரங்கள் உங்களை எல்லாம் நடக்கிறது.
நீங்கள் எந்த தற்காலிக மரங்கள் செய்தால் ஆனால், நீங்கள் அந்த விடுவிக்க வேண்டும் என்று நான் நினைக்கிறேன்.
நீங்கள் உங்கள் குறியீடு தெரியும், அதனால் நீங்கள் நினைவகத்தை ஒதுக்கீடு நீங்கள் எங்கே என்று.
நீங்கள் போய் இவ்வளவு என்றால், malloc ஐந்து F'ing கூட கட்டுப்பாடு மூலம் தொடங்க
பார்த்து எப்போது நீங்கள் malloc மற்றும் நீங்கள் அனைத்து விடுவித்து உறுதி செய்யும்
ஆனால் பின்னர் தான், உங்கள் குறியீடு நடக்கிறது
நீங்கள் நினைவகத்தை ஒதுக்கீடு என்று எங்கே புரிந்து.
பொதுவாக நீங்கள் ", ஒரு கோப்பை இறுதியில் நான் என் காட்டில் உள்ள வன நீக்க போகிறேன்", கூறலாம்
எனவே அடிப்படையில் இலவச, அந்த நினைவு துடைக்க என்று,
"பின்னர் நான் கோப்பு மூட பிறகு என் திட்டத்தை விட்டு போகிறார் செல்கிறேன்."
ஆனால் உங்கள் திட்டம் திடீர் என்று மட்டுமே நேரம்?
இல்லை, ஏனெனில் சில நேரங்களில் நடந்தது என்று பிழை ஏற்பட்டுள்ளது.
நாம் ஒரு கோப்பை திறக்க முடியவில்லை அல்லது நாம் மற்றொரு மரம் செய்ய முடியவில்லை
அல்லது பிழை சில வகையான நினைவக ஒதுக்கீடு முறை நடந்த அது NULL திரும்பினார்.
ஒரு பிழை நடந்தது, பின்னர் நாங்கள் மீண்டும் விலகினார்.
எனவே நீங்கள், உங்கள் நிரல் எந்த முடியும் நேரம் விட்டு முடியும் என்பதை உறுதி செய்ய வேண்டும்
நீங்கள் உங்கள் நினைவகம் அனைத்து விடுவிக்க வேண்டும்.
இது உங்கள் குறியீடு விட்டு அந்த முக்கிய செயல்பாடு மிகவும் இறுதியில் இருக்க போவதில்லை.
உங்கள் குறியீடு திறன் முன்கூட்டியே வெளிவரும் ஒவ்வொரு உதாரணமாக திரும்பி பார்க்க வேண்டும்
பின்னர் இலவச என்ன நினைவக அர்த்தமுள்ளதாக.
நீ காட்டிற்கு செய்து அந்த தவறான திரும்ப அழைத்தார்.
பின்னர் ஒருவேளை நீங்கள் உங்கள் காட்டில் நீக்க வேண்டும்
நீங்கள் இன்னும் ஒரு காட்டில் இல்லை என்பதால்.
ஆனால் குறியீடு ஒவ்வொரு கட்டத்திலும் நீங்கள் முன்கூட்டியே வெளிவரும் அங்கு
நீங்கள் எந்த சாத்தியம் நினைவக என்பதை உறுதி செய்ய வேண்டும்.
>> எனவே நாம் நினைவு பெறலாம் கையாள்வதில் மற்றும் திறன் கசிவை கொண்டிருக்கும் போது,
நாம் நம் தீர்ப்பு நம் தர்க்கம் பயன்படுத்த மட்டும் வேண்டும்
ஆனால் நாம் ஒழுங்காக நம் நினைவகம் அனைத்து விடுவிக்க நான் என்பதை தீர்மானிக்க Valgrind பயன்படுத்த.
நீங்கள் பஃப் மீது Valgrind இயக்க முடியும் மற்றும் நீங்கள் அதை கடக்க வேண்டும்
கட்டளை வரி அளவுருக்களை சரியான எண்ணிக்கையில் Valgrind வேண்டும்.
நீங்கள் இயக்க முடியும், ஆனால் வெளியீடு ஒரு பிட் ரகசிய உள்ளது.
, நாம் Speller அது பயன்படுத்தப்படும் ஒரு பிட் வந்திருக்கிறேன், ஆனால் நாம் இன்னும் கொஞ்சம் உதவி தேவை
அதனால் பிறகு, கசிவு சரிபார்த்து = முழு போன்ற இன்னும் சில கொடிகளை கொண்டு இயங்கும்
என்று ஒருவேளை நம்மை Valgrind சில இன்னும் பயனுள்ளதாக வெளியீடு கொடுக்கும்.
>> நீங்கள் பிழைத்திருத்தம் போது மற்றொரு பயனுள்ள முனையில் வேறுபாடு கட்டளை.
நீங்கள், திடீரென தோன்றும் கோப நிலை பற்றிய ஊழியர்களின் செயல்படுத்த அணுக ரன் என்று ஒரு உரை கோப்பில், முடியாது
பின்னர் குறிப்பிட்ட இருக்க வேண்டும், ஒரு பைனரி கோப்பு, ஒரு பைனரி திடீரென தோன்றும் கோப கோப்பு அது வெளியீடு.
பின்னர் நீங்கள் அந்த பைனரி கோப்பு உங்கள் சொந்த பஃப் ரன், என்றால்
பின்னர் பலவகையில், உங்கள் outputted உரை கோப்பு மாதிரியாக இருக்க போகிறது
நீங்கள் கடந்து அந்த அசல் ஒரு
இங்கே நான் உதாரணமாக hth.txt பயன்படுத்தி, மற்றும் உங்கள் குறிப்பிட்ட பேசப்படுவோம் தான்.
அந்த மொழியில் தான் HTH பின்னர் ஒரு வரியில் முடிவதற்கு சற்று நேரம்.
ஆனால் நிச்சயமாக எனக்கு நீங்கள் நிச்சயமாக இனி உதாரணங்கள் பயன்படுத்த தூண்டும்
உங்கள் உரை கோப்பு.
>> நீங்கள் கூட decompressing ஒருவேளை அடக்க ஒரு ஷாட் எடுக்க முடியும்
போர் மற்றும் அமைதி போன்ற நீ Speller பயன்படுத்தப்படும் கோப்புகள் சில
அல்லது ஜேன் ஆஸ்டின் அல்லது அப்படி ஒன்று - குளிர் என்ன என்று - அல்லது ஆஸ்டின் பவர்ஸ்,
நாம் அது பெரிய கோப்புகளை கையாளும் வகையான கீழே வரவில்லை என்பதால்,
நாம் இங்கே அடுத்த கருவி, ls-l பயன்படுத்தப்பட்டுள்ளது.
நாம் அடிப்படையில் நமது தற்போதைய அடைவில் அனைத்து உள்ளடக்கங்களை பட்டியலிடுகிறது இது ls, பயன்படுத்தப்படும்.
கொடி எல் கடந்து செல்லும் உண்மையில் அந்த கோப்புகள் அளவு காட்டுகிறது.
நீங்கள் pset ஸ்பெக் மூலம் சென்றால், அது உண்மையில், பைனரி கோப்பு உருவாக்கும் மூலம் உங்களை வழிநடத்தும்
அதை huffing, மற்றும் நீங்கள் மிகவும் சிறிய கோப்புகளை பார்க்க
அதை அடக்க அந்த தகவலை அனைத்து மொழிபெயர்ப்பது விண்வெளி செலவு
அப்படியே அதிர்வெண்கள் மற்றும் பொருட்களை உண்மையான நன்மை கடக்கும்
முதல் இடத்தில் கோப்பு அடக்க வேண்டும்.
நீங்கள் சில நீண்ட உரை கோப்புகள் அதனை இயக்க என்றால், நீங்கள் சில நன்மைகளை பெற தொடங்கும் என்று பார்க்கலாம்
அந்த கோப்புகளை அடக்க வேண்டும்.
>> பின்னர் இறுதியாக, நாம் நிச்சயமாக மிகவும் எளிது வருவதாக இது நம் பழைய நண்பா GDB, இல்லை.
>> நாம் மரங்களை உருவாக்கும் ஒருவேளை திடீரென தோன்றும் கோப மரங்கள் அல்லது செயல்முறை எந்த கேள்விகள்
அல்லது Huff'n பஃப் வேறு எந்த கேள்விகள்?
சரி. நான் ஒரு பிட் சுற்றி தங்குகிறேன்.
>> நன்றி, எல்லோருக்கும். இந்த ஒத்திகை 6 இருந்தது. மற்றும் அதிர்ஷ்டம் நல்ல.
>> [CS50.TV]