বক্তা 1: এর দিতে যাক এই সমাধান করে দেখুন. তাই আসুন কি আমাদের কটাক্ষপাত করা যাক Struct নোড মত হবে. এখানে, আমরা আমরা আছে চলুন দেখতে একটি Bool শব্দ এবং একটি struct নোড তারকা শিশুদের বর্ণমালা বন্ধনী. সুতরাং প্রথম জিনিস আপনি হতাশ হতে পারে, কেন বর্ণমালা হ্যাশ 27 হিসাবে সংজ্ঞায়িত করা হয়? ভাল, আমরা প্রয়োজন চলুন মনে রাখা ঊর্ধকমা সামলাচ্ছে, তাই করা হবে যে একটি বিশেষ কিছুটা হতে যাচ্ছে এই প্রোগ্রাম সারা ক্ষেত্রে. ঠিক আছে, এখন মনে রাখবেন কিভাবে একটি Trie আসলে কাজ করে. আসুন আমরা শব্দ বিড়ালের সূচিবদ্ধ করাকে করছি বলে, তারপর আমাদের trie মূল থেকে, আমরা শিশুদের তাকান চলুন অ্যারে, এবং আমরা তাকান চলুন চিঠি যে অনুরূপ সূচী সি যাতে সূচী দুই হবে. সুতরাং যে, যে আমাদের দিতে হবে দেওয়া একটি নতুন নোড, এবং তারপর আমরা করব যে নোড থেকে করা সম্ভব. সুতরাং যে নোড দেওয়া, আমরা আবার করছি শিশু অ্যারে তাকান যাচ্ছে, এবং আমরা সূচক শূন্য তাকান চলুন বিড়াল একটি মিলা করতে. তখন আমরা যে নোড যেতে চলুন, এবং যে নোড দেওয়া, আমরা চলুন যে অনুরূপ সূচী তাকান টি এবং যে নোডের উপর চলন্ত যাও পরিশেষে, আমরা সম্পূর্ণভাবে তাকিয়ে আছে আমাদের শব্দ বিড়াল মাধ্যমে, এবং এখন Bool শব্দ কিনা ইঙ্গিত অনুমিত হয় এই দেওয়া শব্দ আসলে একটি শব্দ. তাই কেন আমরা যে বিশেষ ক্ষেত্রে প্রয়োজন? ভাল, কি যদি শব্দ বিপর্যয় আমাদের অভিধানে, কিন্তু শব্দ বিড়াল নয় কি? তাই শব্দ বিড়াল কিনা দেখতে খুঁজছেন মধ্যে আমাদের অভিধান, আমরা চলুন সফলভাবে সূচকের মাধ্যমে সন্ধান সি একটি টি এবং একটি নোডের পৌঁছানোর, কিন্তু যে এর বিপর্যয়কারী ঘটনা ঘটেছে শুধুমাত্র কারণ সি একটি টি থেকে পথে নোড তৈরি সব শব্দের শেষে উপায়. সুতরাং Bool শব্দ কি না তা নির্দেশ ব্যবহার করা হয় এই বিশেষ অবস্থান আসলে একটি শব্দ নির্দেশ করে. ঠিক আছে, তাই এখন আমরা জানি যে কি একটি Trie এর যাক, অনুরূপ যাচ্ছে লোড ফাংশন এ. সুতরাং লোড একটি bool ফিরে যাচ্ছে কিনা আমরা সফলভাবে অথবা জন্য অসফল লোড অভিধান এবং এই অভিধান হতে যাচ্ছে আমরা লোড করতে চান. আমরা কি করতে যাচ্ছেন তাই সর্বপ্রথম খোলা পড়ার জন্য যে অভিধান আপ. আমরা আমরা ব্যর্থ হয়নি নিশ্চিত করতে হবে, তাই অভিধান না হলে সফলভাবে খোলা, এটা ফিরে আসবে না, যে ক্ষেত্রে আমরা চলুন মিথ্যা ফিরে. কিন্তু অভিমানী যে এটা সফলভাবে খোলা তারপর, আমরা আসলে পড়তে পারেন অভিধান মাধ্যমে. আমরা চলুন সুতরাং প্রথম জিনিস যেতে চাই আমরা এই আছে হয় বিশ্বব্যাপী পরিবর্তনশীল রুট. এখন, root-র একটি নোড তারকা হতে যাচ্ছে. এটা আমরা করছি যে আমাদের trie উপরে আছে মাধ্যমে iterating করা যাচ্ছে. আমরা চাই চলুন সুতরাং প্রথম জিনিস কি আমাদের রুট জন্য মেমরি বরাদ্দ করা হয়. আমরা calloc ব্যবহার করছেন যে লক্ষ্য করুন মূলত একই যা ফাংশন, Malloc ফাংশন হিসাবে, ছাড়া এটা কিছু যে ফেরত গ্যারান্টী সম্পূর্ণ আউট zeroed. আমরা malloc ব্যবহার সুতরাং, যদি আমরা করতে হবে মধ্যে পয়েন্টার সব দিয়ে যেতে আমাদের নোড এবং নিশ্চিত যে তারা সব নাল করছি. সুতরাং calloc আমাদের জন্য তা করতে হবে. এখন, শুধু Malloc ভালো, আমরা করা প্রয়োজন বরাদ্দ আসলে যে নিশ্চিত সফল. এই নাল ফিরে আসেন, তাহলে আমরা আমাদের অভিধান বন্ধ করতে হবে ফাইল এবং মিথ্যা ফিরে. তাই বরাদ্দ ছিল অভিমানী সফল, আমরা একটি নোড ব্যবহার চলুন পুনরুক্তি করতে কার্সার তারকা আমাদের trie মাধ্যমে. সুতরাং আমাদের রুট পরিবর্তন করতে যাচ্ছেন না, কিন্তু আমরা কার্সার ব্যবহার চলুন আসলে নোড থেকে নোড যান. ঠিক আছে, তাই এই লুপ জন্য, আমরা হয় , অভিধান ফাইলটি মাধ্যমে পড়া এবং আমরা fgetc সময়ে ব্যবহার করছেন. সুতরাং fgetc একটি একক দখল করতে যাচ্ছে ফাইল থেকে অক্ষর. আমরা দখল চালিয়ে যাচ্ছেন অক্ষর আমরা পৌঁছাতে না যখন ফাইলের শেষে, তাই আছে আমরা সব ব্যবস্থা করতে হবে দুই ক্ষেত্রে. প্রথম, অক্ষর ছিল না যদি এটি একটি নতুন হলে নতুন লাইন, তাই আমরা জানি লাইন, তাহলে আমরা করতে চলেছেন একটি নতুন শব্দ যান. কিন্তু তারপর, এটা একটা নতুন লাইন ছিল না অভিমানী এখানে, আমরা চিন্তা করতে চাই সূচী আমরা মধ্যে সূচক যাচ্ছেন শিশু অ্যারের মধ্যে যে আমরা আগে দিকে তাকিয়ে. আমি আগে বলেন তাই মত, আমরা প্রয়োজন বিশেষ ক্ষেত্রে ঊর্ধকমা. আমরা তিন অপারেটর ব্যবহার করছেন লক্ষ্য করুন এখানে, তাই আমরা পড়তে যাচ্ছেন এই আমরা পড়তে চরিত্র ছিল যেমন যদি একটি ঊর্ধকমা, তারপর আমরা চলুন বর্ণমালা বিয়োগ সমান সূচী সেট 1, যা সূচক 26 হতে হবে. অন্যথায়, এটি একটি ঊর্ধকমা ছিল না যদি, তারপর আমরা সূচী সেট চলুন গ বিয়োগ একটি সমান. তাই ফিরে পূর্ববর্তী পি সেট থেকে মনে রাখবেন, গ বিয়োগ একটি আমাদের দিতে হবে বর্ণানুক্রমিক গ এর অবস্থান, যদি তাই হয় গ অক্ষর এ, এই ইচ্ছা হয় আমাদের সূচক শূন্য দিতে. অক্ষর বি জন্য, এটা দিতে হবে তাই আমাদের সূচক 1, ২. তাই এই আমাদের মধ্যে সূচক দেয় আমরা চাই যে শিশু অ্যারে. এখন, এই সূচক বর্তমানে নাল যদি শিশু অ্যারে, এর মানে হল যে একটি নোডের বর্তমানে থেকে বিদ্যমান নেই যে পথ, তাই আমরা বরাদ্দ করা প্রয়োজন একটি যে পথ ধরে নোড. আমরা এখানে কি কি. তাই আমরা আবার,, calloc ব্যবহার চলুন ফাংশন আমরা না থাকে যাতে পয়েন্টার অল আউট শূন্য, এবং আমরা, আবার, যে calloc চেক প্রয়োজন ব্যর্থ হয়নি. Calloc ব্যর্থ হয়নি, তাহলে আমরা প্রয়োজন সবকিছু আন, বন্ধ করুন আমাদের অভিধান, এবং মিথ্যা ফিরে. সুতরাং তারপর, ব্যর্থ না অভিমানী এই, আমাদের জন্য নতুন শিশু তৈরি করবে এবং তারপর আমরা যে সন্তানের যেতে হবে. আমাদের কার্সার পুনরুক্তি হবে যে সন্তানের নিচে. এখন, এই দিয়ে শুরু করতে নাল ছিল না যদি, তারপর কার্সার শুধু পুনরুক্তি করতে পারেন আসলে ছাড়া যে সন্তানের নিচে কিছু বরাদ্দ করা হচ্ছে. এই প্রথম আমরা ঘটেছে যেখানে কেস শব্দ বিড়াল বরাদ্দ, এবং করতে আমরা বরাদ্দ করা যেতে হলে যে মানে বিপর্যয়কারী ঘটনা, আমরা তৈরি করতে হবে না আবার সি একটি টি জন্য নোড. তারা ইতিমধ্যেই বিদ্যমান. ঠিক আছে, তাই এই আর কি হয়? এই গ যেখানে শর্ত গ নতুন লাইন ছিল যেখানে ব্যাকস্ল্যাশ এন,. এই আমরা সফলভাবে আছে যে মানে একটি শব্দ সম্পন্ন. এখন, আমরা কি করতে চান যখন আমরা সফলভাবে একটি শব্দ সম্পন্ন? আমরা এই শব্দ ক্ষেত্র ব্যবহার চলুন আমাদের struct নোড ভেতরে. আমরা সত্য যে সেট করতে চান, যাতে এই নোডের ইঙ্গিত ইঙ্গিত করে যে একটি সফল শব্দের একটি প্রকৃত শব্দ. এখন, মুক্ত করার যে সেট. আমরা বিন্দু থেকে আমাদের কার্সার পুনরায় সেট করতে চান আবার trie শুরুতে করতে. এবং পরিশেষে, আমাদের অভিধান বাড়ায় আমরা অন্য শব্দ পাওয়া সাইজ থেকে. ঠিক আছে, তাই আমরা সেটিই রাখতে যাচ্ছেন যে, এর দ্বারা চরিত্রের মধ্যে পড়া চরিত্র, নতুন নোড নির্মাণের আমাদের trie এবং প্রতিটি শব্দের জন্য অভিধান, পরিশেষে আমরা সি পৌঁছানোর পর্যন্ত , আমরা বিরতি যে ক্ষেত্রে ফাইলের শেষে, সমান ফাইলের আউট. এখন, দুই ক্ষেত্রে অধীনে আছে আমরা ফাইলের শেষে আঘাত করে থাকতে পারে যা. একটি ত্রুটি ছিল প্রথম সেখানে যদি ফাইল থেকে পড়া, তাই একটি ত্রুটি, আমরা সাধারণত যা করতে হবে , সবকিছু আন ফাইলটি বন্ধ করুন, মিথ্যা ফিরে. , একটি ত্রুটি ছিল না Assuming যে শুধু আমরা আসলে শেষ আঘাত মানে ফাইল, যা ক্ষেত্রে, আমরা বন্ধ করুন ফাইল এবং সত্য ফিরে যেহেতু আমরা সফলভাবে অভিধান লোড আমাদের trie মধ্যে. ঠিক আছে, তাই এখন যাক এর চেক চেক আউট. চেক ফাংশন এ জন্যে, আমরা দেখতে পরীক্ষা করে দেখুন যে একটি bool ফিরে যাচ্ছে. এই শব্দ এটা যে যদি এটা সত্য ফেরৎ অতিক্রান্ত হচ্ছে আমাদের trie হয়. এটা অন্যথায় FALSE প্রদান করে. তাই কিভাবে আমরা তা নির্ধারণ করতে যাচ্ছি এই শব্দ আমাদের trie হয়? আমরা এখানে দেখতে যে, ঠিক আগের মতই, আমরা বারবার করতে কার্সার ব্যবহার চলুন আমাদের trie মাধ্যমে. এখন, এখানে, আমরা বারবার চলুন আমাদের সমগ্র শব্দ ধরে. সুতরাং আমরা হয় শব্দের উপর iterating পাস, আমরা নির্ধারণ করতে যাচ্ছেন সূচক শিশু অ্যারের মধ্যে যে শব্দ বন্ধনী আমি অনুরূপ. তাই এই ঠিক মত দেখতে যাচ্ছে লোড, যেখানে শব্দ বন্ধনী আমি একটি যদি ঊর্ধকমা, তাহলে আমরা সূচক ব্যবহার করতে চান 1 বিয়োগ বর্ণমালার আমরা নির্ধারিত কারণ আমরা চলুন যে যেখানে apostrophes সংরক্ষণ. অন্যথায় আমরা tolower ব্যবহার চলুন শব্দ বন্ধনী আমি. তাই থাকতে পারে যে শব্দ মনে রাখতে নির্বিচারে ক্যাপিটালাইজেশন, এবং তাই আমরা আমরা ব্যবহার করছেন তা নিশ্চিত করতে চাই একটা ছোট হাতের সংস্করণ. এবং তারপর যে ছোট হাতের থেকে বিয়োগ একটি, আবার, আমাদের দিতে বর্ণানুক্রমিক অবস্থান যে চরিত্রের. সুতরাং যে আমাদের সূচী হতে যাচ্ছে শিশু অ্যারের মধ্যে. এবং এখন, যদি শিশুদের মধ্যে যে সূচী অ্যারে নাল হয়, যে আমরা মানে আর iterating চালিয়ে যেতে পারেন আমাদের trie নিচে. যদি সেই ক্ষেত্রে, এই শব্দ না করতে পারেন সম্ভবত, আমাদের trie করা থেকে যদি এটা , যে একটি হতে পারে মানে হবে হয়েছে পাথ নিচে যে শব্দ করা, এবং আপনি would নাল সম্মুখীন কখনও. সুতরাং নাল সম্মুখীন, আমরা মিথ্যা ফিরে. শব্দ অভিধানে নেই. এটি নাল না, তারপর আমরা চলুন iterating চালিয়ে, তাই আমরা চলুন যে দিকে নির্দেশ করার জন্য আমাদের কার্সার আপডেট যে সূচিতে বিশেষ নোড. সুতরাং আমরা সারা যে করছেন রাখা সম্পূর্ণ শব্দ. , আমরা নাল আঘাত কখনও Assuming যে উপায় আমরা সমগ্র মাধ্যমে পেতে পারবেন দুনিয়া এবং আমাদের trie একটি নোড খুঁজে, কিন্তু আমরা পুরোপুরি এখনও সম্পন্ন না. আমরা শুধু সত্য ফিরে চাই না. আমরা কার্সার ত্রুটি শব্দ ফিরে চাই বিড়াল নয়, যেহেতু, আবার মনে রাখা , আমাদের অভিধান এবং বিপর্যয়কারী ঘটনা হল এ তারপর আমরা সফলভাবে মাধ্যমে পাবেন শব্দ বিড়াল, কিন্তু কার্সারের শব্দ মিথ্যা এবং সত্য না হতে হবে. সুতরাং আমরা ইঙ্গিত কার্সার শব্দ ফিরে কিনা এই নোডের আসলে একটি শব্দ, এবং যে চেক জন্য এটি. তাই এর আয়তন পরীক্ষা করা যাক. সুতরাং আয়তন বেশ সহজ হবে যেহেতু লোড মধ্যে মনে রাখবেন, আমরা করছি জন্য অভিধান আকার বৃদ্ধিশীল আমরা সম্মুখীন যে প্রতিটি শব্দ. সুতরাং আয়তন মাত্র ফিরে যাচ্ছে অভিধান আকার, এবং যে এটি. ঠিক আছে, তাই সর্বশেষে, আমরা, আন আছে. তাই আন আমরা ব্যবহার করতে যাচ্ছেন একটি আসলে সব কি recursive ফাংশন আমাদের, তাই আমাদের ফাংশন জন্য কাজ Unloader নামক করা যাচ্ছে. কি Unloader করতে যাচ্ছে? আমরা যে Unloader যাচ্ছে এখানে দেখুন শিশুদের সব সময়ে উপর বারবার এই বিশেষ নোড, এবং যদি শিশু নোডের নাল না, তারপর আমরা চলুন চাইল্ড নোড আন. তাই এই recursively যাচ্ছে আমাদের শিশুদের সব আন. আমরা নিশ্চিত যে একবার আমাদের শিশুদের সব unloaded করা হয়েছে, তাহলে আমরা নিজেদেরকে মুক্ত, তাই আমরাই আন পারেন. তাই এই recursively আন হবে সমগ্র trie, এবং তারপর যে একবার কাজ করেছেন, আমরা সত্য ফিরে আসতে পারেন. আন আমরা করছি, ব্যর্থ করতে পারবে না শুধু জিনিস freeing. তাই একবার আমরা freeing শেষ করেছেন সবকিছু, সত্য ফিরে. এবং যে এটি. আমার নাম রব, এবং এই [শ্রবণাতীত] ছিল.