ধরুন আমরা একটি ফোন ডিরেক্টরি ডিজাইন করতে চাই যা নিম্নলিখিত ক্রিয়াকলাপগুলিকে সমর্থন করে -
-
get − এটি এমন একটি নম্বর প্রদান করবে যা কাউকে বরাদ্দ করা হয়নি।
-
চেক − এটি একটি নম্বর উপলব্ধ কি না তা পরীক্ষা করবে৷
-
মুক্তি - এটি একটি সংখ্যাকে পুনর্ব্যবহার করবে বা প্রকাশ করবে৷
৷
ইনিশিয়ালাইজার ব্যবহার করে, আমরা প্রথমে n সংখ্যা শুরু করতে পারি
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি সেট s
সংজ্ঞায়িত করুন -
উপলব্ধ একটি সারি সংজ্ঞায়িত করুন
-
ইনিশিয়ালাইজার সর্বোচ্চ নম্বর নেবে।
-
N :=সর্বোচ্চ সংখ্যা
-
আরম্ভ করার জন্য i :=0, যখন i
-
আমি উপলব্ধ মধ্যে ঢোকান
-
-
একটি ফাংশন সংজ্ঞায়িত করুন get()
-
যদি উপলব্ধ আকার 0 এর সমান হয়, তাহলে −
-
রিটার্ন -1
-
-
x :=উপলব্ধ প্রথম উপাদান
-
s
-এ x ঢোকান -
উপলব্ধ থেকে উপাদান মুছুন
-
রিটার্ন x
-
একটি ফাংশন চেক () সংজ্ঞায়িত করুন, এটি নম্বর নেবে,
-
যদি সংখ্যা>=N বা সংখ্যা <0, তাহলে −
-
মিথ্যা ফেরত দিন
-
-
রিটার্ন সত্য সংখ্যা s
এ নেই -
একটি ফাংশন রিলিজ সংজ্ঞায়িত করুন(), এটি সংখ্যা নেবে,
-
যদি চেক (সংখ্যা), তারপর -
-
ফেরত
-
-
x :=সংখ্যা
-
s
থেকে x মুছুন -
উপলব্ধ মধ্যে x ঢোকান
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#includeনেমস্পেস std;class PhoneDirectory ব্যবহার করে সারি =N || number <0) return false; রিটার্ন s.find(number) ==s.end(); } void release(int number){ if (check(number)) return; int x =সংখ্যা; s.erase(x); available.push(x); }};প্রধান(){ PhoneDirectory ob(3); cout <<(ob.get()) < ইনপুট
ob.get();ob.get();ob.check(2);ob.get();ob.check(2);ob.release(2);ob.check(2);প্রে>আউটপুট
011201