>> ராப் Bowden: அதிக.
நான் ராப் இருக்கிறேன், மற்றும் நாம் புல இந்த தீர்வு.
எனவே இங்கே நாம் செயல்படுத்த போகிறோம் ஒரு பொது ஹாஷ் அட்டவணை.
நாம் பார்க்கின்றோம் என்று எங்கள் ஹாஷ் Struct முனை அட்டவணை இப்படி இருக்க போகிறது.
எனவே அது ஒரு எரிப்பதை சொல் வேண்டும் நடக்கிறது அளவு நீளம் பிளஸ் 1 வரிசை.
அதிகபட்ச இருந்து 1 மறக்க வேண்டாம் அகராதியில் வார்த்தை 45 ஆகிறது
பாத்திரங்கள், மற்றும் நாம் போகிறோம் ஒரு கூடுதல் தன்மை வேண்டும்
பின்சாய்வுக்கோடானது 0.
>> பின்னர் ஒவ்வொரு எங்கள் ஹாஷ் அட்டவணை வாளி சேமிக்க போகிறது ஒரு
முனைகளில் இணைக்கப்பட்ட பட்டியலில்.
நாம் இங்கே ஆய்வு லீனியர் செய்யவில்லை.
அதனால் அடுத்த இணைக்க வாளி உறுப்பு, நாம் ஒரு வேண்டும்
struct முனை * அடுத்த.
அதனால் ஒரு முனை போல் என்ன.
இப்போது, இங்கே அறிவிப்பு ஆகிறது எங்கள் ஹாஷ் அட்டவணை.
இது 16,384 வாளிகள் வேண்டும் நடக்கிறது ஆனால் அந்த எண்ணை உண்மையில் இல்லை.
இறுதியாக, நாம் செய்ய போகிறோம் உலக மாறி hashtable_size, இது
0 என துவங்க போகிறது, அது தான் கண்காணிப்பதற்கான எப்படி பல வார்த்தைகள்
எங்கள் அகராதியில் இருந்தன.
எல்லாம் சரி.
>> எனவே சுமை பாருங்கள் நாம்.
அதனால் சுமை கவனிக்க, அது ஒரு bool கொடுக்கிறது.
அது வெற்றிகரமாக இருந்தால் நீங்கள் உண்மையான திரும்ப இல்லையெனில் ஏற்றப்படும் மற்றும் தவறான.
அது ஒரு கான்ஸ்ட் எரிப்பதை * நட்சத்திரம் எடுக்கிறது அகராதியில் எந்த அகராதியில்,
நாம் திறக்க வேண்டும் என்று.
அதனால் முதல் விஷயம் நாம் என்ன செய்ய போகிறோம்.
நாம் அகராதி fopen போகிறோம் படித்து, மற்றும் நாம் போகிறோம்
அது என்றால் வெற்றி என்று உறுதி செய்ய அது NULL திரும்பினார், பின்னர் நாம் இல்லை
வெற்றிகரமாக அகராதி திறக்க நாம் தவறான திரும்ப வேண்டும்.
>> ஆனால் அது வெற்றிகரமாக என்று அனுமானித்து திறந்த, நாம் படிக்க வேண்டும்
அகராதி.
நாம் சில கண்டுபிடிக்க வரை தேடுகிறது வைத்து இந்த உடைத்து காரணம்
நாம் பார்க்க வேண்டும் என்ற சுழற்சி.
எனவே தேடுகிறது வைத்து, இப்போது நாம் போகிறோம் ஒரு ஒற்றை முனை malloc வேண்டும்.
நிச்சயமாக, நாம் சோதனை பிழை வேண்டும் மீண்டும் mallocing வெற்றி பெறவில்லை என்றால்
நாம் என்று நாம் எந்த முனை இறக்கும் வேண்டும் முன், malloc நடந்தது, மூட
அகராதி மற்றும் தவறான திரும்ப.
>> ஆனால் அந்த புறக்கணித்து, அனுமானித்து நாம் வெற்றி, நாம் fscanf பயன்படுத்த வேண்டும்
ஒரு ஒற்றை வார்த்தை வாசிக்க எங்கள் எங்கள் முனை அகராதி.
அதனால் நுழைவு> வார்த்தை ஞாபகம் எரிப்பதை வார்த்தை அளவு நீளம் தாங்கல் பிளஸ்
நாங்கள் போகிறோம் என்று ஒரு உள்ளே வார்த்தை சேமிக்க
எனவே fscanf 1 நீண்ட திரும்ப போகிறது அது வெற்றிகரமாக ஒரு படிக்க முடிந்தது
கோப்பு வார்த்தை.
>> ஒரு பிழை அல்லது நடக்கிறது அல்லது நாம் அடைய என்றால் கோப்பின் இறுதியில், இல்லையா
அது இல்லை என்றால், இதில் 1 திரும்ப 1 திருப்பி, நாம் இறுதியாக உடைக்க போகிறோம்
இந்த நேரத்தில் வளைய வெளியே.
எனவே நாம் பார்க்க நாம் வெற்றிகரமாக முறை ஒரு வார்த்தை கூட படிக்க
நுழைவு> வார்த்தை, நாம் புல போகிறோம் எங்கள் ஹாஷ் சார்பு பயன்படுத்தி அந்த வார்த்தை.
தான் ஒரு பார்க்கலாம் ஹாஷ் சார்பு.
>> எனவே நீங்கள் உண்மையில் தேவையில்லை இதை புரிந்து கொள்ள வேண்டும்.
உண்மையில், நாம் இந்த இழுத்து இணைய செயல்பாடு புல.
நீங்கள் அங்கீகரிக்க வேண்டும் மட்டுமே ஆகிறது இந்த ஒரு கான்ஸ்ட் எரிப்பதை * வார்த்தை எடுக்கும் என்று,
அது உள்ளீடு ஒரு சரம் எடுத்து வெளியீடு ஒரு கையொப்பமிடப்படாத எண்ணாக திரும்பி.
அதனால் அனைத்து ஒரு ஹாஷ் சார்பு ஆகும், அது ஆகிறது ஒரு உள்ளீடு எடுத்து, அதை நீங்கள் ஒரு கொடுக்கிறது
ஹாஷ் அட்டவணை குறியீட்டு.
நாம் NUM_BUCKETS மூலம் modding என்பதை கவனியுங்கள் அதனால் ஹாஷ் மதிப்பு திரும்பினார்
உண்மையில் ஹாஷ் அட்டவணை ஒரு குறியீட்டு ஆகிறது மற்றும் செய்கிறது தாண்டி குறியீட்டு
வரிசைக்கு எல்லைக்கு.
>> எனவே ஹாஷ் சார்பு, நாம் போகிறோம் என்று கொடுக்கப்பட்ட நாம் படிக்க வார்த்தை பங்குகள்
அகராதியில் இருந்து பின்னர் நாங்கள் போகிறோம் என்று பயன்படுத்த செருக உள்ளது
ஹாஷ் அட்டவணை நுழைவதற்கான.
இப்போது, ஹாஷ்டேபில் புல தற்போதைய ஆகிறது இணைக்கப்பட்ட ஹாஷ் அட்டவணை பட்டியலில், மற்றும்
அது NULL என்று மிகவும் சாத்தியம்.
நாம் நம் நுழைவு நுழைக்க வேண்டும் இந்த இணைக்கப்பட்ட பட்டியலில் ஆரம்பத்தில், மற்றும்
நாம் நமது தற்போதைய நுழைவு போகிறது தற்போது என்ன ஹாஷ் அட்டவணை சுட்டி
புள்ளிகள் மற்றும் நாம் சேமிக்க போகிறோம் புல மணிக்கு ஹாஷ் அட்டவணை
தற்போதைய நுழைவு.
>> எனவே இந்த இரண்டு வரிகளை வெற்றிகரமாக நுழைக்க ஆரம்பத்தில் நுழைவு
அந்த குறியீட்டு இணைக்கப்பட்ட பட்டியல் ஹாஷ் அட்டவணை.
நாம் என்று முடித்துவிட்டீர்கள், நாம் அறிகிறோம் நாம் மற்றொரு வார்த்தை இல்லை என்று
அகராதியில் நாம் மீண்டும் அதிகப்படுத்த.
எனவே நாம் செய்து வைக்கிறோம் என்று fscanf வரை இறுதியாக அல்லாத ஏதாவது 1 திரும்புகிறார்
எந்த புள்ளியில் நாம் வேண்டும் என்று ஞாபகம் இலவச நுழைவு, அதனால் இங்கே, நாம் ஒரு malloced
நுழைவு மற்றும் நாம் ஏதாவது படிக்க முயற்சி அகராதியில் இருந்து.
நாம் வெற்றிகரமாக படிக்க முடியவில்லை அகராதியில் இருந்து ஏதாவது இதில்
வழக்கு, நாம் நுழைவு விடுவிக்க வேண்டும் உண்மையில் ஹாஷ் அட்டவணை வைத்து
இறுதியாக உடைத்து.
>> நாம் உடைத்து முறை, நாம், நன்கு பார்க்க வேண்டும் நாம் அங்கு உடைத்தோம்
ஒரு பிழை கோப்பை படித்து, அல்லது நாம் அடைந்தது, ஏனெனில் நாங்கள் அவுட் உடைத்து
கோப்பின் இறுதியில்?
ஒரு பிழை ஏற்பட்டது என்றால், நாம் விரும்பவில்லை ஏற்ற முடியவில்லை, ஏனெனில் தவறான திரும்ப
வெற்றி, மற்றும் செயல்பாட்டில், நாம் விரும்பவில்லை நாம் படிக்க எல்லா வார்த்தைகளையும் இறக்கும்
மற்றும் அகராதி கோப்பு மூட.
நாம் வெற்றி பெற்றாலும் அனுமானித்து, நாம் தான் இன்னும் அகராதி மூட வேண்டும்
கோப்பு, மற்றும் இறுதியாக முதல் உண்மையான திரும்ப நாம் வெற்றிகரமாக ஏற்றப்படும்
அகராதி.
அந்த சுமை தான்.
>> எனவே இப்போது ஒரு ஏற்றப்படும் ஹாஷ் அட்டவணை கொடுக்கப்பட்ட, சரிபார்த்து, இப்படி இருக்க போகிறது.
எனவே, இது ஒரு bool கொடுக்கிறது, பார்க்க இது குறிப்பிடுகின்றன போகிறது என்பதை
கடந்து இல் எரிப்பதை * வார்த்தை என்பதை கடந்து சரம் எங்கள் அகராதியில் உள்ளது.
அகராதியில் இது என்றால், அது இருந்தால் எங்கள் ஹாஷ் அட்டவணை, நாம் திரும்ப
உண்மை, அது இல்லை என்றால், நாம் தவறான திரும்ப வேண்டும்.
இந்த கடந்து வார்த்தை கொடுத்து, நாம் இருக்கிறோம் வார்த்தை புல போகிறது.
>> இப்போது, அங்கீகரிக்க ஒரு முக்கியமான விஷயம் இருக்கிறது சுமை, நாம் தெரியும் என்று அனைத்து
வார்த்தைகள் கீழ் வழக்கு இருக்க போகிறோம், ஆனால் இங்கே, நாம் மிகவும் உறுதியாக இருக்கிறோம்.
நாங்கள் எங்கள் ஹாஷ் சார்பு பாருங்கள் என்றால், உண்மையில் எங்கள் ஹாஷ் சார்பு
ஒவ்வொரு தன்மையை lowercasing வார்த்தை.
எனவே பொருட்படுத்தாமல் முதலீடு வார்த்தை, எங்கள் ஹாஷ் சார்பு போகிறது
என்ன அதே குறியீட்டு திரும்பலாம் முதலீடு, அது வேண்டும் என ஆகிறது
ஒரு முற்றிலும் ஸ்மால் திரும்பினார் வார்த்தை பதிப்பு.
எல்லாம் சரி.
>> அதனால் எங்கள் குறியீட்டு தான்.
இந்த வார்த்தையை ஹாஷ் அட்டவணை உள்ளது.
இப்போது, லூப் இந்த போகிறது இணைக்கப்பட்ட பட்டியலில் மேல்
அந்த, அந்த குறியீட்டு இருந்தது.
எனவே நாம் நுழைவு ஆரம்பிக்கும் கவனிக்க அந்த குறியீட்டு சுட்டி.
நாம் நுழைவு செய்யும் போது தொடர போகிறோம் இல்லை சம NULL, மற்றும் நினைவில்
எங்கள் இணைக்கப்பட்ட பட்டியலில் சுட்டிக்காட்டி மேம்படுத்தும் நுழைவு அடுத்த நுழைவு> சமம், எனவே வேண்டும்
எங்கள் தற்போதைய இடுகை புள்ளி இணைக்கப்பட்ட பட்டியலில் அடுத்த உருப்படி.
எல்லாம் சரி.
>> அதனால் இணைக்கப்பட்ட பட்டியலில் ஒவ்வொரு நுழைவு, நாம் strcasecmp பயன்படுத்த போகிறோம்.
இது strcmp இல்லை, ஏனெனில் மீண்டும், நாம் சேருகிறேன் விஷயங்களை வழக்கு செய்ய வேண்டும்.
எனவே, இந்த வார்த்தை ஒப்பிட்டு strcasecmp பயன்படுத்த இந்த செயல்பாடு நிறைவேற்றப்பட்டது
வார்த்தை எதிராக இந்த நுழைவு உள்ளது.
அது 0 கொடுக்கிறது என்றால், என்று இருந்தது பொருள் நாம் விரும்பும் வழக்கில் ஒரு போட்டியில்,
உண்மை திரும்ப.
நாம் வெற்றிகரமாக இல்லை எங்கள் ஹாஷ் அட்டவணை வார்த்தை.
>> ஒரு போட்டியில் இல்லை என்றால், நாம் இருக்கிறோம் மீண்டும் சுழற்சி சென்று பாருங்கள்
அடுத்த இடுகை.
நாம் போது அங்கு வளைவு தொடர வேண்டும் இந்த இணைக்கப்பட்ட பட்டியலில் உள்ளீடுகளை.
நாம் உடைத்து என்றால் என்ன நடக்கிறது லூப் இந்த வெளியே?
நாம் ஒரு நுழைவு கண்டுபிடிக்க முடியவில்லை என்று இதில், இந்த வார்த்தை பொருந்தும்
நாம் குறிக்க தவறான திரும்ப என்று எங்கள் ஹாஷ் அட்டவணை இந்த வார்த்தை கொண்டிருக்கும் இல்லை.
அந்த காசோலை அது தான்.
எல்லாம் சரி.
>> எனவே அளவு பாருங்கள் நாம்.
இப்போது, அளவு மிகவும் எளிய போகிறது பின்னர் ஒவ்வொரு வார்த்தையும், சுமை நினைவில்
நாம் ஒரு உலக அதிகரிக்கும் காணப்படும் மாறி hashtable_size.
எனவே அளவு செயல்பாடு தான் ஆகிறது உலக திரும்ப போகிறது
மாறி, அவ்வளவு தான்.
>> இப்போது இறுதியாக, நாம் இறக்கும் வேண்டும் அகராதி எல்லாம் முடிந்துவிட்டது முறை.
நாம் எப்படி செய்ய போகிறீர்கள்?
இங்கே, நாம் அனைத்து மீது தேடுகிறது எங்கள் ஹாஷ் அட்டவணை வாளிகள்.
எனவே NUM_BUCKETS வாளிகள் உள்ளன.
மற்றும் எங்கள் ஹாஷ் ஒவ்வொரு இணைக்கப்பட்ட பட்டியலில் அட்டவணை, நாம் வளைய போகிறோம்
இணைக்கப்பட்ட பட்டியலில் முழுமையாக ஒவ்வொரு உறுப்பு பெறலாம்.
இப்போது, நாம் கவனமாக இருக்க வேண்டும், இங்கு நாம் என்று ஒரு தற்காலிக மாறி
அடுத்த சுட்டிக்காட்டி சேமித்து இணைக்கப்பட்ட பட்டியலில் உறுப்பு.
பின்னர் நாம் இலவச போகிறோம் தற்போதைய உறுப்பு.
>> நாங்கள் இந்த உறுதியாக இருக்க வேண்டும் தற்போதைய உறுப்பு விடுவிக்க முடியாது
பின்னர் அடுத்த சுட்டிக்காட்டி அணுக முயற்சி பின்னர் நாம், அதை விடுவிக்க
நினைவகம் தவறான ஆகிறது.
எனவே நாம் ஒரு சுட்டிக்காட்டி சுற்றி வைக்க வேண்டும் அடுத்த உறுப்பு, நாம் விடுவிக்க முடியாது
தற்போதைய உறுப்பு, மற்றும் நாம் மேம்படுத்த முடியும் சுட்டி நமது தற்போதைய உறுப்பு
அடுத்த உறுப்பு.
>> நாம் கூறுகளை லூப் உள்ளன போது இந்த இணைக்கப்பட்ட பட்டியலில்.
நாம் அனைத்து தொடர்புடைய பட்டியல்கள் செய்வேன் ஹாஷ் அட்டவணை, மற்றும் நாம் முடித்துவிட்டீர்கள்
உடன், நாங்கள் முற்றிலும் ஏற்றப்படாமல் ஹாஷ் அட்டவணை, மற்றும் நாம் முடித்துவிட்டீர்கள்.
அது நீக்குகின்றார் செய்ய எப்போதும் முடியாது தவறான திரும்ப, மற்றும் நாம் முடித்துவிட்டீர்கள் போது, நாம்
தான் உண்மையான திரும்ப.