>> स्पीकर 1: चलो दे दो. इस समाधान एक कोशिश.
तो चलो क्या हमारे पर एक नज़र Struct node की तरह दिखेगा.
यहाँ, हम हमारे पास करने के लिए जा रहे हैं देखते हैं एक Bool पद और एक संरचना नोड सितारा
बच्चे वर्णमाला ब्रैकेट.
तो पहली बात आप सोच हो सकती है, क्यों वर्णमाला हैश 27 के रूप में परिभाषित किया गया है?
ठीक है, हम जरूरत जा रहे हैं कि याद apostrophe से निपटने, ऐसा हो
कि एक विशेष का कुछ हद तक होने जा रहा है इस कार्यक्रम के दौरान मामला.
>> ठीक है, अब, याद है कि कैसे एक Trie वास्तव में काम करता है.
हम शब्द बिल्लियों अनुक्रमण रहे हैं हम कहते हैं, तब हमारे Trie की जड़ से,
हम बच्चे को देखने के लिए जा रहे हैं सरणी, और हम को देखने के लिए जा रहे हैं
पत्र से मेल खाती है कि सूचकांक सी. तो यह है कि सूचकांक दो होगा.
ताकि, कि हमें दे देंगे दी एक नए नोड, और फिर हम हूँ
कि नोड से काम करते हैं.
>> इसलिए कि नोड दिया, हम एक बार फिर कर रहे हैं बच्चे सरणी को देखने के लिए जा रहे हैं,
और हम सूचकांक शून्य को देखने के लिए जा रहे हैं बिल्ली में एक के अनुरूप करने के लिए.
तो फिर हम उस नोड के लिए जाने के लिए जा रहे हैं, और कि नोड दिया, हम जा रहे हैं
मेल खाती है कि सूचकांक को देखने के लिए टी. और उस नोड पर जाने से, करने के लिए
अंत में, हम पूरी तरह से देखा है हमारे शब्द कैट के माध्यम से, और अब Bool
पद संकेत मिलता है कि माना जाता है इस दिए गए शब्द वास्तव में एक शब्द है.
>> तो हम क्यों कि विशेष मामला क्या ज़रूरत है?
खैर, क्या हुआ अगर शब्द तबाही हमारे शब्दकोश में है, लेकिन
शब्द बिल्ली नहीं है?
तो शब्द बिल्ली है देखने के लिए तलाश में हमारे शब्दकोश में, हम करने जा रहे हैं
सफलतापूर्वक सूचकांक के माध्यम से देखो सी ए टी और एक नोड तक पहुँचने, लेकिन है कि
तबाही के लिए हुआ ही है क्योंकि सी ए टी से रास्ते पर नोड्स बनाने के सभी
शब्द के अंत करने के लिए रास्ता.
तो Bool पद संकेत मिलता है कि इस्तेमाल किया जाता है इस विशेष स्थान वास्तव में
एक शब्द इंगित करता है.
>> ठीक है, तो अब हम जानते हैं कि क्या एक Trie के देखते हैं, की तरह लग रहा है
लोड समारोह में.
इसलिए लोड एक bool वापस जाने के लिए जा रहा है चाहे हम सफलतापूर्वक या के लिए
असफल भरी हुई शब्दकोश और इस शब्दकोश होने जा रहा है
हम लोड करने के लिए चाहते हैं.
हम क्या करने जा रहे हैं तो पहली बात यह खुला है पढ़ने के लिए कि शब्दकोश.
हम असफल नहीं किया सुनिश्चित करना है, इसलिए शब्दकोश नहीं था
सफलतापूर्वक खोला, यह वापस आ जाएगी नहीं, जो मामले में हम करने जा रहे हैं
वापसी झूठी.
लेकिन यह सोचते हैं कि यह सफलतापूर्वक खोला, तो हम वास्तव में पढ़ सकते हैं
शब्दकोश के माध्यम से.
>> हम करने जा रहे हैं तो पहली बात क्या करना चाहते हैं कि हम इस किया है
वैश्विक चर जड़.
अब, जड़ एक नोड सितारा होने जा रहा है.
यह हम कर रहे हैं कि हमारे Trie के ऊपर है के माध्यम से पुनरावृति होने जा रहा.
हम चाहते करने जा रहे हैं तो पहली बात ऐसा हमारे रूट के लिए स्मृति आवंटित है.
>> हम calloc का उपयोग कर रहे हैं कि सूचना मूलतः एक ही है जो समारोह,
malloc समारोह के रूप में, सिवाय यह है है कि कुछ वापसी की गारंटी
पूरी तरह से बाहर चुना.
हम Malloc इस्तेमाल किया तो, अगर हम करने की आवश्यकता होगी में संकेत के सभी के माध्यम से जाना हमारे
नोड और सुनिश्चित करें कि वे सभी अशक्त हो.
तो calloc हमारे लिए ऐसा करेंगे.
>> अब, बस Malloc की तरह, हमें करना चाहिए आवंटन वास्तव में यह सुनिश्चित करें कि
सफल.
इस अशक्त लौटे, तो हम हमारे शब्दकोश को बंद करने की जरूरत है
फ़ाइल और झूठी वापसी.
तो आवंटन किया गया था संभालने सफल, हम एक नोड का उपयोग करने के लिए जा रहे हैं
पुनरावृति करने के लिए कर्सर स्टार हमारे Trie के माध्यम से.
इसलिए हमारे रूट बदलने के लिए कभी नहीं जा रहा है, लेकिन हम करने के लिए कर्सर का उपयोग करने के लिए जा रहे हैं
वास्तव में नोड से नोड के पास जाओ.
>> ठीक है, तो इस में पाश के लिए, हम कर रहे हैं , शब्दकोश फ़ाइल के माध्यम से पढ़
और हम fgetc पर प्रयोग कर रहे हैं.
तो fgetc एक भी हड़पने के लिए जा रहा है फ़ाइल से चरित्र.
हम हथियाने जारी रखने के लिए जा रहे हैं संदेश तक पहुँच नहीं है, जबकि
फाइल के अंत, इसलिए कर रहे हैं हम संभाल करने की जरूरत है दो मामले हैं.
पहला, चरित्र नहीं था, तो एक यह एक नया था अगर नई लाइन है, इसलिए हम जानते हैं
रेखा, तो हम करने जा रहे हैं एक नया शब्द पर चलते हैं.
लेकिन फिर, यह एक नई लाइन नहीं था संभालने यहाँ, हम यह पता लगाने के लिए चाहते हैं
सूचकांक हम में सूचकांक के लिए जा रहे हैं बच्चे सरणी में कि
हम पहले देखा.
>> जैसा कि मैंने पहले कहा तो की तरह, हम करने की आवश्यकता विशेष मामला apostrophe.
हम त्रिगुट ऑपरेटर का उपयोग कर रहे हैं नोटिस यहाँ है, तो हम पढ़ने के लिए जा रहे हैं
यह हम में पढ़ा चरित्र था मानो एक apostrophe, तो हम करने जा रहे हैं
वर्णमाला शून्य के बराबर सूचकांक सेट 1, जो सूचकांक 26 हो जाएगा.
वरना, यह एक apostrophe नहीं था, तो हम सूचकांक सेट करने के लिए जा रहे हैं
सी शून्य से एक के बराबर.
तो वापस पिछले पी सेट से याद है, सी शून्य से एक हमें देने जा रहा है
वर्णमाला ग की स्थिति, ताकि अगर C अक्षर ए, यह इच्छा है
हमें सूचकांक शून्य दे.
पत्र बी के लिए यह देना होगा इतने पर हमें सूचकांक 1, और.
>> तो यह हमारे में सूचकांक देता है हम चाहते हैं कि बच्चे सरणी.
अब, इस सूचकांक में फिलहाल शून्य है बच्चे सरणी, इसका मतलब है कि
एक नोड वर्तमान से मौजूद नहीं है उस पथ, तो हम आवंटित की जरूरत है एक
उस पथ के लिए नोड.
यही कारण है कि हम यहाँ क्या कर रहा है.
तो हम, फिर से, calloc का उपयोग करने के लिए जा रहे हैं समारोह हमारे पास नहीं है कि इतनी
संकेत के सभी बाहर शून्य, और करने के लिए हम, फिर, कि calloc जांच की जरूरत
असफल नहीं किया.
Calloc असफल हो गए हैं, तो हम की जरूरत सब कुछ खाली करने के लिए, बंद हमारे
शब्दकोश, और झूठी वापसी.
>> तो यह तो असफल नहीं किया यह सोचते हैं कि यह हमारे लिए एक नया बच्चा पैदा करेगा
और फिर हम उस बच्चे के लिए जाना जाएगा.
हमारे कर्सर पुनरावृति होगी उस बच्चे को नीचे.
अब, इस के साथ शुरू करने के लिए अशक्त नहीं था, तब कर्सर बस पुनरावृति कर सकते हैं
वास्तव में बिना उस बच्चे को नीचे कुछ भी आवंटित कर रही है.
यह हम पहली बार हुआ जहां मामला है शब्द बिल्ली का आवंटन, और करने के लिए
हम आवंटित करने के लिए जाने के लिए जब इसका मतलब है कि तबाही, हम बनाने की जरूरत नहीं है
फिर सी ए टी के लिए नोड्स.
वे पहले से ही मौजूद हैं.
>> ठीक है, तो यह और क्या है?
यह सी थी जहां हालत है सी एक नई लाइन थी जहां बैकस्लैश एन,.
यह हम सफलतापूर्वक किया है इसका मतलब एक शब्द पूरा किया.
अब, क्या हम क्या करना चाहते हैं जब हम सफलतापूर्वक एक शब्द पूरा?
हम इस शब्द के क्षेत्र का उपयोग करने के लिए जा रहे हैं हमारे struct node के अंदर.
>> हम सच करने के लिए कि सेट करना चाहते हैं, तो यह है कि इस नोड इंगित करता है इंगित करता है कि एक
सफल शब्द एक वास्तविक शब्द.
अब, यह सच है कि करने के लिए निर्धारित किया है.
हम बात करने के लिए हमारे कर्सर रीसेट करना चाहते हैं फिर Trie की शुरुआत करने के लिए.
और अंत में, हमारे शब्दकोश वेतन वृद्धि हम एक और शब्द पाया आकार के बाद से.
>> ठीक है, तो हम क्या कर रखने के लिए जा रहे हैं कि, द्वारा चरित्र में पढ़
चरित्र में नए नोड्स के निर्माण हमारे Trie और में प्रत्येक शब्द के लिए
शब्दकोश, हम अंत में सी पहुँचने तक , हम तोड़ने के मामले में जो EOF, के बराबर होती है
फाइल से बाहर.
अब, दो मामलों के तहत कर रहे हैं हम EOF हिट हो सकता है.
वहाँ एक त्रुटि थी, तो सबसे पहले है अगर वहाँ फ़ाइल से पढ़ने, तो
एक त्रुटि, हम ठेठ करने की ज़रूरत है , सब कुछ उतार फाइल बंद,
वापसी झूठी.
, कोई त्रुटि नहीं था मानते हुए कि अभी हम वास्तव में के अंत हिट का मतलब
फाइल है, जो मामले में, हम बंद फ़ाइल और सच वापसी के बाद से हम
सफलतापूर्वक शब्दकोश भरा हुआ हमारे Trie में.
>> ठीक है, तो अब चलो चेक की जाँच करें.
चेक समारोह को देखते हुए, हम देखते हैं जाँच करें कि एक bool वापस जाने के लिए जा रहा है.
इस शब्द यह है कि अगर यह सच रिटर्न पारित किया जा रहा है हमारे Trie में है.
यह अन्यथा FALSE देता है.
>> तो कैसे हम यह निर्धारित करने के लिए जा रहे हैं इस शब्द हमारे Trie में है?
हम यहाँ देखते हैं, पहले की तरह, हम पुनरावृति करने के लिए कर्सर का उपयोग करने के लिए जा रहे हैं
हमारे Trie के माध्यम से.
अब, यहाँ, हम पुनरावृति करने के लिए जा रहे हैं हमारे पूरे शब्द पर.
इसलिए हम कर रहे हैं शब्द पर iterating पारित कर दिया, हम यह निर्धारित करने के लिए जा रहे हैं
सूचकांक बच्चे सरणी में कि शब्द ब्रैकेट मैं से मेल खाती है.
तो यह बिल्कुल वैसा ही लग रहा है लोड, जहां शब्द ब्रैकेट मैं एक है अगर
apostrophe, तो हम सूचकांक का उपयोग करना चाहते हैं 1 शून्य से वर्णमाला हम निर्धारित क्योंकि
हम कहाँ जा रहे हैं कि है apostrophes स्टोर करने के लिए.
>> वरना हम tolower उपयोग करने के लिए जा रहे हैं शब्द ब्रैकेट मैं.
तो हो सकता है कि शब्द याद मनमाना पूंजीकरण, और इसलिए हम
हम प्रयोग कर रहे हैं कि यह सुनिश्चित करना चाहते हैं चीजों के एक छोटे संस्करण.
और फिर उस लोअरकेस से घटाना एक बार फिर से, हमें देने के लिए
वर्णमाला स्थिति उस चरित्र की.
इसलिए कि हमारे सूचकांक होने जा रहा है बच्चे सरणी में.
>> और अब, अगर बच्चे में है कि सूचकांक सरणी रिक्त है, कि हम का मतलब
अब कोई पुनरावृति को जारी रख सकते हैं हमारे Trie नीचे.
यदि यह मामला है, इस शब्द नहीं कर सकते संभवतः, हमारे Trie में होने के बाद अगर यह
, कि एक नहीं होगा मतलब होगा गया रास्ते नीचे शब्द है कि करने के लिए, और तुम होगा
अशक्त मुठभेड़ कभी नहीं.
तो अशक्त सामना, हम वापसी झूठी.
शब्द शब्दकोश में नहीं है.
यह रिक्त नहीं थे, तो हम करने जा रहे हैं पुनरावृति को जारी रखते हैं, तो हम जा रहे हैं
कि करने के लिए बात करने के लिए हमारे कर्सर को अद्यतन करने के लिए कि सूचकांक पर विशेष नोड.
>> इसलिए हम पूरे कर रही है कि रखना पूरे शब्द.
, हम अशक्त कभी नहीं मारा मान लिया जाये कि साधन हम पूरे के माध्यम से प्राप्त करने में सक्षम थे
दुनिया और हमारे Trie में एक नोड लगता है, लेकिन हम अभी तक नहीं किया हो.
हम सिर्फ सच वापसी नहीं करना चाहती.
हम कर्सर त्रुटि शब्द वापस करना चाहते हैं बिल्ली नहीं है, क्योंकि अगर, फिर याद
हमारे शब्दकोश और तबाही है में तो हम सफलतापूर्वक के माध्यम से मिल जाएगा
शब्द बिल्ली, लेकिन कर्सर शब्द गलत और सही नहीं होगा.
इसलिए हम इंगित करने के लिए कर्सर शब्द लौटने चाहे इस नोड वास्तव में एक शब्द है,
और कहा कि जांच के लिए यह बात है.
>> तो चलो आकार की जाँच करते हैं.
इतना आकार बहुत आसान होने जा रहा है के बाद से, लोड में याद है, हम कर रहे हैं
शब्दकोश आकार incrementing हम मुठभेड़ कि प्रत्येक शब्द.
इतना आकार बस वापस जाने के लिए जा रहा है शब्दकोश आकार, और यह बात है.
>> ठीक है, तो अन्त में, हम अनलोड है.
तो अनलोड, हम प्रयोग करने जा रहे हैं एक वास्तव में सब करने के लिए पुनरावर्ती समारोह
हमें, इसलिए हमारे समारोह के लिए काम की Unloader कहा जा रहा है.
क्या Unloader क्या करने जा रहा है?
हम चाहते हैं कि Unloader जा रहा है यहाँ देख बच्चों के सभी पर अधिक पुनरावृति
इस विशेष नोड, और अगर बच्चा नोड रिक्त नहीं है, तो हम करने जा रहे हैं
बच्चे के नोड उतारना.
>> तो इस बारी बारी से करने जा रहा है अपने बच्चों के सभी उतारना.
हमें यकीन है कि कर रहे हैं एक बार अपने बच्चों के सभी उतार दिया गया है, तो हम
खुद मुक्त है, तो ourself अनलोड कर सकते हैं.
तो इस बारी बारी से उतारना होगा पूरे Trie, और तब है कि एक बार
किया, हम सिर्फ सच लौट सकते हैं.
अनलोड हम कर रहे हैं, असफल नहीं हो सकता सिर्फ बातें मुक्त.
तो एक बार हम मुक्त कराने के काम हो गया सब कुछ, सच वापसी.
और यह बात है.
मेरा नाम रोब है, और इस [सुनाई] था.