[সঙ্গীত বাজাচ্ছি] Andi Peng: ধারার সপ্তাহে 6 স্বাগতম. আমরা আমাদের আদর্শ থেকে বিচ্যুত মঙ্গলবার অধ্যায় সময় এই সুদৃশ্য রবিবার সকালে বিকালে. সবার জন্য আপনাকে ধন্যবাদ যে আজ কিন্তু গুরুত্বের আমাকে যোগদান সাধুবাদ একটি বৃত্তাকার. যে একটি চমত্কার বড় প্রচেষ্টার. আমি প্রায় এমনকি এটি তৈরি করা হয়নি সময় পর্যন্ত, কিন্তু এটা ঠিক ছিল. তাই আমি আপনাকে যে সব জানি শুধু ব্যঙ্গ করেছেন এটা. প্রথম সব, স্বাগত জানাই যে উল্টানো পাশ. দ্বিতীয়ত, আমরা এটা সম্পর্কে আলোচনা করব. আমরা ব্যঙ্গ সম্পর্কে আলোচনা করব. আমরা কিভাবে কথা বলতে পারবেন আপনি ক্লাসে করছেন. তুমি ভাল থাকবে. আমি আপনার জন্য কুইজ আছে এখানে শেষে আপনি, তাই আপনাকে বলছি নিতে চান একটি, এটি সম্পূর্ণই সূক্ষ্ম বর্ণন. তাই দ্রুত আমরা শুরু করার আগে নিম্নরূপ আজকের জন্য এজেন্ডা হয়. যেহেতু আপনি দেখতে পারেন, আমরা করছি মূলত দ্রুত অগ্নিসংযোগ ডাটা স্ট্রাকচার আভা মাধ্যমে সত্যিই, সত্যিই, সত্যিই দ্রুত. যেমন সুতরাং, এটা হবে না সুপার ইন্টারেক্টিভ আজ. এটা শুধু আমার ধরনের shouting হবে কিছু যে আপনি, এবং আমি আপনাকে গুলান যদি, আমি খুব দ্রুত যাচ্ছি, আমাকে জানাতে. তারা শুধু বিভিন্ন তথ্য আছেন কাঠামো, এবং অংশ হিসাবে এই জন্য আপনার pset এর আসন্ন সপ্তাহে, আপনি পাবেন তাদের এক বাস্তবায়ন করতে বলা হবে, সম্ভবত দুই তাদের them-- দুইয়ের আপনার pset মধ্যে. ঠিক আছে, তাই আমি শুধু যাচ্ছি কিছু ঘোষণা দিয়ে শুরু. আমরা stacks এবং আরো সারির উপর যাবেন আমরা ব্যঙ্গ আগে কি কি আর গভীরতার. আমরা ধরে যেতে লিঙ্ক পাবেন আবার, আবার তালিকায় বেশী গভীরতার আরও কি আমরা ব্যঙ্গ আগে ছিল. এবং তারপর আমরা হ্যাশ বিষয়ে কথা বলতে পারবেন টেবিল, গাছ এবং চেষ্টা, যা সমস্ত pset জন্য বেশ প্রয়োজনীয়. এবং তারপর আমরা কিছু উপর যাবেন যদি pset5 জন্য সহায়ক টিপস. ঠিক আছে, তাই ব্যঙ্গ 0. গড় 58% ছিল. এটা ছিল খুবই কম, এবং তাই আপনাকে বলছি সব অনুযায়ী খুব, খুব ভাল করেছেন এটার সাথে. যদি আপনি অনেক সুন্দর, চলতি নিয়ম গড়ের একটি স্ট্যানডার্ড ডেভিয়েশন মধ্যে আমরা কম করছি, বিশেষত আরামদায়ক অধ্যায়, আপনি সম্পূর্ণই সূক্ষ্ম. আপনি ট্র্যাক করছি. জীবন সুন্দর. আমি এটা মনে করি যে ভীতিকর জানেন আমি এই ব্যঙ্গ একটি 40% মত পেয়েছিলাম. আমি এই শ্রেণীর ব্যর্থ করতে যাচ্ছি. আমি তোমাকে কথা দিচ্ছি, আপনি না হন বর্গ ব্যর্থ যাচ্ছে. আপনি সম্পূর্ণই সূক্ষ্ম. ওভার পেয়েছিলাম যারা আপনি তাদের জন্য গড়, হৃদয়গ্রাহী, চিত্তাকর্ষক, দারুণ লেগেছে ভাল কাজ করেছেন. আমি আমার সাথে তাদের আছে. তাদের পেতে আসা বিনা দ্বিধায় অধ্যায় শেষে. দূর্নীতির কোন পর্যায় আছে তাহলে আমাকে জানাতে বিষয়, তাদের সঙ্গে প্রশ্ন. আমরা আপনার স্কোর আপ যোগ করুন ভুল করে আমাদের জানাতে. ঠিক আছে, যদি pset5 তাই, এই সত্যিই একটি হল অর্থে ইয়েল জন্য অদ্ভুত সপ্তাহে আমাদের pset কারণে যে সহ বুধবার দুপুরে দেরী দিন, তাই এটি আসলে দুপুরে মঙ্গলবার তাত্ত্বিক কারণে. সম্ভবত কোন এক সমাপ্ত দুপুরে মঙ্গলবার এ. যে সম্পূর্ণই সূক্ষ্ম. আমরা অফিসে ঘন্টা আছে চলুন আজ রাতে হিসেবে সোমবার রাতে. ও বিভাগে সব এই সপ্তাহে আসলে কর্মশালা পরিণত করা, তাই এ পপ বিনা দ্বিধায় আপনার কাঙ্ক্ষিত বিভাগে, এবং তারা ধরনের মিনি pset হবেন যে সহায়তার জন্য কর্মশালা. তাই যেমন, এই শুধুমাত্র অধ্যায় যেখানে আমরা উপাদান অধ্যাপনা করছেন. সকল বিভাগে মনোযোগ নিবদ্ধ করা হবে একচেটিয়াভাবে pset জন্য সাহায্যের উপর. হ্যা? শ্রোতা: কোথায় অফিসে ঘন্টা হয়? Andi Peng: অফিস ঘন্টা উহু, ভাল প্রশ্ন tonight--. আমি মনে করি অফিস ঘন্টার রাতের টিল অথবা কমন্স-এ আছে. আপনি অনলাইন CS50 চেক যদি এবং আপনি, অফিসে ঘন্টা যান একটি সময়সূচী আছে উচিত যে তাদের সব আছে যেখানে আপনি বলে. আমি আজ রাতে হয় জানেন অথবা আগামীকাল টিল, হয় এবং আমি মনে করি আমরা হয়ত মনে অন্যান্য রাতের জন্য কমন্স. আমি নিশ্চিত নই. ভালো প্রশ্ন. CS50 উপর পরীক্ষা. সংক্রান্ত কুল, কোন প্রশ্ন তিন দিনের মত পরের জন্য সময়সূচি? আমি ডেভিড মত আপনাকে বলছি অঙ্গীকার এই পাহাড়ের উপরে হয়, বলেন. আপনাকে বলছি প্রায় আছে. মাত্র তিন দিন. সেখানে পেতে, এবং তারপর আমরা সব নিচে আসবো. আমরা একটা চমৎকার সি এস-মুক্ত বিরতি থাকবে. ফিরে আসার জন্য শুভেচ্ছা. আমরা ওয়েব মধ্যে আকর্ষণীয় করব প্রোগ্রামিং ও উন্নয়ন, খুব মজা হয় কিছু তুলনায় অন্যান্য psets কিছু. এবং এটা অত্যন্ত ঠাণ্ডা হবে, এবং করব আমরা অনেক মজা হবে. আমরা আরো ক্যান্ডি থাকবে. ক্যান্ডি জন্য দুঃখিত. আমি ক্যান্ডি ভুলে গেছি. এটা একটা মোটামুটি সকালে ছিল. তাই আপনাকে বলছি, প্রায় আছে এবং আমি আপনাকে বলছি সত্যিই গর্বিত. ঠিক আছে, তাই stacks. যারা জ্যাক সম্পর্কে প্রশ্ন পছন্দ এবং ব্যঙ্গ তার পোশাক? কেউ না? আচ্ছা, ঠিক আছে. তাই মূলত আপনি পারেন হিসাবে ছবি জ্যাক, এই লোক এখানে, পোশাক নিতে ভালবাসে স্ট্যাক উপরের আউট, এবং তিনি সম্মুখের এটি ফিরিয়ে রাখে তিনি পরে স্ট্যাক এর কাজ. এই ভাবে তাই তিনি কখনও হচ্ছে বলে মনে হয় এর নীচে তার পোশাক মধ্যে গাদা. সুতরাং এই ধরনের বর্ণনা মৌলিক তথ্য কাঠামো একটি স্ট্যাক বাস্তবায়িত হয় কিভাবে. মূলত, একটি মনে বস্তুর কোন স্ট্যাক হিসাবে গাদা আপনি উপরের দিকে কিছু করা, এবং যেখানে তারপর আপনি উপর থেকে তাদের পপ আউট. সুতরাং LIFO আমরা চাই আদ্যক্ষরা শেষ, প্রথম আউট use-- করতে. আর তাই শীর্ষে স্থায়ী বান্ডিলটা বের আসে যে প্রথম এক. আর তাই দুটি পদ আমরা সংযুক্ত করতে চান যে সঙ্গে ধাক্কা এবং পপ বলা হয়. যখন আপনি সম্মুখের কিছু ধাক্কা গাদা, এবং আপনি এটা ব্যাক আপ পপ. এবং তাই আমি এই একটি ধরনের অনুমান আপনাদের মধ্যে যারা জন্য বিমূর্ত ধারণা যারা একটি মত দেখতে চাই এই প্রকৃত বাস্তবায়ন প্রকৃত বিশ্বে. কিভাবে আপনি অনেক একটি প্রবন্ধ লেখা আছে হয়তো এক ঘন্টার মত, ছিল কারণে আগে এবং যদি আপনি দূর্ঘটনাক্রমে একটি বিশাল মোছা ঘটনাক্রমে মত এটা খণ্ড,? এবং তারপর কি নিয়ন্ত্রণ করতে আমরা এটা প্রতিহত করা ব্যবহার? কন্ট্রোল টু Z, হ্যা? কন্ট্রোল টু Z, তাই সময়ের পরিমাণ কন্ট্রোল টু Z আমার জীবন রক্ষা করেছে, যে , প্রত্যেক সময় আমার গাধা সংরক্ষিত হয়েছে একটি স্ট্যাক মাধ্যমে বাস্তবায়িত হচ্ছে. মূলত সব তথ্য যে, আপনার ওয়ার্ড ফাইলটি উপর এটা push করা এবং স্বেচ্ছায় popped হয়. তাই মূলত যখনই আপনি কিছু মুছে, আপনি আপ এটা ফিরে পপ. এবং তারপর আপনি ফিরে এটি প্রয়োজন, আপনি কন্ট্রোল-সি আছে কি, যা এটি ধাক্কা. তাই বাস্তব বিশ্বের ফাংশন কিভাবে সহজ ডাটা স্ট্রাকচার আপনার দৈনন্দিন জীবনের সাথে সাহায্য করতে পারেন. সুতরাং একটি struct উপায় যে আমরা আসলে একটি স্ট্যাক তৈরি. আমরা তারপর struct সংজ্ঞায়িত টাইপ করুন, এবং আমরা এটা নীচে গাদা কল. এবং স্ট্যাকের মধ্যে, আমরা দুটি প্যারামিটার আছে আমরা মূলত নিপূণভাবে করতে পারে তাই আমরা গৃহস্থালি তারকা স্ট্রিং ক্ষমতা আছে. এরকম হয় যে সব একটি অ্যারের তৈরি হয় আমরা যাহা চান সংরক্ষণ করতে পারেন যে যা আমরা তার ক্ষমতা নির্ধারণ করতে পারেন. ক্যাপাসিটি শুধু সর্বোচ্চ পরিমাণ আইটেম আমরা এই অ্যারের মধ্যে লাগাতে পারেন. int- আকার রাখে যে পাল্টা কতগুলি আইটেম ট্র্যাক বর্তমানে আছে স্ট্যাকের মধ্যে. তখন আমরা, এ, ট্র্যাক রাখতে পারেন উভয় প্রকৃত স্ট্যাকের কত বড়, এবং, বি, কিভাবে যে স্ট্যাকের অনেক আমরা চাই না, কারণ আমরা ভরা আমাদের ক্ষমতা কি উপর ওভারফ্লো করতে. উদাহরণস্বরূপ, এই সুদৃশ্য তাই প্রশ্ন আপনার ব্যঙ্গ ছিল. মূলত আমরা কীভাবে ধাক্কা না একটি স্ট্যাক উপরের দিকে. খুব সাধারণ. যদি আপনি এটি তাকান তাহলে, আমরা এই ভিতর দিয়ে হেটে যেতে হবে. [শ্রবণাতীত] size-- যদি যখনই আপনি মনে রাখবেন, কোন অ্যাক্সেস করতে চান একটি struct মধ্যে পরামিতি, আপনি struct.parameter নাম না. এই ক্ষেত্রে, গুলি আমাদের স্ট্যাকের নাম. আমরা আকার অ্যাক্সেস করতে চান এটা, তাই আমরা s.size না. আকার নয় তাই যতদিন ক্ষমতা বা যতদিন সমান এটা সামর্থ কম হিসাবে, হয় এখানে কাজ করবে. আপনি ভিতরে অ্যাক্সেস করতে চান আপনার স্ট্যাকের, s.strings তাই, এবং আপনি যে নতুন সংখ্যা রাখা চলুন আপনি সেখানে মধ্যে সন্নিবেশ করাতে চান. এর ঠিক আমরা করতে হবে চলুন শুরু করা যাক স্ট্যাকের মধ্যে কোন int n সন্নিবেশ, আমরা, s.strings করতে পারে বন্ধনী, যদি s.size এন সমান. আকার যেখানে কারণ আমরা বর্তমানে স্ট্যাকের মধ্যে হয় আমরা ধাক্কা চলুন তাহলে এটা আমরা শুধু অ্যাক্সেস আকার যেখানেই, স্ট্যাকের বর্তমান পূর্ণতা, এবং আমরা এটি সম্মুখের int এন ধাক্কা. এবং তারপর আমরা যে নিশ্চিত করতে চাই আমরা উদাহরণ, এন মাপ বৃদ্ধিশীল করছি আমরা করেছি তাই আমরা ট্র্যাক রাখতে পারেন স্ট্যাক একটি অতিরিক্ত জিনিস যোগ. এখন আমরা একটি বৃহত্তর আকার আছে. এই এখানে জানার সবাই, কিভাবে এটি কাজ করে যুক্তি? এটা কোন ধরনের দ্রুত ছিল. শ্রোতা: আপনি উপর যেতে পারি s.stringss.strings [s.size] আবার? Andi Peng: নিশ্চিত, তাই কি না আমাদের দিতে বর্তমানে s.size? শ্রোতা: এটা বর্তমান আকার. Andi Peng: ঠিক তাই, আমাদের আকারের যে বর্তমান সূচক, এবং তাই আমরা নতুন ইন্টিজার লাগাতে চান আমরা s.size মধ্যে সন্নিবেশ করাতে চান. এটা কি অর্থপূর্ণ? S.strings কারণ, যে সব হয় অ্যারের নাম. এটা সব অ্যাক্সেস করা হয় আমাদের struct মধ্যে অ্যারে, এবং তাই আমরা চাই তাহলে যে সূচক মধ্যে এন লিখুন আমরা শুধু এটি ব্যবহার করতে পারবেন ব্যবহার বন্ধনী s.size. কুল. ঠিক আছে, পপ, আমি এটি pseudocode আপনাকে বলছি, কিন্তু একই ধারণা জন্য. এটা কি অর্থপূর্ণ? আকার বড় হয় তাহলে তারপর শূন্য, তুলনায় আপনি আপনি কিছু নিতে চান যে জানেন আউট আকার নয় যদি কারণ এর চেয়ে বড় শূন্য, তাহলে আপনি স্ট্যাকের মধ্যে কিছুই আছে. তাই আপনি যদি শুধুমাত্র চালানো চাই এই কোড, এটা শুধুমাত্র সম্ভব পপ কিছু আছে, তাহলে পপ. আকার বড় হয় তাহলে তাই 0 বেশী, আমরা মাইনাস আকার. আমরা মাপ হ্রাস এবং তারপর আসতে কারণ এটি ভেতরে যাই হোক না কেন পপিং দ্বারা, আমরা চাই সঞ্চিত হয় যাই হোক না কেন এক্সেস স্ট্যাকের মধ্যে শীর্ষ সূচক. সবকিছু জানার? আমি তৈরি করে আপনাকে বলছি, এই লেখে আপনাকে বলছি এটি লিখতে সক্ষম হবে? ঠিক আছে, আপনাকে বলছি এটি নিয়ে খেলা করতে পারেন. কোন উদ্বেগ আপনি এটা পাবেন না যদি. আমরা কোড সময় আছে না এটি আজ আমরা করেছি কারণ এই কাঠামোর অনেক পেয়েছি মধ্য দিয়ে যেতে, কিন্তু মূলত যাও pseudocode হয়, খুব, খুব একই ধাক্কা. শুধু যুক্তিবিজ্ঞান বরাবর অনুসরণ. আপনি সব অ্যাক্সেস, তা নিশ্চিত করুন সঠিকভাবে আপনার struct বৈশিষ্ট্য. হ্যা? শ্রোতা: এইসব স্লাইড এবং এই গোটা ব্যাপারটাই আপ আজ পর হতে? Andi Peng: সর্বদা, হাঁ. আমি লাগাতে চেষ্টা করতে যাচ্ছি এই পোষাক পরে এক ঘন্টার মত. আমি ডেভিড ইমেইল করব, ডেভিড করার চেষ্টা করবে এই এক ঘণ্টার মত এটি পেশ করা. ঠিক আছে, তাই আমরা আশা করি এই অপরের মধ্যে সরানো সুদৃশ্য তথ্য কাঠামো কিউ বলা. আপনাকে বলছি এখানে দেখতে পারেন, একটি কিউ, আমাদের মধ্যে ব্রিটিশ জন্য, এটা সব একটি লাইন. তাই বিপরীত কি আপনি, একটি স্ট্যাক মনে হয় একটি সারিতে ঠিক কি কথাটি আপনি মনে হয় এটা. এটা, FIFO নিয়ম দ্বারা অনুষ্ঠিত হচ্ছে যা প্রথম, প্রথম আউট হয়. আপনি প্রথম হন লাইন এক, আপনি আছেন প্রথম এক যে লাইন থেকে বেরিয়ে আসে. সুতরাং আমরা এই কল করতে চান কি dequeueing এবং enqueueing হয়. আমরা কিছু যোগ করতে চান তাহলে আমাদের কিউ, আমরা সারিবদ্ধ. আমরা চান dequeue, বা নিতে কিছু দূরে, আমরা dequeue. আমরা ধরনের করছি যাতে একই অর্থে নির্দিষ্ট আকার উপাদান তৈরি করে আমরা নির্দিষ্ট দোকান পারেন জিনিষ, কিন্তু আমরা যা করতে পারেন আমরা স্থাপন করছি যেখানে পরিবর্তন তাদের ভেতরে পরামিতি কি ধরনের উপর ভিত্তি করে কার্যকারিতা আমরা চাই. Stacks তাই, আমরা গত চেয়েছিলেন এক, এন প্রথম এক আউট হতে. সারি আমরা সর্বপ্রথম চাই আউট সর্বপ্রথম হতে. Struct টাইপ তাই হিসাবে আপনি দেখতে পারেন, নির্ধারণ, এটি একটি সামান্য বিট আলাদা স্ট্যাক ছিল তা থেকে শুধুমাত্র আমরা রাখা আছে না, কারণ আকার বর্তমানে যেখানে ট্র্যাক, আমরা মাথা ট্র্যাক রাখতে চান পাশাপাশি যেখানে যেমন আমরা বর্তমানে আছে. তাই আমি এটা অনেক সহজ মনে হয় আমি এই পর্যন্ত আঁকা তাহলে. সুতরাং আসুন আমরা একটি কিউ পেয়েছেন কল্পনা করা যাক, তাই মাথার ডান এখানে বলা যাক. হেড লাইন, এর দিন শুধু, যে সেখানে বর্তমানে বলতে এবং আমরা সন্নিবেশ করতে চান কিউ 'র মধ্যে কিছু. আমি মূলত আকার কল যাচ্ছি লেজ হিসাবে একই জিনিস, হয় আপনার সারিতে যেখানেই শেষে. এর ঠিক মাপ সঠিক এখানে বলা যাক. সুতরাং কিভাবে এক feasibly আছে একটি কিউ 'র মধ্যে কিছু সন্নিবেশ? কী সূচক আমরা স্থাপন করতে চান না যেখানে আমরা মধ্যে সন্নিবেশ করতে চান. এই শুরুতে যদি আপনার কিউ এবং এটি শেষ হয় অথবা এটা মাপ, যেখানে আমরা কি পরবর্তী বস্তু যোগ করতে চান? শ্রোতা: [শ্রবণাতীত] Andi Peng: ঠিক, আপনি যোগ করতে চান উপর নির্ভর করে আপনার এটা লিখিত আছে. উভয় ক্ষেত্রেই এই ফাঁকা বা যে ফাঁকা. সুতরাং আপনি সম্ভবত এটি যোগ করতে চান কারণ এখানে মাপ হচ্ছে ÑÑ যদি এই সব পূর্ণ হয়, তাহলে আপনি চান ঠিক আছে, এখানে ডান এটি যোগ করতে? আর তাই, যে খুব, খুব, যখন সহজ, না বেশ সবসময় সঠিক মূল পার্থক্য হল, কারণ একটি কিউ এবং একটি স্ট্যাক মধ্যে যে কিউ পারেন হয় আসলে কাজে ব্যবহৃত হতে যাতে মাথা পরিবর্তন যেখানে আপনি চান তার উপর নির্ভর করে আপনার সূত্র শুরুতে শুরু করার. এবং এর ফলে, আপনার পুচ্ছ এছাড়াও পরিবর্তন করতে যাচ্ছে. আর তাই কটাক্ষপাত এই মুহূর্তে এই কোড. আপনাকে বলছি, এছাড়াও করতে বলা হয় হিসাবে সারিবদ্ধ, ব্যঙ্গ লেখে. হয়তো আমরা কেন মাধ্যমে কথা বলতে পারবেন উত্তর এটা ছিল কি ছিল. আমি বেশ, এক এই লাইন মাপসই পারে না কোডের কিন্তু মূলত এই টুকরা এক লাইন থাকা উচিত. 30 সেকেন্ডের মত কাটায়. দেখে নিন, এবং কেন দেখতে এই হল যে উপায়. অত্যন্ত, অনুরূপ struct, খুব, খুব আগের মতো একই কাঠামো সম্ভবত ছাড়া গাদা এক লাইন কোড. আর এক লাইন কোড যে কার্যকারিতা নির্ধারণ করে. আর এটা সত্যিই আলাদা করে একটি স্ট্যাক থেকে একটি কিউ. যে কেউ একটি ছুরিকাঘাত নিতে চান আপনি করেছি কেন ব্যাখ্যা এ এখানে এই জটিল জিনিস আছে? আমরা ফেরত দেখতে আমাদের বিস্ময়কর বন্ধু মডিউলস. আপনাকে বলছি শীঘ্রই আসতে হবে প্রোগ্রামিং এ চিনতে, প্রায় যে কোন সময় আপনি কিছু প্রয়োজন কিছু চারপাশে মোড়ানো, মডিউলস এটা করতে হতে যাচ্ছে. তাই বুদ্ধিমান যে, কেউ চায় কোড যে লাইন ব্যাখ্যা চেষ্টা? হ্যা, সব উত্তর আছে গ্রহণযোগ্য ও স্বাগতম. শ্রোতা: আপনি আমার সাথে কথা বলছ? Andi Peng: হ্যা. শ্রোতা: ওহ, কোন দুঃখিত. Andi Peng: ঠিক আছে, তাই আসুন এই কোড দিয়ে হেটে যেতে. তাই যখন আপনি করার চেষ্টা করছেন একটি কিউ সম্মুখের কিছু যোগ, মাথা যে এরকম সুদৃশ্য ক্ষেত্রে এখানে ডান হতে, এটা আমাদের জন্য খুব সহজ শুধু শেষ যেতে কিছু অধিকার, সন্নিবেশ? কিন্তু একটি কিউ পুরো পয়েন্ট যে আসলে পরিবর্তনশীল মাথা যেখানে তার উপর নির্ভর করে পরিবর্তন আমরা আমাদের প্রশ্ন শুরু হতে চান, এবং এই ধরনের, লেজ হিসাবে এছাড়াও পরিবর্তন করতে যাচ্ছে. আর তাই এই ছিল না যে কল্পনা কিউ, বরং এই কিউ ছিল. মাথার ডান এখানে বলা যাক. এর আমাদের কিউ ভালো লাগছিল বলে চলুন শুরু করা যাক. আমরা যেখানে নামান চেয়েছিলেন লাইনের শুরুতে, হয় আসুন আমরা মাথা স্থানান্তরিত বলা যাক এই ভাবে এবং এখানে মাপ. এখন আমরা কিছু যোগ করতে চান এই সারিতে, কিন্তু আপনাকে বলছি দেখতে পারেন, এটা ঠিক হিসাবে এত সহজ না আকার পরে যাই হোক না কেন যোগ তারপর আমরা ফুরিয়ে কারণ আমাদের প্রকৃত অ্যারের সীমার. আমরা সত্যিই যোগ করতে চান যেখানে এখানে. সারির যে সৌন্দর্য এটা এক রকম, আমাদের করতে হয় লাইন ভালো যায় মত, দেখে মনে হচ্ছে কিন্তু একটি ডাটা স্ট্রাকচার মধ্যে সংরক্ষণ করা হলে, তারা একটি চক্র মত হিসাবে এটি দিতে. এটা কোন ধরনের কাছাকাছি গোপন সামনে একই ভাবে করতে একটি লাইন মোড়ানো করতে পারে কাছাকাছি যেখানে আপনি উপর নির্ভর করে হতে লাইনের শুরুতে চান. আর তাই আমরা একটি নিতে হলে এখানে নিচে দেখুন, এর দিন আমরা একটি তৈরী করতে চান বলে ফাংশন সারিবদ্ধ বলা. আমরা যে প্রশ্ন মধ্যে কোন int n যোগ করতে চেয়েছিলেন. Q.size আমরা আমাদের তথ্য যে ডাকবো q-- যদি আমাদের queue.size না হলে কাঠামো ক্ষমতা বা যদি সমান এটি সামর্থ কম না q.strings আমাদের Q মধ্যে অ্যারে. আমরা সেট চলুন যে q.heads সমান, যা ডান এখানে, প্লাস q.size ক্ষমতা দ্বারা মডিউলস যা এখানে প্রায় আমাদের ফিরে মোড়ানো. এই যেমন, সূচক তাই মাথার ডান, 1 হয়? আকারের সূচক 0, 1, 2, 3, 4 হয়. সুতরাং আমরা 1 প্লাস 4 মডিউলস করতে পারেন 5 যা আমাদের ক্ষমতা দ্বারা. কি যে সাহায্য করে? সূচক কি যে এই থেকে বেরিয়ে আসে? শ্রোতা: 0. Andi Peng: 0, যা এখানে ডান হতে হবে, এবং তাই আমরা সক্ষম হতে চান এখানে ডান মধ্যে সন্নিবেশ করতে. আর তাই এই সমীকরণ এখানে ধরনের ঠিক কোন সংখ্যার সঙ্গে কাজ যেখানে তার উপর নির্ভর করে আপনার মাথা এবং আপনার আকার. আপনি কি যদি যারা জানেন জিনিষ আপনি জানেন, হয় ঠিক কিভাবে আপনি সন্নিবেশ করতে চান যেখানে যাই হোক না কেন আপনার কিউ পরে. যে সবাই জানার? আমি একটি মস্তিষ্কের ধরনের জানি টিজার, বিশেষত এই আপনার ব্যঙ্গ পরমুহুর্তের এসেছিলেন. কিন্তু সবাই আশা এখন বুঝতে পারে কেন এই সমাধান বা এই ফাংশন এটা যে উপায়. যে কেউ একটি বিট যে অস্পষ্ট? ঠিক আছে. আর তাই এখন, আপনি যদি , এই dequeue করতে চেয়েছিলেন আমাদের মাথার নাড়াচাড়া হবে কোথায় আমরা dequeue ছিল, কারণ আমরা প্রশ্ন শেষে বন্ধ করা হয় না. আমরা ঠিক আছে, মাথা বন্ধ করা চাই? তাই এর ফলে, মাথা পরিবর্তন করতে যাচ্ছে, যখন আপনি সারিবদ্ধ কেন এবং যে, হয় আপনি ট্র্যাক রাখতে পেয়েছেন যেখানে আপনার মাথা এবং আপনার সাইজ সন্নিবেশ করতে সক্ষম হতে হয় সঠিক অবস্থান মধ্যে. আর তাই আপনি dequeue যখন, আমি এটি pseudocode. যদি আপনি চান নির্দ্বিধায় এই আউট কোডিং প্রচেষ্টা. আপনি সঠিক, মাথা সরাতে চান? আমি dequeue করতে চেয়েছিলেন, আমি মাথার উপর সরানো হবে. এই মাথা হবে. এবং আমাদের বর্তমান আকার would বিয়োগ, কারণ আমরা আর অ্যারের মধ্যে চারটি উপাদান আছে. আমরা মাত্র তিন আছে, এবং তারপর আমরা চাই ভিতরে সঞ্চিত ছিল যাই হোক না কেন ফিরে যাও মাথার আমরা এই নিতে চান, কারণ স্ট্যাকের তাই অনুরূপ মান আউট. শুধু আপনি গ্রহণ করছেন একটি ভিন্ন জায়গা থেকে, এবং আপনি আপনার ওয়ালেট-এ সঞ্চয় করতে পয়েন্টার আছে ফলে বিভিন্ন জায়গা. কথাটি, সবাই অনুসরণ? গ্রেট. ঠিক আছে, তাই আমরা একটু কথা বলতে যাচ্ছেন লিঙ্ক তালিকা সম্পর্কে গভীরতার মধ্যে আরো তারা খুব, খুব মূল্যবান হবেন, কারণ এই সপ্তাহে অবশ্যই আপনার জন্য psets. লিঙ্ক তালিকা, হিসাবে আপনাকে বলছি তারা সব, মনে করতে পারেন নির্দিষ্ট নোড যে নোড একটি মান এবং একটি পয়েন্টার উভয় মান যে একসাথে সংযুক্ত করা হয় যারা পয়েন্টার দ্বারা. কিভাবে এবং সুতরাং struct আমরা এখানে একটি নোড আমরা সৃষ্টি যা, কোন int n আছে যাই হোক না কেন একটি দোকান বা স্ট্রিং এন এ মূল্য অথবা আপনি করতে চান যাই হোক না কেন গৃহস্থালি তারকা এন, এটি কল. পয়েন্টার যা struct নোড তারকা, আপনি প্রতিটি নোডের মধ্যে আছে চান যে, আপনি যে আছে চলুন পরের দিকে পয়েন্টার বিন্দু. আপনি মাথা থাকবে যে একটি লিঙ্ক তালিকা বাকি দিকে নির্দেশ করে যাচ্ছে তাই এবং তাই ঘোষণা মান আপনি অবশেষে শেষ পর্যন্ত পৌঁছাতে. এবং এই শেষ নোড শুধু হয় একটি ইশারা আছে না যাচ্ছে. তা নির্দেশ করার জন্য যাচ্ছে নাল, এবং যে যখন যদি আপনি আঘাত করেছি জানি আপনার লিঙ্ক তালিকার শেষে যখন আপনার সর্বশেষ পয়েন্টার কিছু নির্দেশ না. তাই আমরা আরো একটি বিট যেতে চলুন সংক্রান্ত গভীরতা কিভাবে এক সম্ভবত would একটি লিঙ্ক তালিকা অনুসন্ধান. কিছু কি মনে রাখুন লিঙ্ক তালিকা অপূর্ণতা অনুসন্ধান সংক্রান্ত একটি অ্যারের আয়াত. একটি অ্যারের আপনি পারেন বাইনারি অনুসন্ধান, কিন্তু কেন আপনি একটি লিঙ্ক তালিকা মধ্যে তা করতে পারবেন না? শ্রোতা: তারা সব সংযুক্ত করছি কারণ, কিন্তু আপনি বেশ যেখানে জানি না [শ্রবণাতীত]. Andi Peng: হ্যা, ঠিক তাই মনে একটি অ্যারের যে প্রতিভা আমরা ছিল যে ছিল রেণ্ডম এক্সেস মেমোরি, যেখানে আমি সূচী থেকে মূল্য চেয়েছিলেন ছয়, আমি শুধু সূচক ছয় বলতে পারে আমার যে মূল্য দিতে. অ্যারে সাজানো হয় এবং যে কারণ একটি মেমরি সংলগ্ন স্থান এক জায়গায়, যেহেতু লিঙ্ক তালিকা ধরনের হয় এলোমেলোভাবে, প্রায় সব interspersed এবং একমাত্র উপায় আপনি খুঁজে পেতে পারেন আপনি বলে যে একটি পয়েন্টার মাধ্যমে হয় যে পরের নোড যেখানে এর ঠিকানা. আর তাই এর ফলে, একমাত্র উপায় একটি লিঙ্ক তালিকা মাধ্যমে অনুসন্ধান রৈখিক অনুসন্ধান. আমি ঠিক জানি না, কারণ লিঙ্ক তালিকায় 12th মান, আমি সম্পূর্ণতা তর্ক আছে যে লিঙ্ক তালিকা এক প্রথম নোড মাথা থেকে একের পর, দ্বিতীয় নোডের, তৃতীয় নোডের, পরিশেষে আমি পেতে নিচে পর্যন্ত সব পথ আমি চাই যে নোড যেখানে. আর তাই এই অর্থে, অনুসন্ধান একটি লিঙ্ক তালিকা সবসময় এন হয়. এটা সবসময় এন. এটা রৈখিক সময় সর্বদাই. তাই কোড যা আমরা এই বাস্তবায়ন, এবং এই আপনি যেহেতু আপনার জন্য বলছি একটু নতুন বলছি সত্যিই সম্পর্কে বা কখনও বলত না কিভাবে দেখা পয়েন্টার পয়েন্টার মাধ্যমে অনুসন্ধান, তাই আমরা ভিতর দিয়ে হেটে যেতে হবে এই খুব, খুব ধীরে ধীরে. সুতরাং একটি bool অনুসন্ধান, ঠিক আছে, আসুন আমরা চাই কল্পনা করা যাক নামক একটি ফাংশন তৈরি করতে সত্য ফেরৎ অনুসন্ধান আপনি লিঙ্ক ভিতরে একটি মান পাওয়া যদি তালিকায়, এবং এটি অন্যথায় মিথ্যা ফেরৎ. নোড তারকা তালিকা বর্তমানে শুধু পয়েন্টার আপনার লিঙ্ক তালিকায় প্রথম আইটেমে. কোন int n আপনি আছেন যে মান যে তালিকায় অনুসন্ধানের জন্য. সুতরাং নোড তারকা পয়েন্টার তালিকায় সমান. যে আমরা সেটিং করছি মানে এবং একটি পয়েন্টার তৈরি তালিকার ভিতরে যে প্রথম নোডের. আমার সঙ্গে সবাই? আমরা যেতে হলে তাই ফিরে এখানে, আমি থাকতে হবে যে স্থানটিকে একটি পয়েন্টার সক্রিয়া মাথা যাই হোক না কেন যে তালিকা রয়েছে. এবং তারপর আপনি এখানে নামা একবার পয়েন্টার সমান নাল না, তাই যে আমরা যা লুপ ঘোরা পরবর্তীকালে হতে যাচ্ছে কি কারণ আমাদের তালিকার বাকি নাল পয়েন্টার সমান যখন ঘটবে? আমরা থাকতে পারে জানেন শ্রোতা: [শ্রবণাতীত] Andi Peng: ঠিক আছে, তাই আমরা জানি যে আমরা সঠিক তালিকার শেষে পৌঁছে গেছেন? আপনি ফিরে যান এখানে, প্রতিটি নোডের অন্য নোড প্রতি নির্দেশ করা উচিত এবং তাই এবং তাই ঘোষণা আপনি অবশেষে আঘাত না হওয়া পর্যন্ত আপনার লিঙ্ক তালিকা লেঙ্গুড়, যা একটি পয়েন্টার আছে যে শুধু কোন ছাড়া অন্য কোথাও নির্দেশ না. আর তাই আপনি মূলত যে জানেন আপনার তালিকায় এখনও আছে আপ পয়েন্টার সমান না হওয়া পর্যন্ত নাল এটা সমান নাল একবার কারণ, আপনি কোন কাপড় আছে জানি. সুতরাং যে আমরা করছি যা লুপ প্রকৃত অনুসন্ধান আছে যাচ্ছে. আর পয়েন্টার আপনি দেখুন না সেখানে তীর ফাংশন তজ্জাতীয়? তাই পয়েন্টার পয়েন্ট যদি n যাও, তাহলে এন সমান সমান এন এ পয়েন্টার, তাই এর মানে হল যে যদি যে আপনি আছেন যে পয়েন্টার প্রতিটি প্রান্তে জন্য অনুসন্ধান নোড মান আসলে সমান আপনি তারপর, খুঁজছেন আপনি সত্য ফিরে চাই. তাই মূলত, আপনি একটি নোড করেন তাহলে যে , আপনি যা খুঁজছেন যে মূল্য আছে আপনি যে আপনি চলেছি জানি সফলভাবে সার্চ করতে পারবেন. অন্যথা, আপনি সেট করতে চান পরবর্তী নোডের আপনার পয়েন্টার. যে এখানে যে লাইন করছে কি. পয়েন্টার পরের পয়েন্টার সমান. যে কাজ কিভাবে সবাই দেখতে? এবং মূলত যে আপনি চলুন শুধু তালিকার সম্পূর্ণতা তর্ক আপনার পয়েন্টার প্রতিটি সময় পর্যন্ত রিসেট আপনি শেষ পর্যন্ত তালিকার শেষে আঘাত. এবং যদি আপনি কোন আছে জানি আরো নোড মাধ্যমে আপনাকে এবং তারপর মিথ্যা ফিরে আসতে পারেন আপনি জানেন, কারণ, যে ভাল, ওহ, আমি অনুসন্ধান করতে সক্ষম ছিলাম তালিকায় সম্পূর্ণতা মাধ্যমে. এই উদাহরণে, তাহলে আমি চেয়েছি যদি 10 এর মান জন্য, দেখুন, এবং আমি মাথা থেকে খেলা আরম্ভ, এবং আমি নিচে সব পথ অনুসন্ধান এবং আমি ঘটনাক্রমে, এই পেয়েছিলাম যা নাল স্থানটিকে একটি পয়েন্টার, আমি না হয়, বিষ্ঠা, আমি 10 অনুমান যে জানেন এই তালিকায় আমি এটা খুঁজে পাচ্ছেন না করতে পারার কারণে. আর আমি তালিকার শেষে নই. আর সেক্ষেত্রেও আপনি জানেন আমি মিথ্যা ফিরে যাচ্ছি. যে একটি সামান্য বিট জন্য নিষিক্ত করা যাক. এই সুন্দর হতে হবে আপনার pset জন্য গুরুত্বপূর্ণ. এটা যুক্তি সম্ভবত, খুবই সহজ সিনট্যাক্স শুধু তা বাস্তবায়নের. আপনাকে বলছি করতে চাই আপনি বুঝতে নিশ্চিত. কুল. ঠিক আছে, তাই আমরা কিভাবে হতে হবে ঠিক আছে, নোড ঢোকাতে, একটি তালিকা মধ্যে কারণ মনে কি বেনিফিট কি হয় একটি লিঙ্ক তালিকা বনাম হচ্ছে স্টোরেজ পরিপ্রেক্ষিতে একটি অ্যারের? শ্রোতা: এটি পরিবর্তনশীল এর, তাই এটা অনেক সহজ চাচ্ছি Andi Peng: ঠিক, তাই এটা, গতিশীল, যা এটি প্রসারিত এবং সঙ্কুচিত করতে পারেন এর মানে হল যে ব্যবহারকারীর চাহিদার উপর নির্ভর করে. আর তাই, এই অর্থে, আমরা প্রয়োজন হবে না অপ্রয়োজনীয় মেমরি অপব্যয় আমি কারণ আমি যা চাই, কত মান জানা না থাকলে দোকান থেকে, এটা আমার জন্য অর্থে দেখা যায় না একটি অ্যারের কারণ তৈরি করতে আমি 10 মান সংরক্ষণ করতে চান তাহলে এবং আমি 1000 এর একটি অ্যারের, যে তৈরি নষ্ট মেমরি অনেক, বরাদ্দ. আমরা একটি লিঙ্ক ব্যবহার করতে চান কেন তালিকায় পরিবর্তনশীল পাবে পরিবর্তন বা আমাদের মাপ সঙ্কুচিত. আর তাই যে সন্নিবেশ তোলে আরো একটু জটিল. আমরা এলোমেলোভাবে উপাদান ব্যবহার করতে সক্ষম নয় যেহেতু আমরা একটি অ্যারের যে ভাবে. আমি একটি উপাদান প্রবেশ করাতে চান সপ্তম সূচক মধ্যে, আমি শুধু তা সন্নিবেশ করতে পারেন সপ্তম সূচক মধ্যে. একটি লিঙ্ক তালিকা উপর, এটা হয় না বেশ হিসাবে সহজে কাজ, এবং তাই আমরা প্রবেশ করাতে চেয়েছিলেন লিঙ্ক তালিকা এখানে এক, দৃশ্যত, এটা দেখতে আসতে খুবই সহজ. আমরা শুধু, ঠিক আছে এটা সন্নিবেশ করতে চান ডানদিকের তালিকা শুরুতে, সঠিক মাথার পরে. কিন্তু আমরা আছে যা ভাবে ওয়ালেট-এ সঞ্চয় করতে পয়েন্টার একটি বিট সংবর্ত বা, যুক্তি, এটা জ্ঞান করে তোলে কিন্তু যদি আপনি এটা আছে নিশ্চিত করতে চাই সম্পূর্ণরূপে নিচে কারণ শেষ জিনিস আপনি চান একটি পয়েন্টার ওয়ালেট-এ সঞ্চয় করতে হয় আমরা এখানে কি করছেন যে ভাবে. আপনি যদি ডি-রেফারেন্স 1 মাথা থেকে পয়েন্টার, তারপর হঠাৎ দ্য সব আপনার লিঙ্ক তালিকা বাকি আপনি না আসলে আছে, কারণ হারিয়ে গেছে একটি অস্থায়ী কিছু সৃষ্টি. যে 2 জোরাল হচ্ছে. আপনি তারপর পয়েন্টার, ওয়ালেট-এ সঞ্চয় করে আপনার তালিকার বাকি সম্পূর্ণভাবে হারিয়ে গেছে. সুতরাং আপনি কি হতে চান এখানে খুব, খুব সতর্কতা অবলম্বন প্রথম দায়িত্ব অর্পণ করা আপনি যাই হোক না কেন থেকে পয়েন্টার যেখানেই মধ্যে সন্নিবেশ করতে চান আপনি চান, এবং তারপর আপনি আপনার তালিকার বাকি ডি-রেফারেন্স করতে পারেন. সুতরাং এই যেখানেই জন্য প্রযোজ্য আপনি মধ্যে ঢোকানোর চেষ্টা করছেন. আপনি এ সন্নিবেশ করতে চান তাহলে মাথা, আপনি এখানে উত্তর দিতে চান তাহলে, আপনি এ সন্নিবেশ করতে চান তাহলে শেষ, ভাল, শেষ আমি অনুমান আপনি শুধু would কোন পয়েন্টার আছে, কিন্তু আপনি আপনি না কি নিশ্চিত যে করতে চাই আপনার তালিকার বাকি হারান. আপনি সবসময় নিশ্চিত করতে চাই আপনার নতুন নোডের নির্দেশ করা হয় যাই হোক না কেন প্রতি আপনি মধ্যে সন্নিবেশ করতে চান, এবং তারপর আপনি chaining যোগ করতে পারেন. সবাই স্পষ্ট? এই হতে যাচ্ছে বাস্তব সমস্যা নিয়ে কথা বলতে. সবচেয়ে প্রধান বিষয় হল আপনি আপনার pset আছে চলুন আপনি তৈরি করার চেষ্টা করতে যাচ্ছেন একটি লিঙ্ক তালিকা এবং সন্নিবেশ জিনিষ কিন্তু তারপরে শুধু হারান আপনার লিঙ্ক তালিকা বাকি. আর আপনার মত হতে যাচ্ছেন, আমি এই ঘটছে জানি না কেন? আর এটা দিয়ে যেতে একটা ব্যথা এবং আপনার সব পয়েন্টার অনুসন্ধান. আর আমি এই pset উপর আপনি গ্যারান্টি, এই নোডের লেখা এবং অঙ্কন খুব, খুবই সহায়ক হবে. তাই আপনি যদি সম্পূর্ণ ট্র্যাক রাখতে পারেন সমস্ত পয়েন্টার যেখানে, কি, ভুল করে যাচ্ছে সমস্ত নোড যেখানে, আপনি অ্যাক্সেস করতে যা করতে হবে তা বা সন্নিবেশ বা মুছে ফেলতে অথবা তাদের কোনো. যে সাথে সবাই ভাল? কুল. আমরা কোড তাকান করতে চায়, তাহলে? ওহ, আমি জানি না, যদি আমরা তাই, চাই ওকে দেখতে পারেন উপরের এটা সব একটি ফাংশন আমরা চাই যেখানে নামে সন্নিবেশ লিঙ্ক তালিকায় কোন int n সন্নিবেশ. আমরা এই ভিতর দিয়ে হেটে যাচ্ছেন. এটা কোড অনেক, নতুন সিনট্যাক্স অনেক. আমরা ঠিক থাকব. উপরে, যখনই এ তাই আমরা কিছু তৈরি করতে চান আমরা কি করতে হবে তা হবে না, বিশেষ করে আপনি যদি এটি স্ট্যাক সংরক্ষণ করা না চান কিন্তু গাদা? আমরা ঠিক আছে, ছিল malloc যেতে? সুতরাং আমরা একটি পয়েন্টার তৈরি করতে যাচ্ছেন. নোড, পয়েন্টার, নতুন সমান একটি নোড মাপ malloc আমরা চাই, কারণ যে নোড তৈরি করতে হবে. আমরা পরিমাণ চান একটি নোডের লাগে যে মেমরি জন্য বরাদ্দ করা নতুন নোড নির্মাণের. এবং তারপর আমরা পরীক্ষা চলুন নতুন সমান সমান নাল কিনা দেখতে. আমরা কি বলেছিলাম? যদি malloc যাই হোক না কেন আপনি, আপনি সবসময় কি করতে হবে? আপনি সবসময় দেখতে পরীক্ষা হবে কিনা বা না যে শূন্য হয়. উদাহরণস্বরূপ, যদি আপনার অপারেটিং সিস্টেম, ছিল সম্পূর্ণরূপে পূর্ণ আপনি আর কোনো মেমরি ছিল সব এবং আপনি malloc চেষ্টা, এটা আপনার জন্য নাল ফিরে আসবে. এবং যাতে আপনি এটি ব্যবহার করতে চেষ্টা করুন, যদি এটা নাল প্রতি নির্দেশ করা হয় যখন, আপনি পারবেন যাচ্ছেন না যে তথ্য অ্যাক্সেস করতে. তাই যেমন, আমরা করতে চেয়েছিলেন যখনই আপনি mallocing করছি যে নিশ্চিত, আপনি সবসময় কিনা দেখতে চেক করছি আপনাকে দেওয়া যে মেমরি নাল. এটা না করে, তাহলে আমরা অগ্রসর না হতে পারেন আমাদের কোড বাকি সাথে. সুতরাং আমরা চলুন নতুন নোড আরম্ভ. আমরা নতুন এন এন সমান কাজ করতে যাচ্ছেন. এবং তারপর আমরা করতে যাচ্ছেন নতুন নতুন পয়েন্টার সেট নাল এখনই যদি আমরা না, কারণ এটি নির্দেশ করার জন্য কিছু চান. আমরা কোন ধারণা যেখানে আছে এটা, আপনি করা যাচ্ছে এবং তারপর আমরা করতে চান তাহলে মাথা এ এটি সন্নিবেশ, তারপর আমরা ওয়ালেট-এ সঞ্চয় করতে পারেন মাথার পয়েন্টার. সবাই যুক্তিবিজ্ঞান অনুসরণ করে যে যেখানে যে ঘটছে? কাজেই আমরা সবাই একটি নতুন তৈরি করা হয় নোড, নাল পয়েন্টার সেট, এবং তারপর পুনরায় এটা মাথা থেকে আমরা যদি আমরা মাথা এ সন্নিবেশ করতে চান জানেন. এবং তারপর মাথা থেকে যাচ্ছে যে নতুন নোডের দিকে নির্দেশ করুন. যে ঠিক সবাই? সুতরাং এটি একটি দুটি পদক্ষেপে প্রক্রিয়া. আপনিই প্রথম দায়িত্ব অর্পণ করা পেয়েছেন যাই হোক না কেন আপনি তৈরি করছেন. যে পয়েন্টার সেট আপনি রেফারেন্স, এবং তারপর পারেন ডি-রেফারেন্স ধরনের প্রথম পয়েন্টার এবং নতুন নোডের দিকে নির্দেশ. আপনি এটি সন্নিবেশ করতে চান, যেখানে যে যুক্তি সত্য ধরে যাচ্ছে. এটা নির্ধারণের মত ধরনের অস্থায়ী ভেরিয়েবল. মনে রাখবেন, আপনি পেয়েছেন নিশ্চিত করুন যে আপনি যে আপনি সোয়াপিং করছি ট্র্যাক হারিয়ে ফেলেন না. আপনি যদি একটি আছে নিশ্চিত করতে চাই ধরনের রাখে যে অস্থায়ী পরিবর্তনশীল যেখানে যে জিনিস সম্পর্কে অবগত যাতে সংরক্ষিত হয় আপনি অবশ্যই যে কোন মূল্য হারাবেন না এটা নিয়ে তালগোল পাকানো মত. ঠিক আছে, তাই কোড এখানে হবে. আপনাকে বলছি অধ্যায় পরে দেখব. এটা হতে হবে. তাই আমি না অনুমান আমরা চাইলে এ পৃথক মাঝখানে বা শেষ মধ্যে সন্নিবেশ করতে? কেউ কি এর ধারণা আছে লজিক্যাল রেফারেন্স হিসাবে pseudocode আমরা চেয়েছিলাম যদি আমরা নিতে হবে যে মাঝখানে এটি সন্নিবেশ করতে? সুতরাং আমরা যদি এ এটি সন্নিবেশ করতে চেয়েছিলেন মাথা, আমরা কি সব নতুন নোড তৈরি হয়. আমরা যে পয়েন্টার সেট যাই হোক না কেন মাথা নতুন নোডের এবং তারপর আমরা মাথা সেট নতুন নোডের জন্য, ডান? আমরা মাঝখানে এটি সন্নিবেশ করতে চেয়েছিলেন তালিকার, আমরা কি করতে হবে? শ্রোতা: এটা এখনও would একই প্রক্রিয়ায় হতে এর পয়েন্টার বরাদ্দ মত ও তারপর, যে পয়েন্টার বরাদ্দ কিন্তু আমরা সেখানে সনাক্ত করতে হবে. Andi Peng: ঠিক আছে, তাই আপনি ছাড়া একই প্রক্রিয়া ঠিক যেখানে সনাক্ত আছে আপনি যে নতুন পয়েন্টার মধ্যে যেতে চান, আমি মধ্যে সন্নিবেশ করতে চান তাহলে, তাই ওকে তালিকার লিঙ্ক মাঝখানে, এর যে আমাদের লিঙ্ক তালিকা চলুন শুরু করা যাক. আমরা এখানে ডান সন্নিবেশ করতে চান তাহলে, আমরা একটি নতুন নোড তৈরি করতে যাচ্ছেন. আমরা malloc চলুন. আমরা একটি নতুন নোড তৈরি করতে যাচ্ছেন. আমরা দায়িত্ব অর্পণ করতে যাচ্ছেন এখানে এই নোড পয়েন্টার. কিন্তু সমস্যা হল যে পৃথক মাথা যেখানে থেকে আমরা ঠিক জানতাম যে হয় যেখানে প্রধান. এটা ঠিক আছে, প্রথমে ডান ছিল? কিন্তু এখানে আমরা ট্র্যাক রাখা পেয়েছেন যেখানে আমরা তা করছি ঢোকাতে. আমরা ঢোকাতে হয় আমাদের এখানে নোড, আমরা পেয়েছেন নিশ্চিত করুন যে আপনি যে এই নোডের আগের পয়েন্টার reassigns যে এক. আমি তখন আপনি ধরনের আছে দুটি বিষয় সম্পর্কে অবগত রাখা. আপনি যেখানে এই ট্র্যাক রাখতে হলে নোড বর্তমানে মধ্যে ঢোকাতে হয়. এছাড়াও আপনি যেখানে ট্র্যাক রাখা আছে আপনি এ খুঁজছেন যে আগের নোড সেখানে ছিল. যে সাথে সবাই ভাল? ঠিক আছে. কিভাবে শেষ মধ্যে ঢোকাতে সম্পর্কে? আমি চেয়েছি যদি আমি এখানে তা যুক্ত করতে চেয়েছিলেন একটি তালিকার শেষে একটি নতুন নোড যোগ করার জন্য, আমি যে কাজ সম্পর্কে কিভাবে যেতে পারে? শ্রোতা: তাই বর্তমানে, গত এক নাল জোরাল. Andi Peng: হ্যা. ঠিক আছে, তাই এই এক বর্তমানে জানেন জোরাল হয়, এবং তাই আমি এই অর্থে, এটা অনুমান একটি তালিকার শেষে যোগ করা খুব সহজ. আপনাকে যা করতে হবে তা হচ্ছে এটি সেট করা হয় শূন্য এবং তারপর গর্জন সমান. রাইট আছে, খুব সহজ. খুব সহজ. অনুরূপ আপনি মাথা, কিন্তু কথাটি পদক্ষেপ যে নিশ্চিত করতে চাই আপনি, এই কোন কাজ প্রতি নেওয়া আপনি বরাবর অনুসরণ করছেন. এটি মাঝখানে, খুব সহজ আপনার কোড, উপর পর্যন্ত ধরা ওহ, আমি অনেক পয়েন্টার পেয়েছেন. আমি কোথায় জানি না কিছু ইশারা করা হয়. আমি এমনকি আমি আছি যা নোড জানি না. কি হচ্ছে? একটা গভীর নিঃশ্বাস নিতে, শান্ত, শিথিল. আপনার লিঙ্ক তালিকা খুঁজে আঁকুন. আপনি যদি বলি, আমি ঠিক জানি যেখানে আমি শুধুমাত্র এই সন্নিবেশ করতে হবে এবং আমি আমার ওয়ালেট-এ সঞ্চয় করতে কিভাবে ঠিক জানি পয়েন্টার, অনেক, অনেক সহজ ছবি out-- অনেক, অনেক সহজ না আপনার কোড বাগ মধ্যে হারিয়ে যায়. যে ঠিক সবাই? ঠিক আছে. তাই আমি মনে করি আমরা না আছে একটি ধারণা অনুমান সত্যিই, এখন আগে স্বপ্ন এবং আমি সম্ভবত আপনি অনুমান অনেক yet-- সম্মুখীন করা হবে না এটা একটি উন্নত concept-- ধরনের আমরা আসলে একটি তথ্য আছে কাঠামো একটি দোকর লিঙ্ক তালিকা বলা. আপনাকে বলছি দেখতে পারেন হিসাবে সুতরাং, আমরা করছেন সব তৈরি হয় একটি প্রকৃত মান, একটি অতিরিক্ত আমাদের নোড প্রতিটি পয়েন্টার যে আগের নোড স্থানটিকে. তাই না শুধুমাত্র আমরা আমাদের আছে নোড পরের এক নির্দেশ. তারা আগের এক নির্দেশ. আমি এই মুহূর্তে এই দুটি উপেক্ষা করা যাচ্ছে না. আমি তখন আপনি একটা চেইন আছে যে উভয় পদ্ধতিতে অগ্রসর না হতে পারেন, এবং তারপর এটি একটি বিট সহজ কথাটি বরাবর অনুসরণ. এখানে চাই, পরিবর্তে ওহ, সম্পর্কে অবগত থাকার, আমি এই নোড যে জানা আছে আমি ওয়ালেট-এ সঞ্চয় করতে হবে যে এক, আমি শুধু এখানে যেতে পারেন শুধু আগের টান. তারপর আমি ঠিক জানি যেখানে যে হয়, এবং তারপর আপনি তর্ক করতে হবে না লিঙ্ক তালিকা সম্পূর্ণতা. এটা একটু সহজ. কিন্তু যেমন, আপনি দ্বিগুণ আছে পয়েন্টার পরিমাণ, যে মেমরি ডবল পরিমাণ. এটা ট্র্যাক রাখতে পয়েন্টার অনেক. এটি একটি বিট আরো জটিল, কিন্তু এটা ব্যবহারকারী বন্ধুত্বপূর্ণ নির্ভর করে একটি বিট আরো আপনি সাধন করার চেষ্টা করছেন তার উপর. সুতরাং এই ধরনের তথ্য কাঠামো সম্পূর্ণই, বিদ্যমান এবং এর জন্য কাঠামো খুব, খুব হয় আপনি ভোগ করছি সব ছাড়া সহজ, পরিবর্তে পরের শুধু একটি পয়েন্টার, এছাড়াও আপনি আগের একটি ইশারা আছে. যে সমস্ত পার্থক্য ছিল না. যে সাথে সবাই ভাল? কুল. ঠিক আছে, তাই এখন আমি আছি সত্যিই সম্ভবত কাটাতে 15 থেকে 20 মিনিট বা বাল্ক মত বিভাগে সময় বাকি হ্যাশ টেবিল সম্পর্কে কথা বলা. কিভাবে আপনাকে বলছি অনেক যদি pset5 বৈশিষ্ট পড়া আছে? ঠিক আছে, ভাল. যে সাধারনত 50% এর চেয়ে বেশী. ঠিক আছে. আপনাকে বলছি দেখতে হবে তাই, আপনি যদি pset5 চ্যালেঞ্জ করছি একটি অভিধান বাস্তবায়ন হবে আপনি 140,000 শব্দের উপর লোড যেখানে আমরা এবং বানান চেক আপনি দিতে যে লেখার সব বিরুদ্ধে এটি. আমরা আপনাকে র্যান্ডম দেব সাহিত্যের টুকরা. আমরা আপনাকে একের দেব. আমরা আপনাকে ইলিয়াড দেব. আমরা আপনাকে অস্টিন ক্ষমতা দেব. এবং আপনার চ্যালেঞ্জ বা বানান পরীক্ষক ইত্যাদি করা হবে সমস্ত প্রতিটি শব্দ যারা অভিধান হাজার মূলত আমাদের বানান পরীক্ষক. তাই কয়েকটি অংশে আছে এই pset তৈরি, প্রথম আপনি হতে চান আসলে লোড করতে পারবেন মধ্যে সব শব্দ আপনার অভিধান, এবং তারপর আপনি পাবে চান তাদের সব পরীক্ষা বানান. তাই যেমন, আপনি প্রয়োজন চলুন এই দ্রুত কি করতে পারেন যে একটি ডাটা স্ট্রাকচার এবং দক্ষতার এবং পরিবর্তনশীল. তাই আমি সবচেয়ে সহজ অনুমান এই কাজ করতে উপায়, আপনি সম্ভবত ঠিক, একটি অ্যারের তৈরি করবে? সঞ্চয়ের সহজতম উপায় আপনি হয় 140,000 শব্দের একটি অ্যারের তৈরি করতে পারেন এবং ঠিক আছে তাদের সব জায়গা এবং তারপর বাইনারি অনুসন্ধান করে তাদের তর্ক বা নির্বাচন করে বা not-- দুঃখিত যে শ্রেণীবিভাজন এর. আপনি তাদের বাছাই এবং তারপর তাদের তর্ক করতে পারেন বাইনারি অনুসন্ধান অথবা রৈখিক দ্বারা অনুসন্ধান এবং শুধু চূড়ান্ত শব্দ, কিন্তু যে , মেমরি বিপুল পরিমাণ সময় লাগে এবং এটি খুব কার্যকর নয়. আর তাই আমরা শুরু করতে যাচ্ছেন তৈরীর উপায় সম্পর্কে কথা বলা আমাদের চলমান সময় আরও দক্ষ. আর আমাদের লক্ষ্য পেতে হয় ধ্রুব সময় যেখানে এটা প্রায় অ্যারে, যেখানে মত আপনি ক্ষণিক এক্সেস আছে. আমি কোন কিছু অনুসন্ধান করতে চেয়েছিলেন, আমি শুধু পাবে চান পরিস্ফুটন, ঠিক তা খুঁজে পেতে, এবং এটা উঠিয়ে ফেলা. আর তাই একটি কাঠামো যা আমরা খুব ঘনিষ্ঠ হয়ে করব ধ্রুব অ্যাক্সেস পাবে সময়, এই পবিত্র ঈপ্সিত বস্তু ধ্রুব এর প্রোগ্রামিং সময় নামক একটি হ্যাশ টেবিল হয়. এবং তাই ডেভিড পূর্বে উল্লিখিত [শ্রবণাতীত] বক্তৃতা সামান্য বিট, কিন্তু সত্যিই কি আমরা করতে যাচ্ছেন গভীর এই সপ্তাহে ডাইভ সংক্রান্ত যে এক টুকরা উপর কিভাবে একটি হ্যাশ টেবিল কাজ. যে ভাবে সুতরাং একটি হ্যাশ টেবিলের কাজ, উদাহরণস্বরূপ, আমি একটা শব্দ গুচ্ছ সংরক্ষণ করতে চেয়েছিলেন, তাহলে একটি ইংরেজি ভাষায় শব্দের গুচ্ছ, আমি তাত্ত্বিকভাবে করা যেতে পারে কলা, আপেল, কিউই, আম, জুড়ি, এবং সব ঠিক একটি শৃঙ্খলার ফুটি. তারা সব মাপসই পারে এবং এটি করা. এটি একটি ব্যথা ধরনের হতে চাই এবং এক্সেস মাধ্যমে অনুসন্ধান, কিন্তু এই কাজ করার সহজ উপায় আমরা একটি কাঠামো আসলে তৈরি করতে পারে আমরা হ্যাশ যেখানে নামক একটি হ্যাশ টেবিল. আমরা আমাদের কি সব চালানোর একটি হ্যাশ ফাংশন, একটি সমীকরণ, যে সেগুলি সব সক্রিয় একটি মান কিছু সাজান তারপর আমরা সম্মুখের সংরক্ষণ করতে পারেন যে লিঙ্ক তালিকা মূলত একটি অ্যারের. আর তাই এখানে আমরা, চেয়েছিলেন ইংরেজি শব্দ ধারণ করার, আমরা সম্ভাব্য শুধু পারে, আমি না , জানি সব প্রথম অক্ষর চালু একটি সংখ্যা কিছু সাজানোর মধ্যে. আর তাই, উদাহরণস্বরূপ, যদি আমি চেয়েছি একটি apple-- সমার্থক হতে অথবা 0 সূচক সঙ্গে, এবং বি, 1 সমার্থক হতে আমরা 26 এন্ট্রি থাকতে পারে যে শুধু সংরক্ষণ করতে পারেন অক্ষর সমস্ত আমরা দিয়ে শুরু করব যে বর্ণমালা. এবং তারপর আমরা থাকতে পারে 0 সূচিতে অ্যাপল. আমরা এর সূচিতে কলা থাকতে পারে 1, 2 সূচিতে ফুটি, এবং তাই এবং তাই ঘোষণা. আর এভাবেই আমি আপনাকে চেয়েছিলেন আমার হ্যাশ টেবিল এবং এক্সেস অ্যাপল, আমি অ্যাপল সঙ্গে শুরু হয় জানেন একটি A, এবং আমি ঠিক জানি এটা হতে হবে এবং হ্যাশ নয় যে সূচক 0, কারণ এ টেবিল ফাংশন এর পূর্বে নির্ধারিত. আমি জানি না, তাই আমরা একটি ব্যবহারকারী প্রোগ্রাম যেখানে আপনার সাথে চার্জ করা হবে ইচ্ছামত না arbitrarily--, thoughtfully চেষ্টা সঙ্গে ভাল সমীকরণ মনে ছড়িয়ে পাবে আপনার মান সব আউট এমনভাবে তারা সহজেই অ্যাক্সেস করতে পারেন এটা পরবর্তী সঙ্গে একটি সমীকরণ মত আপনি, যে নিজেকে, জানি. আমি যেতে চেয়েছিলেন অর্থে তাই আম, আমি ওহ, এটা এম সঙ্গে শুরু হয়, জানেন. এটা 12 এর সূচিতে হতে হবে. আমি কিছু মাধ্যমে অনুসন্ধান করতে হবে না. আমি শুধু যেতে পারে exactly-- আমি জানি এবং 12 এর সূচী যে উঠিয়ে ফেলবেন. কিভাবে একটি উপর সবাই স্পষ্ট হ্যাশ টেবিল এর ফাংশন কাজ করে? এটি শুধু একটি আরো জটিল অ্যারের ধরনের. প্রশ্নোত্তর টেবিলে উপস্থাপিত হয় সব. ঠিক আছে. তাই আমি মনে করি আমরা পাতিত অনুমান এই ইস্যু কি আপনি একাধিক জিনিষ আছে ঘটবে যে আপনি একই সূচক দিতে? তাই সব, এটা তোলে আমাদের ফাংশন বলে করেনি যে প্রথম পত্র নিয়ে ছিল এবং একটি মধ্যে যে চালু 0 সূচক 25 মাধ্যমে নিজ নিজ. যে যদি সম্পূর্ণই সূক্ষ্ম আপনি শুধুমাত্র প্রতিটি এক আছে. কিন্তু দ্বিতীয় আপনি শুরু আরো থাকার, আপনি আছেন সংঘর্ষের বলা কি আছে যাচ্ছে. আমি সন্নিবেশ করার চেষ্টা যদি একটি হ্যাশ মধ্যে সমাহিত তাই ইতিমধ্যে এটি কলা আছে টেবিল, কি যখন ঘটতে যাচ্ছে আপনি যে সন্নিবেশ করার চেষ্টা? খারাপ জিনিসের কারণে কলা ইতিমধ্যে সূচক মধ্যে বিদ্যমান আপনি এটি সংরক্ষণ করতে চান. বেরি ধরনের আমি কি করব, আহ, ভালো হয়? আমি যেখানে যেতে জানি না. হেল্পডেস্ক যত তারা তারি সমাধান না? আর তাই আপনাকে বলছি করবে ধরনের আমরা এই চতুর জিনিস না দেখতে যেখানে আমরা ধরনের আসলে পারেন আমাদের অ্যারে লিঙ্ক তালিকা তৈরি করুন. আর তাই সহজ উপায় এই সম্পর্কে চিন্তা, সব হ্যাশ টেবিল একটি লিঙ্ক তালিকা অ্যারে. আর তাই, এই অর্থে যে, আপনি পয়েন্টার এই সুন্দর অ্যারে, এবং তারপর প্রতিটি পয়েন্টার যে মান, যে সূচক, আসলে অন্য জিনিস নির্দেশ করতে পারেন. আর তাই আপনি এই সমস্ত পৃথক আছে এক বড় অ্যারে স্রংস চেইন. তাই এখানে, আমি যদি বেরি সন্নিবেশ চেয়েছিলেন, আমি ঠিক আছে, আমি ইনপুট যাচ্ছি, জানি এটা আমার হ্যাশ ফাংশন মাধ্যমে. আমি এর সূচী দিয়ে শেষ করা যাচ্ছে না 1, এবং তারপর আমি আছে সক্ষম হতে যাচ্ছি এই মাত্র একটি ছোট উপসেট জায়েন্ট 140,000-শব্দ অভিধান. এবং তারপর আমি শুধু চেহারা পারেন যে 1/26 মাধ্যমে. এবং তারপর, তাই আমি শুধু সন্নিবেশ করতে পারেন আগে বা পরে কলা হয় বেরি এই ক্ষেত্রে? পরে, ডান? এবং যাতে আপনি করতে চান করতে যাচ্ছেন কলা পর এই নোড সন্নিবেশ, এবং যাতে আপনি সন্নিবেশ করতে যাচ্ছেন যে লিঙ্ক তালিকা লেঙ্গুড় এ. আমি ফিরে যেতে চলেছি এই পূর্ববর্তী স্লাইডে, তাই আপনাকে বলছি কিভাবে দেখতে পারেন হ্যাশ ফাংশন কাজ করে. সুতরাং হ্যাশ ফাংশন এই সমীকরণ আপনি আপনার ইনপুট ধরনের চালাচ্ছেন যে যাই হোক না কেন পেতে সূচক মাধ্যমে আপনার প্রতি এটি ধার্য করতে চান. আর তাই, এই উদাহরণে, সব আমরা চেয়েছিলাম না, প্রথম পত্র নিয়ে ছিল আমরা তখন একটি সূচক পরিণত করা আমাদের হ্যাশ ফাংশন মধ্যে যে সংরক্ষণ করতে পারেন. আমরা এখানে করছি সব আমরা করছি প্রথম অক্ষর রূপান্তর. সুতরাং keykey [0] ঠিক প্রথম চিঠি যাই হোক না কেন স্ট্রিং আমরা ভোগ করছি, আমরা পার করছি. আমরা উপরের যে রূপান্তর, এবং করছি আমরা, বড় হাতের A দ্বারা বিয়োগ করছি এমনটি হয় যে সব আমাদের একটি নম্বর প্রদান করা হয় যা আমরা আমাদের মান সম্মুখের হ্যাশ পারেন. এবং তারপর আমরা চলুন হ্যাশ মডিউলস আকার ফিরে. খুব, খুব সতর্কতা অবলম্বন করা আবশ্যক তাত্ত্বিকভাবে, এখানে, কারণ আপনার হ্যাশ মান অসীম হতে পারে. এটা শুধু উপর উপর এবং যেতে পারে. এটা সত্যিই কিছু হতে পারে বৃহত্ মান, কিন্তু আপনার হ্যাশ টেবিল কারণ যে আপনি তৈরি করেছি শুধুমাত্র 26 ইনডেক্স আছে, আপনি নিশ্চিত করতে চান আপনার modulusing যাতে আপনি এটা একই run-- না আপনার queue-- হিসাবে জিনিস তাই আপনি ছুট না যে আপনার হ্যাশ ফাংশন নীচে. আপনি এটি প্রায় ফিরে মোড়ানো চান [শ্রবণাতীত] যখন একই ভাবে আপনি একটি খুব ভালো ছিল খুব বড় চিঠি, আপনি যে চান না শুধু শেষ ছুট. এখানে একই জিনিস, আপনি কি নিশ্চিত করতে চাই এটি মোড়কে দ্বারা শেষ ছুট না কাছাকাছি টেবিলের শীর্ষে. তাই এই মাত্র একটি খুব সহজ হ্যাশ ফাংশন. আমি যে সব নিতে প্রথম যাই হোক না কেন আমাদের ইনপুট অক্ষর ছিল এবং একটি সূচক মধ্যে যে ঘুরিয়ে যে আমরা আমাদের হ্যাশ টেবিল পুরা পারে. হ্যাঁ, তাই আমি আগে বলেন আমরা দুর্ঘটনায় সমাধান যে ভাবে আমাদের হ্যাশ টেবিল ভুগেন, আমরা chaining, কি কল. আপনি একাধিক সন্নিবেশ করার চেষ্টা যদি তাই হয় একই জিনিস দিয়ে শুরু যে শব্দ, আপনি এক হ্যাশ মান আছে চলুন. অ্যাভোকাডো এবং অ্যাপল, আপনি করেছি তাহলে আমাদের হ্যাশ ফাংশন মাধ্যমে এটি চালানোর জন্য, আপনি দিতে যাচ্ছি একই সংখ্যা, 0 সংখ্যা. আর তাই ভাবে আমরা যে সমাধান আমরা আসলে ধরনের তাদের লিঙ্ক করতে পারেন যে একসঙ্গে লিঙ্ক তালিকা মাধ্যমে. আর তাই এই অর্থে, আপনাকে বলছি ধরনের দেখতে পারেন কিভাবে ডাটা স্ট্রাকচার যে আমরা পূর্বে সেটিং করে থাকেন একটি কিসমিস লিঙ্ক তালিকা ধরনের মত এক মধ্যে একসঙ্গে আসতে পারে. এবং তারপর আপনি পর্যন্ত তৈরি করতে পারেন আরো দক্ষ ডাটা স্ট্রাকচার যে বড় পরিমাণে ব্যবস্থা করতে সক্ষম তথ্য, যে পরিবর্তনশীল নির্ভর করে পুনরায় আকার আপনার চাহিদার উপর. সবাই স্পষ্ট? পরিষ্কার এর সবাই ধরনের এখানে কি উপর? আমি insert-- চেয়েছিলেন একটি কি আমি জানি না, সাথে শুরু হয় যে ফল, বেরি ছাড়া অন্য বি, কলা. শ্রোতা: ব্ল্যাকবেরী. Andi Peng: ব্ল্যাকবেরী, ব্ল্যাকবেরী. কোথায় ব্ল্যাকবেরী এখানে কোনদিকে? ওয়েল, আমরা আসলে সাজানো নি এই এখনো, কিন্তু তাত্ত্বিকভাবে আমরা এই করতে চেয়েছিলেন, তাহলে বর্ণনাক্রমিক বিন্যাস অনুসারে, যেখানে যেতে ব্ল্যাকবেরি উচিত? শ্রোতা: [শ্রবণাতীত] Andi Peng: ঠিক, এখানে পরে, ডান? কিন্তু এটা খুব কঠিন, যেহেতু reorder-- আমি আপনাকে বলছি পর্যন্ত অনুমান. আপনাকে বলছি সম্পূর্ণই পারেন যাহা চান বাস্তবায়ন. আরো কার্যকর উপায় সম্ভবত এই করছেন আপনার লিঙ্ক সাজাতে হবে বর্ণানুসারে মধ্যে তালিকা, এবং তাই যখন আপনি কিছু ঢোকাতে, আপনি চান তাদের সন্নিবেশ নিশ্চিত হতে বর্ণানুসারে মধ্যে তাই যে তারপর আপনি যখন তাদের অনুসন্ধান করার চেষ্টা করুন, আপনি সবকিছু, তর্ক করতে হবে না. আপনি ঠিক যেখানে জানি এটা, এবং এটা অনেক সহজ. কিন্তু আপনি যে ধরনের আছে কিছু এলোমেলোভাবে interspersed আপনি এখনও আছে চলুন কোন পথে তা তর্ক করতে. আর তাই যদি আমি চেয়েছি শুধু ব্ল্যাকবেরী এখনে এবং আমি এর জন্য আপনাকে চেয়েছিলেন এটা, আমি ওহ, জানি, ব্ল্যাকবেরী 1 এর সূচী দিয়ে শুরু, তাই আমি নয় তাত্ক্ষণিকভাবে শুধু 1 এ অনুসন্ধান জানেন. এবং তারপর আমি ধরনের হতে পারে লিঙ্ক তালিকা তর্ক আমি ব্ল্যাকবেরি পর্যন্ত পেতে পারেন, এবং হ্যা then--? শ্রোতা: আপনি তৈরি করার চেষ্টা করছি এটি একটি খুব সহজ হ্যাশ মত আমি অনুমান ফাংশন. এবং আমরা যা করতে চেয়েছিলেন, তাহলে যে মত একাধিক স্তর, ঠিক আছে, আমরা মধ্যে আলাদা করতে চান সব বর্ণানুক্রমিক অক্ষর মত এবং তারপর আবার অন্য সেট পছন্দ মধ্যে যে বর্ণানুক্রমিক অক্ষর, আমরা একটি হ্যাশ মত নির্বাণ হয় একটি হ্যাশ টেবিল মধ্যে টেবিল, বা ফাংশন মধ্যে একটি ফাংশন মত? অথবা কিন্তু যে হয় Andi Peng: আপনার হ্যাশ তাই আপনার হ্যাশ টেবিল ফাংশন আপনি এটি করতে চান হিসাবে হিসাবে বড় হতে পারে. সুতরাং এই অর্থে, আমি চিন্তা এটি খুব, খুব সহজ ছিল আমার জন্য সহজ শুধু সাজান ভিত্তিক করার প্রথম শব্দের অক্ষর উপর. তাই শুধুমাত্র 26 অপশন আছে. আমি শুধুমাত্র থেকে 26 অপশন পেতে পারেন 25 0 কারণ তারা শুধুমাত্র পারেন একটি থেকে জেড শুরু কিন্তু যদি আপনি যেমনটি সম্ভবত, আরো জটিলতা যোগ করতে অথবা দ্রুততর করার সময় চালানো আপনার হ্যাশ টেবিল, আপনি একেবারে জিনিস সমস্ত প্রকারের করতে পারেন. আপনি আপনার নিজের করতে পারেন আপনি দেয় যে সমীকরণ আরো বন্টন আপনার শব্দ, তারপর আপনি, অনুসন্ধান যখন এটা দ্রুত হতে যাচ্ছে. এটা সম্পূর্ণই আপনাকে বলছি আপ এর কিভাবে আপনি যে বাস্তবায়ন করতে চান. শুধু বালতি হিসাবে মনে. আমি চেয়েছিলেন 26 বালতি, আমি যাচ্ছি যারা buckets মধ্যে কিছু বাছাই. কিন্তু আমি একটি গুচ্ছ আছে যাচ্ছি প্রতিটি বালতি স্টাফ, আপনি এটি করতে চান, তাহলে তাই দ্রুত এবং আরো দক্ষ, আমার একশ buckets আছে যাক. কিন্তু তারপর আপনি একটি জিনিসটা আছে তারা যাতে উপায় জিনিষ বাছাই সঠিক বালতি তারা থাকা উচিত. কিন্তু তারপর যখন আসলে আপনি যে বালতি তাকান করতে চান, নেই, কারণ এটা অনেক দ্রুততর প্রতিটি বালতি কম কাপড়. আর তাই, হাঁ, যে আসলে যদি pset5 আপনাকে বলছি জন্য কৌতুক আপনি হবেন যে হয় শুধু তৈরি করার চ্যালেঞ্জ সবচেয়ে বেশি কার্যকরী যাই হোক না কেন আপনি মনে করতে পারেন ফাংশন হতে সংরক্ষণ এবং এই মান পরীক্ষা করতে পারবেন. পুরোটাই আপনাকে বলছি আপ তবে আপনি এটি করতে চান, কিন্তু এটা সত্যিই একটি ভাল পয়েন্ট. যে যুক্তি ধরনের আপনি সম্পর্কে ভাবতে শুরু করতে চান ভাল, কেন আমি আরো buckets করা না হয়. এবং তারপর আমি আপনাকে আছে কম কিছু, এবং তারপর হয়তো আমি একটি ভিন্ন হ্যাশ ফাংশন আছে. হ্যা, এই কাজ করার উপায় অনেক আছে pset, কিছু অন্যদের তুলনায় দ্রুততর হয়. আমি সম্পূর্ণভাবে শুধু কিভাবে দেখতে যাচ্ছি ফাস্ট দ্রুততম আপনাকে বলছি হবে ছিল আপনার ফাংশন কাজ পেতে পারবে. ঠিক আছে, সবাই ভাল উপর chaining এবং হ্যাশ টেবিল? এটি একটি খুব সহজ মত আসলে আপনি এটা সম্পর্কে ধারণা মনে করে. এটা সব পৃথক হয় যাই হোক না কেন আপনার ইনপুট buckets মধ্যে হয়, তাদের বাছাই, এবং তারপর অনুসন্ধান সঙ্গে আছে যুক্ত যে প্রদর্শন করা হয়. কুল. ঠিক আছে, এখন আমরা একটি ভিন্ন ধরণের আছে ডাটা স্ট্রাকচার একটি গাছ বলা হচ্ছে যে. এর যাওয়া যাক এবং কথা বলার চেষ্টা যা, বিভিন্ন স্বতন্ত্র্র বৈশিষ্ট্যে আছে কিন্তু একই বিষয়শ্রেণীতে অন্তর্ভুক্ত. মূলত, সব গাছ পরিবর্তে হয় রৈখিক ভাবে তথ্য সংগঠিত একটি হ্যাশ টেবিল আপনি does-- যে , এটি একটি শীর্ষ এবং একটি নীচে পেয়েছিলাম জানি এবং তারপর আপনি যে ধরনের এটিকে একটি বন্ধ লিঙ্ক বৃক্ষ, না আপনি নিজেই রুট কল যা একটি উপরে আছে এবং তারপর এটি সব কাছাকাছি পাতার হয়েছে. আর তাই সব আপনি এখানে আছে শুধু উপরের নোড যে অন্যান্য নোড, পয়েন্ট যে স্থানটিকে আরো নোড, এবং তাই এবং তাই ঘোষণা. এবং যাতে আপনি শুধু বিভাজন শাখা আছে. এটা সংগঠিত শুধু একটি ভিন্ন উপায় তথ্য, এবং আমরা এটা একটি গাছ কল কারণ, আপনাকে বলছি এটা ঠিক ঠিক করা একটি গাছের মত, দেখুন আউট স্থাপিত. আমরা গাছ এটি কল কেন. হ্যাশ টেবিল একটি টেবিল মত দেখায়. একটি বৃক্ষ শুধু একটি গাছ দেখে মনে হচ্ছে. এটা সব একটি পৃথক হয় নোড সংগঠিত প্রণালী আপনার চাহিদা আছে তার উপর নির্ভর করে. তাই আপনি যদি একটি রুট আছে এবং তারপর আপনি পাতার আছে. পথ যে আমরা, বিশেষ করে যা করতে পারেন এটি একটি বাইনারি গাছ সম্পর্কে চিন্তা, একটি বাইনারি ট্রি মাত্র হয় একটি গাছ নির্দিষ্ট টাইপ যেখানে প্রতিটি নোডের শুধুমাত্র পয়েন্ট যাও, সর্বোচ্চ এ, দুই অন্যান্য নোড. তাই এখানে আপনি স্বতন্ত্র আছে আপনার ট্রির প্রতিসাম্য যে এটা সহজ ধরনের পর্যবেক্ষণ করে তোলে মান এ আপনি তাহলে আপনি কারণ হয় সবসময় একটি বাম বা ডান আছে. থেকে একটি বাম তৃতীয় মত আছে না বাম বা বাম থেকে একটি চতুর্থ. এটা আপনি একটি বাম এবং একটি অধিকার আছে ঠিক এবং আপনি ঐ দুটি হয় অনুসন্ধান করতে পারেন. এবং তাই কেন এই দরকারী? এই যে ভাবে আপনি খুঁজছেন তাহলে দরকারী ঠিক আছে, মান মাধ্যমে আপনাকে? বরং বাইনারি বাস্তবায়নের চেয়ে একটি ত্রুটি অ্যারের মধ্যে অনুসন্ধান, আপনি নোড সন্নিবেশ করতে সক্ষম হতে চায় কিনা এবং স্বেচ্ছায় এবং নোড দূরে নিয়ে অনুসন্ধান সংরক্ষণ বাইনারি অনুসন্ধান ধারণক্ষমতা. তাই এই ভাবে, আমরা ধরনের আছেন যখন আমরা স্মরণ tricking-- লিঙ্ক তালিকা বাইনারি অনুসন্ধান করতে পারেন না বলেন? আমরা ধরনের একটি ডাটা স্ট্রাকচার তৈরি করছি ঠাট কাজ মধ্যে যে. আর তাই, কারণ লিঙ্ক তালিকা, রৈখিক তারা শুধুমাত্র অন্যান্য পর এক লিঙ্ক. আমরা ধরনের থাকতে পারে পয়েন্টার বিভিন্ন সাজান বিভিন্ন নোড যে বিন্দু যে সার্চ দিয়ে আমাদের সাহায্য করতে পারেন. তাই এখানে, যদি আমি করতে চেয়েছিলেন একটি বাইনারি অনুসন্ধান বৃক্ষ আছে, আমি জানি আমার মাঝখানে যে 55 করে. আমি শুধু যে তৈরি করা যাচ্ছে না আমার মধ্যম হিসাবে, আমার root পরিচয়ে, এবং তারপর আমি যাচ্ছি মান এটি বন্ধ ঘুর্ণন. তাই এখানে, আমি এর জন্য আপনাকে যাচ্ছি তাহলে 66 এর মান, আমি 55 এ শুরু করতে পারেন. এটা 55 এর চেয়ে 66 বেশী? হ্যাঁ এটা, তাই আমি অনুসন্ধান Mus জানেন আমি এন এই ট্রি ডানদিকে পয়েন্টার. আমি 77 থেকে যান. ঠিক আছে, এর চেয়ে কম বা 77 তার চেয়ে অনেক বেশী 66? ওহ, এর চেয়ে কম, তাই আপনি কি জানেন, যে বাম নোড হতে হয়েছে. আর তাই এখানে আমরা ধরনের সংরক্ষণের করছি অ্যারে সম্পর্কে মহান জিনিস সব, তাই গতিশীল মাপ মত বস্তুর, হচ্ছে সন্নিবেশ এবং স্বেচ্ছায় মুছতে সক্ষম, নির্দিষ্ট সম্পর্কে চিন্তা না করেও স্থানের পরিমাণ. আমরা এখনও সব সংরক্ষণ যারা বিস্ময়কর কিছু এছাড়াও সংরক্ষণ করতে সক্ষম হচ্ছে, যখন লগ ইন করুন এবং বাইনারি অনুসন্ধান সময় অনুসন্ধান আমরা পূর্বে শুধুমাত্র ছিল শব্দবন্ধের পেতে সক্ষম. কুল ডাটা স্ট্রাকচার, ধরনের জটিল, নোড বাস্তবায়ন. আপনি, এটা সব দেখতে পারেন নোড struct দিকে আপনি একটি বাম আছে এবং একটি সঠিক পয়েন্টার. প্রশ্নোত্তর টেবিলে উপস্থাপিত হয় সব. তাই বরং শুধু চেয়ে একটি এক্স বা আগের হচ্ছে. তারপর আপনি একটি বাম বা ডান, এবং আছে আপনি যে ধরনের তাদের একসঙ্গে সংযুক্ত করতে পারেন তবে আপনি চয়ন. ঠিক আছে, আমরা আসলে চলুন মাত্র কয়েক মিনিট সময় নিতে. তাই আমরা এখানে ফিরে যেতে চলুন. আমি পূর্বে বলেন, আমি ধরনের ব্যাখ্যা আমরা কিভাবে পিছনে যুক্তি এই মাধ্যমে অনুসন্ধান করবে. আমরা চেষ্টা করে যাচ্ছেন এই আউট pseudocoding দেখতে আমরা ধরনের আবেদন করতে পারেন যদি বাইনারি অনুসন্ধান একই যুক্তিবিজ্ঞান ডাটা স্ট্রাকচার নিয়ে বিভিন্ন ধরনের যাও. আপনাকে বলছি একটি দম্পতি মত নিতে চান মিনিট শুধু এই সম্পর্কে চিন্তা. ঠিক আছে. ঠিক আছে, আমি যাচ্ছি আসলে আপনি ঠিক কোন the-- দিতে, আমরা প্রথম pseudocode সম্পর্কে আলোচনা করব. সুতরাং যে কেউ চায় একটি ছুরিকাঘাত দিতে কি আপনি যখন কাজ করতে চান সর্বপ্রথম আপনার অনুসন্ধানের আউট শুরু করছেন? আমরা খুঁজছেন 66 এর মান, কি আমরা যদি না করতে চান সর্বপ্রথম আমরা এই বৃক্ষ অনুসন্ধান বাইনারি করতে চান? শ্রোতা: আপনি ঠিক দেখতে চাই এবং [শ্রবণাতীত] বাম চেহারা এবং দেখুন অধিক নম্বর. Andi Peng: হাঁ, ঠিক. সুতরাং আপনি আপনার রুট তাকান চলুন. আপনি কল করতে পারেন উপায়ে প্রচুর আছে এটা, আপনার পিতা বা মাতা নোড মানুষ বলে. আমি কারণ রুট বলতে চাই যে গাছের শিকড় মত. আপনি তাকান করতে যাচ্ছেন আপনার রুট নোড, এবং আপনি আছেন দেখতে যাচ্ছে 66 বেশী এর চেয়ে বড় বা কম 55. এবং এটি ভাল, এটা হয়, তার চেয়ে অনেক বেশী, তাহলে তার চেয়ে অনেক বেশী, যেখানে আমরা দেখতে চাই না? কোথায় আমরা ঠিক আছে, এখন সন্ধান করতে চান? আমরা অনুসন্ধান করতে চান এই বৃক্ষ ডান অর্ধেক. সুতরাং আমরা সুবিধামতো, আছে একটি ডান যে স্থানটিকে পয়েন্টার. এবং তারপর, তাই আমরা সেট করতে পারেন আমাদের নতুন রুট 77 হতে. আমরা শুধু যেখানে যেতে পারেন পয়েন্টার প্রতি নির্দেশ করা হয়. ওয়েল, ওহ, এখানে আমরা শুরু করছি 77 এ, এবং আমরা ঠিক করতে পারেন পৌনঃপুনিকভাবে আবার এবং আবার এই কাজ. এই ভাবে, আপনি কি ধরনের একটি ফাংশন আছে. আপনি যদি যে অনুসন্ধান করার একটি উপায় আছে শুধু এবং বহুবার উপর পুনরায় রিপিট করতে পারেন, আপনি তাকান করতে চান যেখানে উপর নির্ভর করে আপনি শেষ পর্যন্ত মান পেতে পর্যন্ত আপনি দেখছেন জন্য অনুসন্ধান করছি যে. ধারণা তৈরী কর? আমি আপনি প্রকৃত প্রদর্শন করতে যাচ্ছি কোড, এবং এটা কোড অনেক. কোন প্রয়োজন খামখেয়াল আউট. আমরা এটা মাধ্যমে কথা বলতে পারবেন. আসলে না. যে শুধু pseudocode হয় ছিল. ঠিক আছে, যে শুধু pseudocode হয়, ছিল যা একটু জটিল, কিন্তু এটা সম্পূর্ণই সূক্ষ্ম. এখানে সবাই বরাবর অনুসরণ? রুট নাল যদি, রিটার্ন মিথ্যা কারণ তার মানে এমনকি আপনি সেখানে কিছু নেই. রুট এন যদি তাই মান, তাহলে এটি আপনি এ খুঁজছেন এক হতে হবে, তারপর আপনি সত্য ফিরে যাচ্ছেন আপনি জানেন, কারণ আপনি এটি পাওয়া গেছে. কিন্তু মূল্য কম হয় n এর রুট, আপনি আছেন বাম অনুসন্ধান যাচ্ছে শিশু বা বাম পাতা, আপনি কল করতে চান যাই হোক না কেন. আর মান রুট চেয়ে অনেক বেশী হলে, ডান বৃক্ষ অনুসন্ধান চলুন, তারপর শুধু ফাংশন চালানো অনুসন্ধান মাধ্যমে আবার. এবং root- র, নাল যে যে যদি আপনি শেষে পৌঁছে করেছি মানে? যে কোন আপনি মানে আরো আরো পাতার আপনাকে, তারপর আপনি আমি ওহ, জানি তা এখানে নেই অনুমান আমি দিয়ে তাকিয়ে থাকেন, কারণ পরে এবং এটা এখানে না গোটা ব্যাপারটাই, এটা শুধু এখানে নাও হতে পারে. যে সবাই জানার? সুতরাং এটা সংরক্ষণের বাইনারি অনুসন্ধান মত লিঙ্ক তালিকা ক্ষমতা. কুল, এবং তাই দ্বিতীয় ধরনের ডাটা স্ট্রাকচার আপনাকে বলছি আপনার pset উপর বাস্তবায়নের চেষ্টা করে দেখতে পারেন, আপনি শুধুমাত্র একটি পদ্ধতি বেছে নিতে হবে. কিন্তু সম্ভবত একটি বিকল্প পদ্ধতি হ্যাশ টেবিল আমরা একটি trie কল কি. সমস্ত একটি trie একটি বৃক্ষ নির্দিষ্ট ধরনের যে অন্যান্য মান যেতে পারে মান আছে. সুতরাং পরিবর্তে একটি বাইনারি হচ্ছে অর্থে গাছ শুধুমাত্র এক যে জিনিস দুই দিকে নির্দেশ করতে পারে, আপনি থাকতে পারে অনেক, অনেক কিছু করার এক জিনিস পয়েন্ট. আপনি মূলত অ্যারে আছে যা আপনাকে সংরক্ষণ ভিতরে অন্যান্য অ্যারে নির্দেশ করে পয়েন্টার. সুতরাং আমরা কিভাবে নোড একটি trie নির্ধারণ করবে আমরা একটি আছে সেটি হল বুলিয়ান, সি শব্দ, ডান? সুতরাং নোড বুলিয়ান হয় সত্য বা মিথ্যা, ভালো প্রধান এ সব প্রথম যে অ্যারে, এই একটি শব্দ? দ্বিতীয়ত, আপনি পয়েন্টার করাতে চাই যাই হোক না কেন তাদের বাকি আছে. একটি বিট জটিল, একটি বিট বিমূর্ত, কিন্তু আমি কি যে সব উপায়ে ব্যাখ্যা করবে. তাই এখানে, উপরের, আপনি যদি একটি অ্যারের ইতিমধ্যে ঘোষণা আছে, আপনি একটি বুলিয়ান আছে যেখানে একটি নোড সামনে এ মান সংরক্ষণ করা যে আপনি এই একটি শব্দ বলে? এই না একটি শব্দ? এবং তারপর আপনি আপনার অ্যারের বাকি যে আসলে সঞ্চয় সকল এটা হতে পারে কি সম্ভাবনাগুলিকে. সুতরাং, উদাহরণস্বরূপ, মত উপরের আপনি সত্য বা বলছেন যে সর্বপ্রথম মিথ্যা, হ্যাঁ অথবা না, এই একটি শব্দ. এবং তারপর আপনি 26 মাধ্যমে 0 আছে আপনি সংরক্ষণ করতে পারেন যে অক্ষর. আমি এখানে আপনাকে চেয়েছিলেন ব্যাট জন্য, আমি উপরে যেতে এবং আমি এ বি খুঁজতে বি এ জন্য চেহারা আমার অ্যারে, এবং তাই আমি জানি, ঠিক আছে, বি একটি শব্দ? বি তাই এভাবে একটি শব্দ নয় আমি আপনার অনুসন্ধানের রাখতে হবে. আমি বি থেকে যান, এবং আমি চেহারা B এর দিকে যে স্থানটিকে পয়েন্টার এবং আমি, তথ্য অন্য অ্যারের দেখতে আমরা আগে ছিল যে একই কাঠামো. এবং, উহু পরের এখানে [শ্রবণাতীত] এর মধ্যে চিঠি এ হল তাই আমরা যে অ্যারের মধ্যে চেহারা. আমরা অষ্টম মান খুঁজে, এবং তারপর আমরা, ওহ, দেখতে সন্ধান আরে, একটি শব্দ, যে বি-একটি একটি শব্দ? এটি একটি শব্দ নয়. আমরা খুঁজছি রাখা পেয়েছেন. এবং তারপর, তাই আমরা যেখানে দেখুন একটি আইটেম এর পয়েন্টার, এবং এটা অন্য ভাবে স্থানটিকে যা আমরা আরো মান সংরক্ষণ করা আছে. এবং শেষ পর্যন্ত, আমরা পেতে একটি শব্দ, যা বি-একটি-টি. আর তাই পরবর্তী সময় আপনি দেখুন, আপনি যাচ্ছেন হ্যাঁ, এর যে চেক আছে, এই বুলিয়ান ফাংশন সত্য. আর তাই অর্থে আমরা অপেক্ষা করছেন অ্যারে দিয়ে একটি গাছ হচ্ছে. আমি তখন আপনি ধরনের ডাউন অনুসন্ধান করতে পারেন. বরং একটি ফাংশন হ্যাশ চেয়ে ও লিঙ্ক তালিকা দ্বারা মান নির্ধারণের, আপনি শুধু একটি বাস্তবায়ন করতে পারে downwords অনুসন্ধান করে যে Trie. সত্যিই, সত্যিই স্টাফ জটিল. আমি ভালো আছি, কারণ আমার মনে হয় এটা সহজ না তাই অনেক ডাটা স্ট্রাকচার খুঁজে spitting আপনি এ কিন্তু ধরনের সবাই আছে এই যুক্তি কাজ করে বুঝতে? ঠিক আছে শান্ত হও. তাই বি-একটি-টি, এবং তারপর আপনাকে যাচ্ছেন. আপনি যাচ্ছেন পরবর্তী সময় ওহ, আরে, এটা সত্যি, দেখতে, এইভাবে আমি এই একটি শব্দ হতে হবে জানি. চিড়িয়াখানা জন্য একই জিনিস. সুতরাং এখানে জিনিস যদি, এই মুহূর্তে আমরা এই মুহূর্তে, চিড়িয়াখানা জন্য অনুসন্ধান করতে চেয়েছিলেন, বর্তমানে চিড়িয়াখানা একটি নয় আমাদের অভিধানে শব্দ কারণ আপনাকে বলছি, দেখতে পারেন আমরা একটি বুলিয়ান আছে প্রথম স্থান আসতে সত্য জুম শেষে হয়. আমরা Z-হে-হে-এম আছে. তাই এখানে, আমরা আসলে আছে না আমাদের অভিধানে শব্দ, চিড়িয়াখানা, এই চেক বক্স-টি নির্বাচন না করা হয়, কারণ. তাই কম্পিউটার না চিড়িয়াখানা একটি শব্দ জানি যে কারণ আমরা করেছি যে ভাবে শুধুমাত্র একটি জুম এখানে, এটা সঞ্চিত আসলে একটি বুলিয়ান মান আছে যে সত্য প্রমাণিত হয়েছে. আমরা সন্নিবেশ করতে চান তাহলে শব্দ, চিড়িয়াখানা, আমাদের ডিকশনারিতে, আমরা যে কাজ সম্পর্কে কিভাবে যেতে হবে? আমরা নিশ্চিত করার জন্য কাজ করতে হবে না কি আমাদের কম্পিউটার টু Z-হে-হে একটি শব্দ যে জানে এবং প্রথম শব্দ টু Z-হে-হে-এম কে? শ্রোতা: [শ্রবণাতীত] Andi Peng: ঠিক, আমরা এই যে নিশ্চিত করতে চাই এখানে, যে বুলিয়ান মান এটা সত্যি যে চেক করা বন্ধ. জেড-হে-হে, তাহলে আমরা যে চেক করতে যাচ্ছেন, তাই আমরা ঠিক, আরে, চিড়িয়াখানা একটি শব্দ জানি. আমি বলতে যাচ্ছি এটি একটি শব্দ যাতে যে কম্পিউটার , যখন কম্পিউটার চেক করে এটা চিড়িয়াখানা একটি শব্দ যে জানে না. এই সব তথ্য মনে রাখবেন, কারণ কাঠামো, এটা আমাদের জন্য খুব সহজ ওহ, ব্যাট একটা শব্দ, বলতে. চিড়িয়াখানা একটা শব্দ. জুম একটি শব্দ. কিন্তু আপনি এটা নির্মাণ করছেন, কম্পিউটার কোন ধারণা আছে. সুতরাং আপনি ঠিক তা জানাতে হবে কি সময়ে এই একটি শব্দ? কি সময়ে এটা একটি শব্দ নয়? আর কি সময়ে আমি কি কিছু অনুসন্ধান করতে হবে, এবং কি সময়ে আমি পরের যেতে হবে না? যে সুস্পষ্ট সবাই? কুল. এবং তারপর, তাই আসে সমস্যা কিভাবে আমরা কিছু ঢোকাতে সম্পর্কে যেতে যে সেখানে আসলে না? তাই আসুন শুধু আমরা সন্নিবেশ করতে চান বলা যাক আমাদের trie মধ্যে শব্দ, স্নান,. আপনাকে বলছি বর্তমানে মত দেখতে পারেন বর্তমানে আমরা সবাই, বি-এ-টি হল এবং এই নতুন ডাটা স্ট্রাকচার এক পাইন্ট আছে ছিল যে আমরা অনুমান কারণ নাল জোরাল ওহ, বি-এ-টি পরে কোন শব্দ আছে, যে, কেন আমরা রাখা প্রয়োজন যে টি পরে জিনিষ হচ্ছে আমরা যদি আপনি না কিন্তু সমস্যা দেখা দেয় দুটো কারণে পরে আসে যে একটি শব্দ আছে চান T এর. আপনি গোসলখানা'র থাকে, তাহলে আপনি আছেন একটি এইচ ডান চান যাচ্ছে. এবং তাই আমরা যে কাজ করতে যাচ্ছেন উপায় আমরা একটি পৃথক নোড তৈরি করতে যাচ্ছেন. আমরা যাই হোক না কেন পরিমাণ একগুচ্ছ করছি না এই নতুন অ্যারের জন্য মেমরি, এবং আমরা পয়েন্টার ওয়ালেট-এ সঞ্চয় করতে যাচ্ছেন. আমরা দায়িত্ব অর্পণ করতে যাচ্ছেন এইচ, সর্বপ্রথমে, এই নাল, আমরা পরিত্রাণ পেতে যাচ্ছেন. আমরা আছে চলুন এইচ বিন্দু কৃত. আমরা একটি এইচ দেখতে হয়, আমরা তা চাই অন্য কোথাও যেতে. এখানে, আমরা তাহলে হ্যাঁ বন্ধ পরীক্ষা করতে পারবেন. আমরা T পরে একটি এইচ আঘাত, ওহ, তারপর আমরা এই একটি শব্দ হতে পারে. বুলিয়ান সত্য ফিরে যাচ্ছে. সবাই যে ঘটেছে কিভাবে পরিষ্কার? ঠিক আছে. তাই মূলত, সব ডাটা স্ট্রাকচার আমরা আজ উপর চলে গেছে করেছি, যে আমি করেছি সত্যিই, সত্যিই দ্রুত তাদের উপর চলে গেছে এবং আরো অনেক কিছু না করার মধ্যে বিস্তারিত, এবং এটা ঠিক আছে. আপনি সেনাবিভাগে মেসে খাবার শুরু করার পরে এর সাথে, আপনি হবেন যেখানে সম্পর্কে অবগত থাকার সব পয়েন্টার, হয় কি ঘটছে আপনার ডাটা স্ট্রাকচার, ইত্যাদি ইত্যাদি. তারা খুবই উপযোগী হতে হবে এবং এটা আপনার উপর নির্ভর করে বলছি সম্পূর্ণই জিনিসটা কিভাবে আপনি যদি কিছু বাস্তবায়ন করতে চান. আর তাই pset4, এর 5-- ওহ, যে ভুল. Pset5 বানান ভুল হয়. যেহেতু আমি আগে বলেন, আপনি একবার, চলুন আবার, আমাদের কাছ থেকে সোর্স কোড ডাউনলোড করুন. তিনটি প্রধান হতে আছে যাচ্ছে জিনিষ আপনি ডাউনলোড করা হবে. আপনি, অভিধান ডাউনলোড করব KERS, এবং গ্রন্থে. ঐ সমস্ত বিষয় হয় হয় শব্দের অভিধান আমরা আপনি না পরীক্ষা করতে চান যে বা তথ্য পরীক্ষা আমরা আপনাকে বা বানান পরীক্ষক ইত্যাদি করতে চান. আর তাই অভিধান আমরা আপনাকে যাচ্ছি দিতে আমরা চাই যে প্রকৃত শব্দের দিতে আপনি একটি উপায় যে একরকম সংরক্ষণ করতে একটি অ্যারের অধিক কার্যকরী. এবং তারপর গ্রন্থে আমরা তা হতে যাচ্ছে আপনি জিজ্ঞাসা নিশ্চিত করার জন্য পরীক্ষা বানান সব শব্দের বাস্তব শব্দ আছে. এর আর তাই তিন ব্লক আমরা আপনাকে দেব যে প্রোগ্রাম dictionary.c বলা হয়, dictionary.h, এবং speller.c. আর তাই সব dictionary.c হয় না কি আপনি বাস্তবায়ন জিজ্ঞাসা করছি. এটা শব্দ লোড করা হয়. এটা চেক তাদের বানান, এবং এটি নিশ্চিত করে তোলে যে সব তথ্য সঠিকভাবে সন্নিবেশিত করা হয়. diction.h শুধু একটি লাইব্রেরি ফাইল যে সমস্ত ফাংশন ঘোষণা. আর speller.c, আমরা আপনাকে দিতে যাচ্ছেন. আপনি এটা কোন পরিবর্তন করার প্রয়োজন হয় না. সকল speller.c যে সময় লাগবে, লোড এটা গতি পরীক্ষা করা, কিভাবে ভালো মাত্রাবিশিষ্ট পরীক্ষায় দ্রুত আপনি কিছু কাজ করতে সক্ষম হন. এটি একটি speller এর. এটা দিয়ে বিশৃঙ্খল না, কিন্তু করতে নিশ্চিত করুন যে আপনি এটা কি করছে বুঝতে. আমরা একটি ফাংশন বলা getrusage ব্যবহার করে আপনার বানান কর্মক্ষমতা পরীক্ষা পরীক্ষক. সমস্ত এটি মূলত পরীক্ষা আছে আপনার ব্যবহৃত অভিধানে পাওয়া সব সময়, তাই আপনি এটা বুঝতে নিশ্চিত. এটা দিয়ে জগাখিচুড়ি না করতে সতর্ক থাকুন বা অন্য কিছু সঠিকভাবে চালানো হবে না. আর এই চ্যালেঞ্জ বাল্ক জন্য আপনি সত্যিই বলছি dictionary.c পরিবর্তন করতে. আমরা আপনাকে দিতে যাচ্ছেন অভিধানে 140,000 শব্দ. আমরা আপনাকে একটি পাঠ্য দিতে যাচ্ছেন ঐ শব্দ আছে যে ফাইল, এবং আমরা আপনার সংগঠিত করতে সক্ষম হতে চান একটি হ্যাশ টেবিল বা একটি trie সেগুলি আমরা বানান করার অনুরোধ জানানো হলে কারণ আপনি বানান হন তাহলে কল্পনা check-- হোমারের ওডিসি মত চেক. এই বিশাল, বিশাল পরীক্ষা মত. প্রতি একক তাহলে ভাবুন শব্দ আপনি চেহারা ছিল 140,000 মান একটি অ্যারের মাধ্যমে. যে সময় গ্রহণ করা হবে আপনার মেশিন চালানোর জন্য. আমরা আমাদের সংগঠিত করতে চান সেজন্য আরো দক্ষ ডাটা স্ট্রাকচার মধ্যে তথ্য যেমন একটি হ্যাশ টেবিল বা একটি trie হিসাবে. এবং তারপর আপনাকে বলছি ধরনের পারেন আপনি এক্সেস অনুসন্ধান যখন জিনিষ আরো সহজে এবং আরও দ্রুত. আর তাই দুর্ঘটনায় সমাধান করতে সতর্কতা অবলম্বন করা আবশ্যক. আপনি একটি গুচ্ছ পেতে যাচ্ছেন উ: এটা দিয়ে শুরু শব্দের আপনি একটি গুচ্ছ শব্দ পেতে যাচ্ছেন যে আপনার উপরে বি দিয়ে শুরু কেমনভাবে বলছি তা সমাধান করতে. সম্ভবত আরও আছে দক্ষ হ্যাশ ফাংশন শুধু প্রথম অক্ষর বেশী কিছু, এবং যাতে আপনি আপ এর বলছি ধরনের আপনি চান যাই হোক না কেন. হতে পারে আপনি যোগ করতে চান একসাথে সব অক্ষর. হতে পারে আপনি অদ্ভুত কিছু পছন্দ করতে চান অক্ষর সংখ্যা অ্যাকাউন্ট থেকে, যাই হোক. আপনি কি করতে চান কিভাবে আপনি বলছি পর্যন্ত. যদি আপনি যদি একটি হ্যাশ টেবিল করতে চান আপনি সম্পূর্ণভাবে আপ, একটি trie চেষ্টা করতে চান. আমি সময় যে এগিয়ে আপনাকে সতর্ক করবে Trie সাধারণত একটি বিট আরো কঠিন অনেক আছে মাত্র কারণ আরো পয়েন্টার ট্র্যাক রাখতে. কিন্তু সম্পূর্ণই আপনাকে বলছি পর্যন্ত. এটা অনেক বেশী কার্যকর অধিকাংশ স্থানেই. আপনি সত্যিই রাখতে সক্ষম হতে চান আপনার পয়েন্টার সব সম্পর্কে অবগত. মত একই জিনিস আমি এটাই ছিল যে. যখন আপনি সন্নিবেশ করার চেষ্টা করছেন একটি হ্যাশ টেবিল মধ্যে মান বা মুছে ফেলা, আপনি আছেন তা নিশ্চিত করুন সত্যিই অবগত থাকার সবকিছু কারণ যেখানে এটা আমি যদি সত্যিই সহজ শব্দ, অ্যান্ডি মত সন্নিবেশ করার চেষ্টা করছে. এর ঠিক যে একটি চলুন শুরু করা যাক বাস্তব শব্দ, শব্দ, অ্যান্ডি, একটি শব্দের একটি দৈত্য তালিকা মধ্যে. আমি শুধু ওয়ালেট-এ সঞ্চয় করতে ঘটতে হলে একটি পয়েন্টার ভুল, ওহো, সম্পূর্ণতা সেখানে যায় আমার লিঙ্ক তালিকা বাকি. এখন শুধুমাত্র শব্দ আমি আছে অ্যান্ডি হয়, এবং এখন অন্য কথায় সব অভিধান হারিয়ে হয়েছে. আর তাই যদি আপনি নিশ্চিত করতে চাই আপনার পয়েন্টার সব ট্র্যাক রাখতে অন্যথায় আপনাকে পেতে যাচ্ছেন আপনার কোড মধ্যে বিপুল সমস্যার. ধাপে ধাপে সাবধানে সেটা আঁকা. এটা মনে করার এটা অনেক সহজ করে তোলে. এবং সর্বশেষে, আপনি সক্ষম হতে চান আপনার প্রোগ্রাম আপনার কর্মক্ষমতা পরীক্ষা বড় বোর্ডে. আপনাকে বলছি লাগবে, যদি এই মুহূর্তে CS50 এ চেহারা, আমরা বড় বোর্ড বলা কি আছে. এটা দ্রুততম স্কোর শীট CS50 এর সব জুড়ে চেক বার বানান এই মুহূর্তে, আমি 10 মত শীর্ষ মনে বার আমি তাদের আট কর্মী মনে হয়. আমরা সত্যিই আপনাকে বলছি আমাদের বীট করতে চান. আমাদের সমস্ত বাস্তবায়ন করার চেষ্টা করা হয়েছে সম্ভব দ্রুততম কোড. আমরা আপনাকে বলছি চ্যালেঞ্জ করার চেষ্টা করতে চান আমাদের এবং আমাদের সব চেয়ে দ্রুত বাস্তবায়ন পারেন. আর তাই এই সত্যিই হয় আমরা যে প্রথমবার আপনাকে বলছি জিজ্ঞাসা একটি pset করতে যে আপনি কি সত্যিই যাই হোক না কেন পদ্ধতিতে নির্বাচন করতে পারবেন তুমি চাও. আমি সবসময় এই আরো সমগোত্রীয় বলে একটি বাস্তব জীবনের সমাধান করার জন্য, ডান? আমি আরে, আমি আপনি এই কাজ করতে হবে, বলতে. আমার জন্য এই আছে যে একটি প্রোগ্রাম তৈরি করুন. আপনি চান তবে এটা কি. আমি শুধু আমি দ্রুত করতে চান না. যে এই সপ্তাহের জন্য আপনার চ্যালেঞ্জ. আপনাকে বলছি, আমরা চলুন আপনি একটি টাস্ক দিতে. আমরা আপনাকে একটি চ্যালেঞ্জ দিতে যাচ্ছেন. এবং তারপর এটি আপনাকে বলছি আপ এর সম্পূর্ণ ঠিক জিনিসটা দ্রুততম এবং সবচেয়ে কি কার্যকর উপায় এই বাস্তবায়ন. হ্যা? শ্রোতা: আমরা যদি অনুমতি আছে দ্রুত উপায়ে গবেষণা চেয়েছিলেন আমরা কি করতে পারি, অনলাইন হ্যাশ টেবিল করতে যে কারোর কোড cite? Andi Peng: হ্যা, তা সম্পূর্ণই জরিমানা. তাই আপনাকে বলছি পড়তে হলে বৈশিষ্ট, একটি লাইন আছে আপনাকে বলছি বলেছেন যে ফটকা খেলা হ্যাশ গবেষণা করতে সম্পূর্ণ বিনামূল্যে কি হয় কিছু ফাংশন দ্রুততর হ্যাশ ফাংশন হিসাবে মাধ্যমে জিনিষ চালানোর আপনি যে কোড cite যতদিন. তাই কিছু লোক আগে থেকেই আছে দ্রুত উপায় মূর্তিযুক্ত আউট দ্রুত এর, বানান চেকারস করছেন তথ্য সংরক্ষণের উপায়. পুরোটাই আপনাকে বলছি আপনি আপ যদি ঠিক আছে, শুধু যে নিতে চান? আপনি উদ্ধৃত করছি তা নিশ্চিত করুন. চ্যালেঞ্জ এখানে সত্যিই আমরা পরীক্ষা করার চেষ্টা করছেন যে আপনি জানেন যে, এমনটা নিশ্চিত করা হয় আপনার উপায় কাছাকাছি পয়েন্টার. যতটা আপনি বাস্তবায়নের হিসাবে প্রকৃত হ্যাশ ফাংশন এবং মত সঙ্গে উত্ক্রান্ত গণিত যে কাজ করতে, আপনাকে বলছি গবেষণা করতে পারেন যাই হোক না কেন পদ্ধতি অনলাইন আপনাকে বলছি চান. হ্যা? শ্রোতা: আমরা শুধু cite পারেন [শ্রবণাতীত] ব্যবহার করে? Andi Peng: হ্যা. আপনি ঠিক করতে পারেন, আপনার মন্তব্যে, আপনি, ওহ, ভালো cite পারেন সাদা মাটা থেকে নেওয়া, জানা কথা, সাদা মাটা, হ্যাশ ফাংশন. কারো কোন প্রশ্ন আছে? আমরা আসলে breezed আজ বিভাগের মাধ্যমে. আমি এখানে আপ করা হবে পাশাপাশি প্রশ্নের উত্তর. এছাড়াও, আমি আগেই বলেছি, অফিস ঘন্টার রাতের এবং আগামীকাল. এই সপ্তাহে আসলে বৈশিষ্ট সুপার সহজ এবং পড়তে সুপার সংক্ষিপ্ত. আমি শুধু একটি বর্ণন গ্রহণের সুপারিশ করবে এটা সম্পূর্ণতা পড়বেন. আর, Zamyla আসলে আপনি পদচারনা ফাংশন প্রতিটি মাধ্যমে আপনি বাস্তবায়ন করতে হবে, এবং তাই এটা কিভাবে সবকিছু করতে খুব, খুব স্পষ্ট. শুধু নিশ্চিত করুন যে আপনি আছেন না করতে পয়েন্টার সম্পর্কে অবগত থাকার. এটি একটি খুব চ্যালেঞ্জিং pset হয়. এটা ভালো, কারণ প্রতিদ্বন্দ্বিতা না ওহ, ধারণা আরও অনেক কিছু হয় অনুমোদিত, অথবা আপনি শিখতে হবে পথ এত নতুন সিনট্যাক্স আপনি শেষ pset জন্য করেনি যে. এই pset কঠিন, কারণ তাই অনেক পয়েন্টার আছে, এবং তারপর এটি একবার খুব, খুব সহজ আপনি না পাবে আপনার কোড মধ্যে একটি বাগ আছে যে বাগ যেখানে এটি. আর তাই সম্পূর্ণ এবং আপনি কহা বিশ্বাস বলছি আমাদের [শ্রবণাতীত] বীট পাবে বানানের. আমি আসলে না কোনো লিখিত খনি আছে এখনো, কিন্তু আমি আমার লেখার ওপর আছি. আপনি লেখার সময় তাই পুলিশের আমি খনি লেখা হবে. আমি করতে চেষ্টা করতে যাচ্ছি খনি পুলিশের তুলনায় দ্রুততর. আমরা দ্রুততম এক হয়েছে যারা দেখতে পাবেন. আর হ্যা, আমি সব দেখতে হবে মঙ্গলবার আপনাকে বলছি. আমি একটি pset কর্মশালার মত এক ধরনের চালানো হবে. সেকশনস সব এই সপ্তাহে, pset কর্মশালা হয় তাই আপনাকে বলছি সুযোগ প্রচুর আছে সাহায্যের জন্য, অফিসে ঘন্টা হিসাবে সবসময়, এবং আমি সত্যিই অপেক্ষায় থাকলাম আপনার ছেলেরা 'কোড সব পড়া. আমি এখানে আপনি যদি ক্যুইজ আপ আছে বলছি যারা পেতে আসতে চান. এখানেই শেষ.