>> [সঙ্গীত বাজাচ্ছি]
>> Rob Bowden: হাই.
আমি রব নই.
আর এর এই সমাধান বের করা যাক.
তাই আমরা এখানে বাস্তবায়ন করতে যাচ্ছেন একটি সাধারণ টেবিল.
আমরা দেখতে যে আমাদের মধ্যে struct নোড টেবিল ভালো চেহারা যাচ্ছে.
সুতরাং এটি একটি গৃহস্থালি শব্দ আছে যাচ্ছে আকার উচ্চতা + 1 টি অ্যারে.
, + 1 টি ভুলবেন না, যেহেতু সর্বোচ্চ অভিধানে শব্দ 45 হয়
অক্ষর.
এবং তারপর আমরা এক অতিরিক্ত প্রয়োজন চলুন ব্যাকস্ল্যাশ শূন্য জন্য অক্ষর.
>> এবং তারপর প্রতিটি আমাদের hashtable বালতি সংরক্ষণ করতে যাচ্ছে একটি
নোড যুক্ত তালিকা.
আমরা এখানে অনুসন্ধান রৈখিক করছেন না.
তাই যাতে পরবর্তী লিঙ্ক বালতি উপাদান, আমরা একটি প্রয়োজন
struct নোড * পরবর্তী.
ঠিক আছে.
সুতরাং যে একটি নোডের মতো দেখতে কি.
>> এখন এখানে ঘোষণা হল আমাদের hashtable এর.
এটা 16.834 buckets আছে যাচ্ছে.
কিন্তু যে সংখ্যা সত্যিই কোন ব্যাপার না.
এবং পরিশেষে, আমরা আছে চলুন বিশ্বব্যাপী পরিবর্তনশীল hashtable আকার, যা
শূন্য হিসাবে চলতে শুরু করতে যাচ্ছে.
এবং এটা কিভাবে ট্র্যাক রাখতে যাচ্ছে অনেক শব্দ আমাদের অভিধান আছে.
>> সুতরাং আসুন লোড কটাক্ষপাত করা যাক.
যে চাপের লক্ষ্য করুন, এটি একটি bool ফেরৎ.
এটি সফলভাবে যদি আপনি সত্য ফিরে লোড, এবং মিথ্যা অন্যথায়.
এবং এটি একটি const গৃহস্থালি * অভিধান লাগে অভিধান যা
আমরা খোলার ব্যাপারে.
তাই প্রথম যে জিনিস আমরা কি করতে যাচ্ছেন.
>> আমরা fopen চলুন পড়ার জন্য অভিধান.
এবং আমরা করা আছে চলুন এটি সফল হয়েছে তা নিশ্চিত.
এটি শূন্য ফিরে তাই হয়, তাহলে আমরা না সফলভাবে অভিধান খুলতে.
এবং আমরা মিথ্যা ফিরে প্রয়োজন.
কিন্তু এটা সফলভাবে যে অভিমানী খোলা, তাহলে আমরা পড়তে চাই
অভিধান.
আমরা কিছু খুঁজে না হওয়া পর্যন্ত তাই looping রাখা এই লুপ আউট বিরতি কারণ,
আমরা দেখতে পাবেন যা.
সুতরাং looping রাখা.
>> এবং এখন আমরা চলুন একটি নোডের malloc.
এবং অবশ্যই আমরা প্রয়োজন এয়ার আবার চেক.
সুতরাং mallocing সফল হয়নি, তাহলে আমরা যে আমরা কোনো নোড আন চান
আগে malloc ঘটেছে, বন্ধ করুন অভিধান এবং মিথ্যা ফিরে.
কিন্তু যে উপেক্ষা, অভিমানী আমরা সফল, তাহলে আমরা fscanf ব্যবহার করতে চান
থেকে একটি একক শব্দ পড়তে আমাদের আমাদের নোড অভিধান.
সুতরাং যে এন্ট্রি> শব্দ মনে রাখতে গৃহস্থালি + 1 টি সাইজ LENGHTH কালাম বাফার
আমরা এখনো শব্দ সংরক্ষণ করতে যাচ্ছেন যে
>> সুতরাং fscanf যতদিন, 1 ফিরে যাচ্ছে এটি সক্ষম করার সফলভাবে ছিল
ফাইল থেকে একটি শব্দ পড়তে.
একটি ত্রুটি হয় যদি সেটা হয়, অথবা আমরা ফাইলের শেষে পৌঁছানোর, এটা
1 ফিরে না.
এটা 1 ফিরে না যা ক্ষেত্রে পরিশেষে আমরা আউট বিরতি চলুন
এই সময় লুপ.
সুতরাং আমরা দেখতে যে আমরা সফলভাবে আছে একবার মধ্যে একটি শব্দ পড়া
এন্ট্রি> শব্দ, তাহলে আমরা যে চলুন আমাদের হ্যাশ ফাংশন ব্যবহার করে শব্দ.
>> এর কটাক্ষপাত করা যাক হ্যাশ ফাংশন.
সুতরাং আপনি সত্যিই প্রয়োজন নেই এই বুঝতে.
এবং প্রকৃতপক্ষে আমরা এই হ্যাশ টানা ইন্টারনেট থেকে কাজ.
আপনি স্বীকার করা প্রয়োজন শুধুমাত্র জিনিস এই একটি const গৃহস্থালি * শব্দ লাগে.
সুতরাং এটা ইনপুট হিসেবে একটি পংক্তি গ্রহণ, এবং এর আউটপুট হিসাবে একটি স্বাক্ষরবিহীন int-ফেরার.
তাই যে সমস্ত একটি হ্যাশ ফাংশন হয়, এটা হয় একটি ইনপুট মধ্যে নেয় এবং আপনি একটি দেয়
hashtable মধ্যে সূচী.
>> আমরা NUM_BUCKETS দ্বারা moding করছি যে লক্ষ্য করুন, তাই যে মূল্য ফেরত
আসলে hashtable মধ্যে একটি সূচক এবং না অতিক্রম না সূচক
অ্যারের কোট.
সুতরাং যে ফাংশন, আমরা চলুন দেওয়া আমরা পড়তে যে শব্দ হ্যাশ করার
অভিধান.
এবং তারপর আমরা ব্যবহার করতে যাচ্ছেন সন্নিবেশ যে হ্যাশ
hashtable ঢোকা.
>> এখন hashtable হ্যাশ বর্তমান টেবিলে তালিকা লিঙ্ক.
এবং এটা খুবই সম্ভব এটি শুধু শূন্য যে.
আমরা আমাদের এন্ট্রি সন্নিবেশ করতে চান এই লিঙ্ক তালিকা শুরুতে.
এবং তাই আমরা আমাদের বর্তমান আছে চলুন কি hashtable করতে এন্ট্রি পয়েন্ট
বর্তমানে স্থানটিকে.
এবং তারপর আমরা, সংরক্ষণ চলুন এ hashtable মধ্যে
হ্যাশ, বর্তমান এন্ট্রি.
তাই এই দুটি লাইন সফলভাবে সন্নিবেশ শুরুতে এন্ট্রি
যে সূচিতে যুক্ত তালিকা hashtable মধ্যে.
>> আমরা যে সঙ্গে সম্পন্ন হলে, আমরা জানি আমরা অন্য শব্দ পাওয়া যে
অভিধান, এবং আমরা আবার বাড়ায়.
সুতরাং আমরা করছেন রাখা যে fscanf যতক্ষণ অবশেষে এ অ 1 কিছু ফেরত
যা বিন্দু মনে রাখা আমরা এন্ট্রি মুক্ত করতে হবে.
সুতরাং এখানে আমরা একটি এন্ট্রি malloced.
এবং আমরা কিছু পড়ার চেষ্টা অভিধান থেকে.
এবং আমরা সফলভাবে পড়তে হয়নি মধ্যে অভিধান থেকে কিছু,
আমরা এন্ট্রি মুক্ত করতে প্রয়োজন যে ক্ষেত্রে আমরা আসলে পুরা না
hashtable, এবং পরিশেষে বিরতি.
>> আমরা আউট বিরতি পরে আমরা দেখাতে, ভাল, আমরা, কারণ সেখানে আউট বিরতি নি
একটি ত্রুটি ফাইল থেকে পড়া হয়?
অথবা আমরা আউট বিরতি, কারণ আমরা ফাইলের শেষে পৌঁছেছেন?
একটি ত্রুটি তারপর ছিল, যদি আমরা মিথ্যা ফিরে চাই.
লোড সফল হয়নি কারণ.
আর এই প্রক্রিয়ায় আমরা আন চান সব আমরা পড়তে যে শব্দ, এবং
অভিধান ফাইলটি বন্ধ করুন.
>> আমরা সফল হয়নি Assuming, তারপর আমরা ঠিক এখনও অভিধান বন্ধ করতে হবে
ফাইল, এবং পরিশেষে সত্য ফিরে যেহেতু আমরা সফলভাবে অভিধান লোড.
এবং যে চাপের জন্য এটি.
সুতরাং এখন, একটি লোড hashtable দেওয়া চেক এই মত দেখতে যাচ্ছে.
তাই, যা এটি একটি bool ফেরৎ, চেক পাস কি না তা নির্দেশ করা যাচ্ছে
গৃহস্থালি * শব্দ, কি না তা পাস স্ট্রিং আমাদের অভিধান আছে.
এটি অভিধানে যদি তাই এটা আমাদের hashtable মধ্যে যদি,
আমরা সত্য ফিরে আসবে.
এটা না হলে, আমরা মিথ্যা ফিরে আসবে.
>> এই শব্দ সালে পাশ দেওয়া, আমরা করছি শব্দ হ্যাশ যাচ্ছে.
এখন চিনতে একটি গুরুত্বপূর্ণ জিনিস লোড আমরা জানতাম যে যে সব
আমরা ছোট হাতের হতে যাচ্ছেন শব্দ.
কিন্তু এখানে আমরা তাই নিশ্চিত না হন.
আমরা আমাদের হ্যাশ ফাংশন কটাক্ষপাত করা হলে, আসলে আমাদের হ্যাশ ফাংশন
নিম্ন আবরণ প্রতিটি চরিত্র শব্দের.
সুতরাং নির্বিশেষে ক্যাপিটালাইজেশন এর শব্দ, আমাদের হ্যাশ ফাংশন রিটার্ন করে
যাই হোক না কেন জন্য একই সূচী ক্যাপিটালাইজেশন এটা থাকা উচিত, যেমন হয়
একটি সম্পূর্ণ ছোট হাতের জন্য ফিরে শব্দের সংস্করণ.
ঠিক আছে.
এটা আমাদের সূচী মধ্যে হয় এই শব্দ জন্য hashtable.
>> এখন লুপ জন্য এই যাচ্ছে লিঙ্ক তালিকা উপর বারবার
যে যে সূচিতে ছিল.
সুতরাং আমরা এন্ট্রি আরম্ভ করা হয় বিজ্ঞপ্তি যে সূচক নির্দেশ.
আমরা চালিয়ে যাচ্ছেন এন্ট্রি! = শূন্য সময়.
এবং মনে রাখবেন যে পয়েন্টার আপডেট পরবর্তী আমাদের যুক্ত তালিকা এন্ট্রি = এন্ট্রি>.
সুতরাং আমাদের বর্তমান এন্ট্রি পয়েন্ট আছে লিঙ্ক তালিকায় পরবর্তী আইটেম.
>> তাই লিঙ্ক তালিকায় প্রতিটি এন্ট্রির জন্য, আমরা strcasecmp ব্যবহার করতে যাচ্ছেন.
এটা strcomp না.
আবার, আমরা চাই কারণ জন্মভূমিতে জিনিস মামলা করবেন.
সুতরাং আমরা তুলনা করতে strcasecmp ব্যবহার এই মাধ্যমে প্রেরণ করা হত যে শব্দ
শব্দ বিরুদ্ধে ফাংশন যে এই এন্ট্রি হয়.
এটি শূন্য ফেরৎ, যে ছিল মানে আমরা চাই যে ক্ষেত্রে একটি ম্যাচ,
সত্য ফিরে.
আমরা সফলভাবে পাওয়া আমাদের hashtable শব্দ.
>> একটি ম্যাচ ছিল না, তাহলে আমরা করছি আবার লুপ যাচ্ছে এবং তাকান
পরের এন্ট্রি.
এবং আমরা যখন সেখানে looping চালিয়ে যাব এই লিঙ্ক তালিকায় এন্ট্রি হয়.
আমরা বিরতি তাহলে কি হবে লুপ জন্য এই আউট?
আমরা একটি এন্ট্রি খুঁজে পান না মানে যে ক্ষেত্রে, এই শব্দ মিলেছে
আমরা ইঙ্গিত মিথ্যা ফিরে যে আমাদের hashtable এই শব্দ ধারণ করা হয়নি.
এবং যে একটি চেক আছে.
>> তাই এর আকার কটাক্ষপাত করা যাক.
এখন আকার বেশ সহজ হবে.
যেহেতু প্রতিটি শব্দের জন্য, চাপের মধ্যে স্মরণ আমরা একটি আন্তর্জাতিক মান বৃদ্ধি, পাওয়া
পরিবর্তনশীল hashtable আকার.
তাই মাপ ফাংশন ঠিক যাচ্ছে বিশ্বব্যাপী পরিবর্তনশীল ফিরে যাও.
এবং যে এটি.
>> এখন পরিশেষে, আমরা মাল খালাস করতে হবে অভিধান সবকিছু সম্পন্ন এর একবার.
তাই কিভাবে আমরা তা করতে যাচ্ছে?
রাইট এখানে আমরা ধরে looping করছি আমাদের টেবিল সব buckets.
সুতরাং NUM_BUCKETS buckets আছে.
এবং প্রতিটি লিঙ্ক তালিকা জন্য আমাদের hashtable, আমরা ধরে লুপ চলুন
লিঙ্ক তালিকা সম্পূর্ণতা, প্রতিটি উপাদান freeing.
>> এখন আমরা সচেতন হওয়া প্রয়োজন.
তাই আমরা এখানে একটি অস্থায়ী ভেরিয়েবল আছে যে পরের পয়েন্টার জমা করার এর
লিঙ্ক তালিকায় উপাদান.
এবং তারপর আমরা বিনামূল্যে চলুন বর্তমান উপাদান.
আমরা আমরা আমরা যেহেতু এই কাজ নিশ্চিত করা প্রয়োজন শুধু বর্তমান উপাদান মুক্ত করতে পারবেন না
এবং তারপর পরবর্তী পয়েন্টার অ্যাক্সেস করতে চেষ্টা করুন, একবার যেহেতু আমরা এটি মুক্ত করেছি,
স্মৃতি হয়ে অবৈধ.
>> সুতরাং আমরা একটি পয়েন্টার কাছাকাছি রাখা প্রয়োজন পরবর্তী উপাদান, তাহলে আমরা মুক্ত করতে পারেন
বর্তমান উপাদান, এবং তারপর আমরা আপডেট করতে পারেন নির্দেশ আমাদের বর্তমান উপাদান
পরবর্তী উপাদান.
আমরা উপাদান লুপ আছে করব, যখন এই লিঙ্ক তালিকায়.
আমরা সব লিঙ্ক জন্য যে চেষ্টা করবো hashtable এ তালিকায়.
আমরা যে সঙ্গে সম্পন্ন এবং একবার, আমরা করেছি সম্পূর্ণ hashtable unloaded, এবং
আমরা কাজ সম্পন্ন হয়.
সুতরাং এটি আন জন্য অসম্ভব কখনও মিথ্যা ফিরে.
এবং আমরা কাজ সম্পন্ন হয়, আমরা শুধু সত্য ফিরে.
>> এর এই সমাধান ব্যবহার করে দেখুন না.
তাই আসুন কি আমাদের কটাক্ষপাত করা যাক struct নোড মত হবে.
এখানে আমরা আমরা একটি bool আছে চলুন দেখুন শব্দ এবং একটি struct নোড * শিশু
বন্ধনী বর্ণমালা.
আপনি হতে পারেন সুতরাং প্রথম জিনিস ভাবছি, কেন বর্ণমালা
এড 27 হিসাবে সংজ্ঞায়িত?
ভাল, আমরা প্রয়োজন চলুন মনে রাখা ঊর্ধকমা হ্যান্ডলিং হবে.
সুতরাং যে কিছুটা একটি অংশ হতে যাচ্ছে এই প্রোগ্রাম সারা বিশেষ ক্ষেত্রে.
>> এখন মনে রাখবেন কিভাবে একটি trie আসলে কাজ করে.
আসুন আমরা শব্দ সূচিবদ্ধ করাকে করছি বলে "বিড়াল." তারপর trie মূল থেকে,
আমরা শিশুদের তাকান চলুন অ্যারে, এবং আমরা তাকান চলুন
চিঠি যে অনুরূপ সূচী 2 ইন্ডেক্স করা হবে সি তাই.
তাই দেওয়া যে, যে ইচ্ছা আমাদের একটি নতুন নোডের দিতে.
এবং তারপর আমরা যে নোড থেকে কাজ করব.
>> সুতরাং যে নোড দেওয়া, আমরা আবার করছি শিশুদের অ্যারে তাকান যাচ্ছে.
এবং আমরা সূচক শূন্য তাকান চলুন বিড়াল একটি মিলা করতে.
তখন আমরা যে নোড যেতে চলুন, এবং যে নোড দেওয়া আমরা চলুন
শেষে চেহারা এটি একটি অনুরূপ এর টি এবং যে নোডের উপর চলন্ত যাও
পরিশেষে, আমরা সম্পূর্ণভাবে তাকিয়ে আছে মাধ্যমে আমাদের শব্দ "বিড়াল." এবং এখন bool
শব্দ কিনা ইঙ্গিত অনুমিত হয় এই দেওয়া শব্দ আসলে একটি শব্দ.
>> তাই কেন আমরা যে বিশেষ ক্ষেত্রে প্রয়োজন?
আচ্ছা কি শব্দের "বিপর্যয়কারী ঘটনা" আমাদের অভিধানে, কিন্তু
শব্দ "বিড়াল" নয় কি?
তাই ও দেখতে খুঁজছেন যদি শব্দ "বিড়াল" আমাদের অভিধান, আমরা পারব হয়
সফলভাবে মাধ্যমে সন্ধান করতে যাচ্ছে অঞ্চলের নোডের মধ্যে সূচকের সি একটি টি.
কিন্তু যে শুধুমাত্র কারণ বিপর্যয় পথে নোড তৈরি করতে ঘটেছে
সি একটি টি থেকে, সব পথ থেকে শব্দের শেষে.
সুতরাং bool শব্দ কি না তা নির্দেশ করতে ব্যবহৃত হয় এই বিশেষ অবস্থান
আসলে একটি শব্দ নির্দেশ করে.
>> ঠিক আছে.
তাই এখন আমরা এটা trie কি জানেন যে অনুরূপ যাচ্ছে, এর তাকান
ফাংশন লোড.
সুতরাং লোড একটি bool ফিরে যাচ্ছে কিনা আমরা সফলভাবে অথবা জন্য
অসফল অভিধান লোড.
এবং এই অভিধান হতে যাচ্ছে আমরা লোড করতে চান.
>> আমরা কি করছি তাই সর্বপ্রথম খোলা পড়ার জন্য যে অভিধান আপ.
এবং আমরা নিশ্চিত করতে হবে আমরা ব্যর্থ হয়নি.
অভিধান ছিল না তাই যদি সফলভাবে খোলা, এটা ফিরে আসবে
নাল, যে ক্ষেত্রে আমরা করছি মিথ্যা ফিরে যাচ্ছে.
কিন্তু অভিমানী যে এটা সফলভাবে খোলা তারপর, আমরা আসলে পড়তে পারেন
অভিধান মাধ্যমে.
>> আমরা চলুন সুতরাং প্রথম জিনিস যেতে চাই আমরা এই আছে হয়
বিশ্বব্যাপী পরিবর্তনশীল রুট.
এখন রুট * একটি নোডের হতে যাচ্ছে.
এটা আমরা করছি যে আমাদের trie উপরে আছে মাধ্যমে iterating করা যাচ্ছে.
আমরা চলুন যে তাই প্রথম জিনিস কাজ করতে চান করতে বরাদ্দ করা হয়
আমাদের রুট জন্য মেমরি.
আমরা calloc ব্যবহার করছেন যে লক্ষ্য করুন মূলত একই যা ফাংশন,
malloc ফাংশন হিসাবে, ছাড়া এটা কিছু যে ফেরত গ্যারান্টী
সম্পূর্ণ আউট zeroed.
আমরা malloc ব্যবহার সুতরাং, যদি আমরা করতে হবে মধ্যে পয়েন্টার সব দিয়ে যেতে আমাদের
নোড, এবং নিশ্চিত যে তারা সব নাল করছি.
সুতরাং calloc আমাদের জন্য তা করতে হবে.
>> এখন শুধু malloc মত, আমরা করা প্রয়োজন বরাদ্দ আসলে ছিল নিশ্চিত যে
সফল.
এই নাল ফিরে আসেন, তাহলে আমরা বন্ধ বা অভিধান প্রয়োজন
ফাইল এবং মিথ্যা ফিরে.
সুতরাং যে বরাদ্দ ছিল অভিমানী সফল, আমরা * একটি নোডের ব্যবহার চলুন
আমাদের trie মাধ্যমে পুনরুক্তি করতে কার্সার.
সুতরাং আমাদের শিকড় পরিবর্তন করতে যাচ্ছেন না, কিন্তু আমরা কার্সার ব্যবহার চলুন
আসলে নোড থেকে নোড যান.
>> তাই এই মধ্যে লুপ জন্য আমরা পড়া হয় অভিধান ফাইলটি মাধ্যমে.
এবং আমরা fgetc ব্যবহার করছেন.
Fgetc একটি একক দখল করতে যাচ্ছে ফাইল থেকে অক্ষর.
আমরা দখল চালিয়ে যাচ্ছেন অক্ষর আমরা পৌঁছাতে না যখন
ফাইলের শেষে.
>> আমরা সব ব্যবস্থা করতে হবে দুই ক্ষেত্রে আছে.
প্রথমত, যদি চরিত্র একটি নতুন লাইন ছিল না.
সুতরাং আমরা এটা, তারপর একটি নতুন লাইন ছিল জানতে আমরা একটি নতুন শব্দ যান চলেছেন.
কিন্তু তারপর, এটা একটা নতুন লাইন ছিল না অভিমানী এখানে আমরা চিন্তা করতে চাই
সূচী আমরা মধ্যে সূচক যাচ্ছেন শিশুদের অ্যারের মধ্যে যে
আমরা আগে দিকে তাকিয়ে.
>> সুতরাং, আমি আগে বলেন ভালো, আমরা প্রয়োজন বিশেষ ক্ষেত্রে ঊর্ধকমা.
আমরা তিন ব্যবহার করছেন লক্ষ্য করুন এখানে অপারেটর.
তাই আমরা যদি এই পড়তে যাচ্ছেন আমরা পড়তে চরিত্র একটি ছিল
ঊর্ধকমা, তারপর আমরা সেট চলুন সূচক = "বর্ণমালা" -1, যা হবে
সূচক 26 হতে.
>> অন্যথায়, এটি একটি ঊর্ধকমা ছিল না, যদি সেখানে আমরা সূচী সেট চলুন
গ সমান - একটি.
তাই ফিরে পূর্বে পি সেট থেকে মনে রাখবেন, গ - একটি আমাদের দিতে হবে
সি এর বর্ণানুক্রমিক অবস্থান তাই আপনি যদি সি এই করবে না, চিঠি একটি হল
আমাদের সূচক শূন্য দিতে.
অক্ষর বি জন্য, এটা আপনাকে দিতে হবে তাই আমাদের সূচক 1, ২.
>> তাই এই আমাদের মধ্যে সূচক দেয় আমরা চাই যে শিশুদের অ্যারে.
আমি এই সূচক বর্তমানে নাল যদি শিশু, এর মানে হল যে একটি নোডের
বর্তমানে বিদ্যমান নেই যে পথ থেকে.
সুতরাং আমরা বরাদ্দ করা প্রয়োজন যে পথ জন্য একটি নোড.
যে আমরা এখানে চেষ্টা করবো কি.
>> তাই আমরা আবার calloc ব্যবহার চলুন ফাংশন, আমরা করতে হবে না, যাতে
সব পয়েন্টার আউট শূন্য.
এবং আমরা আবার চেক প্রয়োজন যে calloc ব্যর্থ হয়নি.
Calloc ব্যর্থ হয়নি, তাহলে আমরা প্রয়োজন সবকিছু আন, বন্ধ করুন আমাদের
অভিধান, এবং মিথ্যা ফিরে.
সুতরাং তারপর, ব্যর্থ না অভিমানী এই আমাদের জন্য নতুন শিশু তৈরি করবে.
এবং তারপর আমরা যে সন্তানের যেতে হবে.
আমাদের কার্সার পুনরুক্তি হবে যে সন্তানের নিচে.
>> আমি এই দিয়ে শুরু করতে নাল ছিল না যদি, তারপর কার্সার শুধু পুনরুক্তি করতে পারেন
আসলে ছাড়া যে সন্তানের নিচে কিছু বরাদ্দ করা হচ্ছে.
এই প্রথম আমরা ঘটেছে যেখানে কেস শব্দ বরাদ্দ "বিড়াল." এবং
আমরা বরাদ্দ করা যেতে হলে যে মানে "বিপর্যয়কারী ঘটনা," আমরা তৈরি করতে হবে না
আবার সি একটি টি জন্য নোড.
তারা ইতিমধ্যেই বিদ্যমান.
>> অন্য এই কি?
এই গ যেখানে শর্ত গ নতুন লাইন ছিল যেখানে ব্যাকস্ল্যাশ এন,.
এই আমরা সফলভাবে আছে যে মানে একটি শব্দ সম্পন্ন.
এখন কি আমরা যেতে চাই যখন আমরা সফলভাবে একটি শব্দ সম্পন্ন?
আমরা এই শব্দ ক্ষেত্র ব্যবহার চলুন আমাদের struct নোড ভেতরে.
আমরা সত্য যে সেট করতে চান.
সুতরাং যে ইঙ্গিত করে যে এই নোডের একটি সফল ইঙ্গিত
শব্দ, একটি প্রকৃত শব্দ.
>> এখন সত্য যে সেট.
আমরা বিন্দু থেকে আমাদের কার্সার পুনরায় সেট করতে চান আবার trie শুরুতে.
এবং পরিশেষে, আমাদের অভিধান বাড়ায় আকার, আমরা অন্য কাজ পাওয়া থেকে.
সুতরাং আমরা যে করছেন রাখা চলুন, , অক্ষর দ্বারা অক্ষর পড়া
আমাদের trie নতুন নোড নির্মাণের এবং অভিধানে, যতক্ষণ না প্রতিটি শব্দের জন্য
পরিশেষে আমরা সি পৌঁছানোর! = ফাইলের শেষে, যা ক্ষেত্রে আমরা ফাইল আউট বিরতি.
>> এখন দুই ক্ষেত্রে অধীনে আছে আমরা ফাইলের শেষে আঘাত করে থাকতে পারে যা.
একটি ত্রুটি ছিল প্রথম ফাইল থেকে পড়া.
একটি ত্রুটি ছিল তাই, আমরা সাধারণত যা করতে হবে.
বন্ধ, সবকিছু আন ফাইল, মিথ্যা ফিরে.
, একটি ত্রুটি ছিল না Assuming যে শুধু আমরা আসলে শেষ আঘাত মানে
ফাইল, যা ক্ষেত্রে, আমরা বন্ধ করুন ফাইল এবং সত্য ফিরে যেহেতু আমরা
সফলভাবে লোড অভিধান আমাদের trie মধ্যে.
>> তাই এখন এর চেক চেক আউট যাক.
চেক ফাংশন এ জন্যে, আমরা দেখতে যে চেক একটি bool ফিরে যাচ্ছে.
এই শব্দ এটা যে যদি এটা সত্য ফেরৎ অতিক্রান্ত হচ্ছে আমাদের trie হয়.
এটা অন্যথায় মিথ্যা ফেরৎ.
সুতরাং কিভাবে আপনি কি না তা নির্ধারণ করা হয় এই শব্দ আমাদের trie হয়?
>> আমরা এখানে দেখতে যে, ঠিক আগের মতই, আমরা বারবার করতে কার্সার ব্যবহার চলুন
আমাদের trie মাধ্যমে.
এখন এখানে আমরা বারবার চলুন আমাদের সমগ্র শব্দ ধরে.
সুতরাং, আমরা অতীত হয় শব্দের উপর iterating আমরা নির্ধারণ করতে যাচ্ছেন
সূচক শিশুদের অ্যারের মধ্যে যে শব্দ বন্ধনী আই অনুরূপ তাই এই
ঠিক মত দেখতে যাচ্ছে লোড, যেখানে যদি শব্দ [I]
একটি ঊর্ধকমা, তাহলে আমরা চাই হয় সূচক "বর্ণমালা" ব্যবহার করার জন্য - 1.
আমরা নির্ধারিত কারণ যে যে আমরা সংরক্ষণ করতে যাচ্ছেন যেখানে হয়
apostrophes.
>> অন্যথায় আমরা দুটি কম শব্দ ব্যবহার চলুন বন্ধনী আই সুতরাং যে শব্দ মনে করতে পারেন
নির্বিচারে ক্যাপিটালাইজেশন আছে.
এবং তাই আমরা আমরা যে নিশ্চিত করতে চাই একটা ছোট হাতের সংস্করণ ব্যবহার.
এবং তারপর যে 'একটি' একবার থেকে বিয়োগ আবার আমাদের বর্ণানুক্রমিক দিতে
যে চরিত্রের অবস্থান.
সুতরাং যে আমাদের সূচী হতে যাচ্ছে শিশুদের অ্যারের মধ্যে.
>> এবং এখন যদি শিশুদের মধ্যে যে সূচী অ্যারে নাল হয়, যে আমরা মানে
আর iterating চালিয়ে যেতে পারেন আমাদের trie নিচে.
যদি সেই ক্ষেত্রে, এই শব্দ না করতে পারেন সম্ভবত আমাদের trie হতে.
তা হলে, যে would সাল একটি পথ হতে পারে মানে
যে শব্দ নিচে.
এবং যদি আপনি নাল সম্মুখীন হবে.
সুতরাং নাল সম্মুখীন, আমরা মিথ্যা ফিরে.
শব্দ অভিধানে নেই.
এটি নাল না, তাহলে আমরা করছি iterating চালিয়ে যাচ্ছে.
>> তাই আমরা সেখানে কার্সার আউট চলুন যে বিশেষ নির্দেশ
যে সূচিতে নোড.
আমরা সারা যে করছেন রাখা সম্পূর্ণ শব্দ, অভিমানী
আমরা নাল আঘাত না.
আমরা মাধ্যমে পেতে পারবেন মানে সম্পূর্ণ শব্দ এবং খুঁজে
আমাদের ব্যবহার করে দেখুন একটি নোড.
কিন্তু আমরা পুরোপুরি এখনও সম্পন্ন না.
>> আমরা শুধু সত্য ফিরে চাই না.
আমরা কার্সার> শব্দ ফিরে চাই.
আবার স্মরণ থেকে, "বিড়াল" করা হয় না হয় আমাদের অভিধানে, এবং "বিপর্যয়কারী ঘটনা"
তারপর আমরা সফলভাবে আমরা পেতে হবে হয় মাধ্যমে শব্দ "বিড়াল." কিন্তু কার্সার
শব্দ মিথ্যা এবং সত্য না হতে হবে.
সুতরাং আমরা ইঙ্গিত কার্সার শব্দ ফিরে কিনা এই নোডের আসলে একটি শব্দ.
এবং যে চেক জন্য এটি.
>> তাই এর আকার চেক আউট যাক.
তাই আকার বেশ সহজ হবে যেহেতু, চাপের মধ্যে মনে রাখবেন, আমরা করছি
জন্য অভিধান আকার বৃদ্ধিশীল আমরা সম্মুখীন যে প্রতিটি শব্দ.
তাই সাইজ ঠিক করতে যাচ্ছে অভিধান মাপ ফিরে.
এবং যে এটি.
>> তাই সর্বশেষে আমরা আন করেছেন.
তাই আন, আমরা ব্যবহার করতে যাচ্ছেন একটি আসলে সব কি recursive ফাংশন
আমাদের জন্য কাজ.
তাই আমাদের ফাংশন যাচ্ছে unloader আহ্বান করা.
কি unloader করতে যাচ্ছে?
আমরা যে unloader যাচ্ছে এখানে দেখুন শিশুদের সব সময়ে উপর বারবার
এই বিশেষ নোড.
আর সন্তানের নোড নয় নাল, তারপর আমরা চলুন
চাইল্ড নোড আন.
>> তাই এই আপনি recursively আন হল আমাদের শিশুদের সব.
আমরা নিশ্চিত যে একবার আমাদের শিশুদের সব unloaded করা হয়েছে, তাহলে আমরা
নিজেদেরকে মুক্ত, তাই করতে পারেন নিজেদেরকে আন.
এই recursively কাজ করবে সমগ্র trie আন.
এবং তারপর যে কাজ একবার, আমরা সত্য ফিরে আসতে পারেন.
আন ব্যর্থ করতে পারবে না.
আমরা শুধু জিনিষ freeing করছি.
তাই একবার আমরা freeing শেষ করেছেন সবকিছু, সত্য ফিরে.
এবং যে এটি.
আমার নাম রব হল.
এবং এই speller ছিল.
>> [সঙ্গীত বাজাচ্ছি]