[সঙ্গীত বাজাচ্ছি] ডগ লয়েড: ঠিক আছে, তাই অবশ্যই এই বিন্দু, আমরা সি বেসিক অনেক আবৃত করেছি আমরা, ভেরিয়েবল, অ্যারে সম্পর্কে অনেক জানেন পয়েন্টার, সব যে ভাল জিনিস. যারা সব ধরণের নির্মিত হয় এ, মৌলিক হিসাবে দেখতে কিন্তু আমরা ঠিক আছে, আরো কিছু করতে পারি? আমরা কিছু একত্রিত করতে পারেন একসঙ্গে আকর্ষণীয় উপায়ে. আর তাই এর শুরু করা যাক, চলুন না যে সি আমাদের দেয়, তা থেকে শাখাতেও এবং আমাদের নিজস্ব তথ্য তৈরি করতে শুরু এই বিল্ডিং ব্যবহার কাঠামো একসাথে ব্লক কিছু করতে দরকারী, সত্যিই মূল্যবান. আমরা এটা করতে পারেন একটি উপায় সংগ্রহের বিষয়ে কথা বলার জন্য. সুতরাং এ পর্যন্ত আমরা তথ্য এক ধরনের ছিল করেছি সংগ্রহের প্রতিনিধিত্বমূলক জন্য কাঠামো এর মান, একই মানের মত. এটা একটা অ্যারে হবে. আমরা পূর্ণসংখ্যার সংগ্রহের আছে, বা তাই অক্ষর এবং সংগ্রহের. স্ট্রাকচার একটি তথ্য সাজানোর তথ্য সংগ্রহের জন্য কাঠামো, কিন্তু এটা মান ভালো সংগ্রহের জন্য নয়. এটি সাধারণত বিভিন্ন ধরনের তথ্য দ্রবণ একসঙ্গে একটি একক বাক্সের ভিতরে. কিন্তু এটি নিজে না চেন একসাথে ব্যবহার বা একসাথে একই সংযোগ একটি অ্যারের মত জিনিস. অ্যারে জন্য মহান উপাদান সন্ধান, কিন্তু রিকল এটা খুব কঠিন যে একটি অ্যারের মধ্যে সন্নিবেশ করতে, আমরা এ ঢোকাতে করছি, যদি না যে অ্যারে খুব শেষে. আর সবচেয়ে ভাল উদাহরণ আমি আছে যে জন্য সন্নিবেশ ধরণের. আপনি যদি আমাদের ভিডিও প্রত্যাহার হলে সন্নিবেশ সাজানোর উপর, অনেক ছিল ব্যয় হচ্ছে জড়িত উপাদান কুড়ান, এবং তাদের নামান কিছু মাপসই উপায় আউট আপনার অ্যারের মধ্যম মধ্যে. অ্যারে এছাড়াও অন্য ভোগা সমস্যা নেই, যা অনমনীয়তা হয়. আমরা একটি অ্যারে ডিক্লেয়ার করার সময়, আমরা এটা এক শট পেতে. আমরা আমি চাই, বলতে পেতে এই অনেক উপাদান. 100 হতে পারে, এটা হতে পারে 1,000 হতে, এটা হতে পারে X ব্যবহারকারী একটি সংখ্যা যে যেখানে X হতে একটি প্রম্পটে বা নির্দেশে আমাদের দিয়েছেন লাইন. কিন্তু আমরা শুধুমাত্র এটা এক শট পেতে, আমরা আমি আসলে, তারপর ওহ বলতে পাবেন না 101 প্রয়োজন, অথবা আমি এক্স প্লাস 20 প্রয়োজন. খুব দেরি হয়ে গেছে, ইতিমধ্যে আমরা ঘোষণা করেছি অ্যারে, এবং আমরা 101 বা পেতে চান তাহলে এক্স প্লাস 20, আমরা ঘোষণা করতে হবে একটি সম্পূর্ণরূপে ভিন্ন অ্যারের, অ্যারে সব উপাদান কপি ওভার, এবং তারপর আমরা যথেষ্ট আছে. এবং আমরা আবার ভুল হয়, তাহলে কি, কি আমরা আসলে 102, বা এক্স প্লাস 40 প্রয়োজন হলে, আমরা আবার এই কাজ করতে হবে. তাই তারা খুব অনমনীয় আছেন আমাদের তথ্য resizing জন্য, কিন্তু আমরা একসাথে কিছু একত্রিত হলে আমরা ইতিমধ্যে করেছি যে বুনিয়াদি পয়েন্টার এবং কাঠামো সম্পর্কে শিখেছি, বিশেষ করে ডাইনামিক মেমরি ব্যবহার malloc সঙ্গে বরাদ্দ, আমরা এইসব একসঙ্গে টুকরা করা যাবে একটি নতুন তথ্য কাঠামো তৈরি করতে একেলা আমরা কথাই পারে তালিকায় লিঙ্ক যে আমাদের হত্তয়া করতে পারবেন এবং মান একটি সংকলন সঙ্কুচিত এবং আমরা কোনো বরবাদ স্থান থাকবে না. তাই আবার, আমরা এই ধারণা কল, এই ধারণা, একটি লিঙ্ক তালিকা. বিশেষ করে, এই ভিডিওতে আমরা আছেন একেলা লিঙ্ক তালিকা সম্পর্কে কথা বলা, এবং তারপর অন্য একটি ভিডিও আমরা আলোচনা করব সম্পর্কে দোকর লিঙ্ক তালিকা, যা এখানে একটি থিম মাত্র একটি পরিবর্তন. কিন্তু একটি একেলা লিঙ্ক তালিকা নোড গঠিত হয়, নোড শুধু একটি বিমূর্ত term-- হচ্ছে এটা আমি আহ্বান করছি শুধু কিছু যে এক ধরনের গঠন, মূলত, আমি আছি? এটা শুধু ব্যাকটেরিয়ার ক্ষেত্রেই নোড এবং এই কল করা যাচ্ছে নোড দুই সদস্য, বা দুটি ক্ষেত্র রয়েছে. এটি সাধারণত একটি তথ্য আছে পূর্ণসংখ্যা, একটি অক্ষর ভাসা, বা অন্য কিছু ডাটা টাইপ হতে পারে আপনি একটি টাইপ Def সাথে সংজ্ঞায়িত করেছি যে. এবং এটি একটি পয়েন্টার রয়েছে একই ধরণের আরেকটি নোড. তাই আমরা ভেতরে দুটি জিনিস আছে এই নোড, তথ্য এবং একটি পয়েন্টার অন্য একটি নোড. আর আপনি ঠাহর করা শুরু হলে এই, আপনি এটি সম্পর্কে চিন্তা করতে পারেন নোড একটা চেইন মত যে একসাথে যুক্ত হয়. আমরা প্রথম নোড আছে, এটা তথ্য, এবং একটি পয়েন্টার রয়েছে রয়েছে যা দ্বিতীয় নোড, যাও তথ্য, এবং তৃতীয় নোডের একটি পয়েন্টার. আর তাই যে আমরা এটি একটি কল কেন লিঙ্ক তালিকা, তারা একসাথে যুক্ত করছি. এই বিশেষ কী নোড কাঠামো অনুরূপ? ওয়েল, আপনি আমাদের ভিডিও থেকে প্রত্যাহার করা হলে টাইপ Def সাথে, কাস্টম ধরনের সংজ্ঞা, আমরা একটি কাঠামো নির্ধারণ করতে পারবেন এবং এই মত একটি কাঠামো নির্ধারণ টাইপ করুন. struct sllist tyepdef, এবং তারপর আমি আছি ইচ্ছামত এখানে শব্দ মান ব্যবহার সত্যিই কোন ডাটা টাইপ ইঙ্গিত. আপনি, একটি পূর্ণসংখ্যা বা ভাসা পারত আপনি যাহা চান হতে পারে. এটা শুধু সীমিত নয় ইন্টিজার, বা ওই জাতীয় কিছু. তাই মান শুধু একটি অবাধ হয় তারপর ডাটা টাইপ, এবং একটি পয়েন্টার একই ধরণের আরেকটি নোডের. এখন, একটু ধরা আছে এখানে একটি কাঠামো সংজ্ঞা সঙ্গে যখন এটি একটি স্বয়ংসম্পূর্ণ উল্লেখ গঠন করে. আমি একটি অস্থায়ী আছে আমার কাঠামো জন্য নাম. প্রতিদিন আমি শেষে স্পষ্টতই এটা কল করতে চান SLL নোড, যে শেষ পর্যন্ত নতুন আমার টাইপ সংজ্ঞা অংশ নাম, কিন্তু আমি SLL নোড ব্যবহার করতে পারবেন না এই মাঝখানে. কারণ হচ্ছে, আমি না আছে একটি টাইপ বলা SLL নোড তৈরি আমি এখানে এই চূড়ান্ত বিন্দু আঘাত না হওয়া পর্যন্ত. যে বিন্দু পর্যন্ত, আমি আছে অন্য ভাবে এই ডাটা টাইপ পড়ুন. আর এই একটি স্বয়ংসম্পূর্ণ উল্লেখ ডাটা টাইপ. এটা; একটি একটি ডাটা টাইপ এর একটি তথ্য রয়েছে যে কাঠামো, এবং অন্য একটি পয়েন্টার একই ধরনের কাঠামো. তাই আমি বোঝাতে সক্ষম হতে হবে এই ডাটা টাইপ অন্তত সাময়িকভাবে, তাই এটি একটি অস্থায়ী প্রদান struct sllist নাম আমার তারপর আমি একটি চান বলতে পারবেন অন্য struct sllist পয়েন্টার, একটি struct sllist তারকা, এবং তারপর আমি সংজ্ঞা সম্পন্ন করেছেন পরে, আমি এখন এই ধরনের একটি SLL নোড কল করতে পারেন. আপনি সেখানে দেখতে সুতরাং যে কেন এখানে একটি অস্থায়ী নাম, কিন্তু এখানে একটি স্থায়ী নাম. কখনও কখনও আপনি দেখতে হতে পারে কাঠামো সংজ্ঞা, উদাহরণস্বরূপ, যে হয় না স্ব উল্লেখ, যে এখানে একটি সুনির্দিষ্টভাবে নাম আছে কি না. এটা শুধু typedef struct বলতে হবে কোঁকড়া বক্রবন্ধনী খুলুন এবং তারপর সংজ্ঞায়িত. যদি আপনি কিন্তু struct স্ব উল্লেখ, এই এক হিসাবে, আপনি একটি নির্দিষ্ট করতে হবে অস্থায়ী প্রকার নাম. কিন্তু শেষ পর্যন্ত, এখন আমরা এই কাজ করেছি যে, আমরা শুধু পাঠাতে পারেন এই নোডের, এই ইউনিট, উদ্দেশ্যে SLL নোড হিসাবে এই ভিডিওটি বাকি. ঠিক আছে, তাই আমরা কিভাবে জানি একটি লিঙ্ক তালিকা নোড নির্মাণ. আমরা সংজ্ঞায়িত কিভাবে জানেন একটি লিঙ্ক তালিকা নোড. এখন, আমরা শুরু করতে যাচ্ছেন, তাহলে তথ্য সংগ্রহ করার জন্য তাদের ব্যবহার, অপারেশন দুয়েক আছে আমরা বুঝতে এবং এর সাথে কাজ করতে হবে. আমরা কীভাবে তৈরি করতে হয় তা আপনার জানা প্রয়োজন পাতলা বায়ু থেকে একটি লিঙ্ক তালিকা. কোন তালিকায় আগে থেকেই আছে, আমরা শুরু করতে চাই. সুতরাং আমরা সক্ষম হতে হবে একটি লিঙ্ক তালিকা তৈরি করতে, আমরা সম্ভবত আপনাকে প্রয়োজন লিঙ্ক তালিকা মাধ্যমে আমরা খুঁজছেন একটি উপাদান খুঁজে পেতে. আমরা প্রবেশ করাতে সক্ষম হতে হবে তালিকার মধ্যে নতুন কিছু, আমরা আমাদের তালিকা প্রসারণ পাবে চান. এমনিভাবে পাবে চান আমাদের তালিকা থেকে কিছু মুছে ফেলতে, আমরা আমাদের তালিকায় সঙ্কুচিত করতে সক্ষম হতে চান. আর শেষে আমাদের প্রোগ্রাম, বিশেষত আমরা যে প্রত্যাহার হলে পরিবর্তনশীল মেমরি বণ্টন সাধারণত এই তালিকা নির্মাণ, আমরা যে সমস্ত মেমরি মুক্ত করতে চান আমরা এটা নিয়ে কাজ সম্পন্ন হলে. আর তাই আমরা একটি মুছে ফেলতে সক্ষম হতে হবে এক সমগ্র লিঙ্ক তালিকা ছোঁ ব্যর্থ. সুতরাং আসুন দিয়ে যেতে দেওয়া এই অপারেশন কিছু এবং আমরা তাদের ঠাহর পারে, বিশেষভাবে pseudocode কোড কথা. সুতরাং আমরা একটি তৈরি করতে চান তালিকায় যুক্ত, তাই হয়তো আমরা একটি ফাংশন নির্ধারণ করতে চান এই প্রোটোটাইপ সঙ্গে. SLL নোড তারকা, তৈরি, এবং আমি পার করছি এক যুক্তি, কিছু অবাধ তথ্য কিছু অবাধ ডাটা টাইপ, আবার টাইপ করুন. কিন্তু আমি এই কাজ করা উচিত returning-- করছি একটি একেলা, আমাকে একটি পয়েন্টার ফেরত লিঙ্ক তালিকা নোড. আবার, আমরা তৈরি করার চেষ্টা করছেন পাতলা বায়ু থেকে একটি লিঙ্ক তালিকা, তাই আমি একটি পয়েন্টার প্রয়োজন যখন আমি কাজ করছি যে তালিকা. সুতরাং এখানে ধাপগুলি কি হয়? ওয়েল, আমি সর্বপ্রথম আছি কাজ করতে যাচ্ছেন পরিবর্তনশীল হয় একটি নতুন নোডের জন্য স্থান বরাদ্দ. আবার, আমরা পাতলা আউট এটি তৈরি করছি এয়ার, তাই আমরা এটা জন্য malloc স্থান প্রয়োজন. এবং অবশ্যই, অবিলম্বে আমরা malloc পর, আমরা সবসময় নিশ্চিত করুন যে আপনি চেক আমাদের পয়েন্টার আমরা ফিরে নাল পাইনি. আমরা চেষ্টা যদি কারণ ও একটি নাল পয়েন্টার এলইডি, আমরা একটি ভোগে চলুন segfault এবং আমরা এটা চাই না. তারপর আমরা ক্ষেত্রের পূরণ করতে চান, আমরা মান ক্ষেত্রের আরম্ভ করতে চান এবং পরের ক্ষেত্রের আরম্ভ. এবং তারপর আমরা শেষ পর্যন্ত হিসাবে চাচ্ছি চান আমরা চাই indicates-- ফাংশন প্রোটোটাইপ একটি SLL নোডের একটি পয়েন্টার ফেরত. তাই কি এই চাক্ষুষরূপে মত বানাতে? আচ্ছা, প্রথম আমরা পরিবর্তনশীল চলুন একটি নতুন SLL নোডের জন্য স্থান বরাদ্দ করা, তাই আমরা যে malloc-- দৃশ্যগত উপস্থাপনা নোড আমরা শুধু তৈরি. এবং আমরা নিশ্চিত করতে পরীক্ষা এটা, এই ক্ষেত্রে নাল না ছবি হবে না এটা নাল ছিল প্রকটিত, আমরা আর স্মৃতি ফুরিয়ে যেত তাই আমরা সেখানে যেতে ভাল. তাই এখন আমরা সি পইঠা করছি, নোড মান ক্ষেত্রের আরম্ভ. ওয়েল, এই ফাংশন উপর ভিত্তি করে আমি এখানে ব্যবহার করছি কল আমি 6 প্রেরণ করতে ইচ্ছুক মত, দেখে মনে হচ্ছে তাই আমি মান ক্ষেত্রে 6 হবে. এখন, পরের ক্ষেত্রের আরম্ভ. ওয়েল, আমি কি সেখানে কাজ করতে যাচ্ছি, কিছুই ঠিক আছে, পরের নেই, এই তালিকায় শুধুমাত্র জিনিস. সুতরাং তালিকায় পরবর্তী জিনিস কি? এটা ঠিক আছে, কিছু করার নির্দেশ করা উচিত নয়. কিছুই তাই কি, অন্য সেখানে আছে আমরা যে জানি ধারণা কিছুই এর কিছুই করার পয়েন্টার? এটা হতে পারে আমরা চাই হওয়া উচিত সেখানে একটি নাল পয়েন্টার রাখা, এবং আমি নাল প্রতিনিধিত্ব করব , হিসাবে শুধু একটি লাল বক্স পয়েন্টার আমরা বেশি দূর যাওয়া যাবে না. আমরা একটু পরে দেখতে পাবেন, আমরা শেষ পর্যন্ত চেইন থাকবে তীরচিহ্ন সংযোগ একসঙ্গে এই নোডের, কিন্তু যখন আপনি আঘাত লাল বক্স, যে, নাল আমরা, আরও কোনো যেতে পারে না যে তালিকার শেষ. এবং সর্বশেষে, আমরা শুধু চাই এই নোডের একটি পয়েন্টার আসতে. তাই আমরা নতুন ডাকবো, এবং নতুন আসতে হবে তাই এটি ব্যবহার করা যেতে পারে যাই হোক না কেন ফাংশন এটি নির্মিত. তাই সেখানে আমরা যেতে, আমরা এককভাবে তৈরি করেছি পাতলা বায়ু আউট লিঙ্ক তালিকা নোড, এবং এখন আমরা সঙ্গে কাজ করতে পারেন একটি তালিকা আছে. এখন, ইতিমধ্যে আমরা বলতে দিন বৃহৎ চেইন আছে, এবং আমরা তা কিছু খুঁজতে চান. আর আমরা যাচ্ছে যে একটি ফাংশন চান সত্য বা মিথ্যা ফিরে নির্ভর করতে একটি মান যে তালিকায় বিদ্যমান কিনা দেখো. একটি ফাংশন প্রোটোটাইপ, বা যে ফাংশন জন্য ঘোষণা, আপাততঃ এটি bool মত চেহারা, এবং পারে তারপর আমরা দুটি আর্গুমেন্ট প্রেরণ করতে ইচ্ছুক. প্রথম, একটি পয়েন্টার লিঙ্ক তালিকার প্রথম উপাদান. এই কমান্ডের সাহায্যে আপনি হবে আসলে কিছু হয় সবসময় ট্র্যাক রাখতে চান, এবং আসলে কিছু হতে পারে যে এমনকি আপনি একটি বিশ্বব্যাপী পরিবর্তনশীল রাখা. আপনি একটি তালিকা তৈরি করার পরে, সবসময় আপনি, খুব ট্র্যাক রাখতে চান তালিকার প্রথম উপাদান. আপনি অন্য সব পাঠাতে পারেন যে ভাবে শুধু চেইন অনুসরণ করে উপাদান, পয়েন্টার রাখা করেও প্রতি একক উপাদান অক্ষত. আপনি শুধুমাত্র প্রথম ট্র্যাক রাখা প্রয়োজন এক তারা সব একসঙ্গে শৃঙ্খলিত করছি. এবং তারপর দ্বিতীয় বিষয় আমরা আবার পার করছি ইচ্ছামত some-- হয় যাই হোক না কেন আমরা ডাটা টাইপ করছি সেখানে খুঁজছেন ভেতরে হয় আশা নোড তালিকায় এক. সেজন্য পদক্ষেপ কি হয়? ওয়েল, আমরা কি প্রথম জিনিস আমরা একটি আড়াআড়ি পয়েন্টার তৈরি তালিকা মাথা প্রতি নির্দেশ. ওয়েল, কেন যে, আমরা ইতিমধ্যে আমরা কি পারি না তালিকা মাথা এ একটি ইশারা আছে, কেন আমরা শুধু চারপাশে যে এক সরাতে না? ওয়েল, আমি শুধু বলেছি, এটা আমাদের জন্য সত্যিই গুরুত্বপূর্ণ সবসময় ট্র্যাক রাখতে তালিকার প্রথম উপাদান. আর তাই এটি আসলে ভাল যে একটি ডুপ্লিকেট তৈরি করতে, এবং তাই আমরা কখনও কাছাকাছি সরানো যে ব্যবহার ঘটনাক্রমে দূরে সরানো, বা সর্বদা আমরা যে কিছু সময়ে একটি ইশারা আছে ডান তালিকার প্রথম উপাদান. সুতরাং এটি একটি তৈরি করতে ভাল আমরা সরাতে ব্যবহার করে দ্বিতীয় এক. তারপর আমরা শুধু কিনা তুলনা যে নোড এ মান ক্ষেত্র এটা যদি আমরা খুঁজছেন, এবং তা হল না, আমরা শুধু পরবর্তী নোডের অগ্রসর. এবং আমরা যে কাজ রাখতে বারবার, আমরা হয় খুঁজে না পাওয়া পর্যন্ত উপাদান, বা আমরা আঘাত শূন্য আমরা শেষে পৌঁছে গেছেন এবং তালিকার এটা নেই. এই আশা একটি সফল হওয়া উচিত আপনাকে ঠিক রৈখিক অনুসন্ধান, আমরা শুধু এটা প্রতিলিপি নির্মাণ করছেন একটি একেলা লিঙ্ক তালিকা গঠন পরিবর্তে এটি কি একটি অ্যারে ব্যবহার করে এর. তাই এখানে একটি উদাহরণ একটি একেলা লিঙ্ক তালিকা. এই এক গঠিত পাঁচটি নোড, এবং আমরা আছে প্রধান একটি পয়েন্টার তালিকায় বলা হয় যা তালিকা. আমরা যা করতে চাই প্রথম জিনিস আবার, যে ট্র্যাভেরসাল পয়েন্টার তৈরি. তাই আমরা এখন দুই পয়েন্টার আছে একই জিনিস যে বিন্দু. এখন, এখানে লক্ষ্য আমি না trav জন্য কোনো স্থান malloc আছে. আমি trav malloc সমান বলে না কিছু যে নোড ইতিমধ্যে বিদ্যমান স্মৃতিতে যে স্থান আগে থেকেই আছে. তাই আমি আসলে করছি সব হয় এটা অন্য পয়েন্টার তৈরি. আমি একটি অতিরিক্ত mallocing করছি না স্থান, শুধু এখন দুই পয়েন্টার আছে একই জিনিস প্রতি নির্দেশ. সুতরাং 2 আমি চাই কি? না, ভাল, তাই আমি আছি পরবর্তী এক থেকে সরানো যাচ্ছে. তাই মূলত আমি বলতে চাই, trav পরের trav সমান. আমি কোন, চাই কি 3. তাই আমি যেতে অবিরত মাধ্যমে, অবশেষে পর্যন্ত আমি থাকবো কি যা 6 পেতে ফাংশন কল উপর ভিত্তি জন্য আমি উপরের আছে সেখানে, এবং তাই আমি কাজ করছি. এখন, উপাদান আমি কি করছি খুঁজছেন, তালিকায় না থাকে এটা এখনও কাজ করে যাচ্ছে? ওয়েল, তালিকায় যে লক্ষ্য এখানে, subtly বিভিন্ন হয় এবং এই যে অন্য জিনিস লিঙ্ক তালিকা সঙ্গে গুরুত্বপূর্ণ, আপনি সংরক্ষণ করতে হবে না তাদের কোনো নির্দিষ্ট অনুক্রম. যদি আপনি চান আপনি যা করতে পারেন, কিন্তু আপনি ইতিমধ্যে লক্ষ্য করে হতে পারে আমরা অবগত থাকার করছি না যে আমরা কি নম্বর উপাদান থাকে. আর যে কেউ ট্রেড সাজানোর যে আমরা অ্যারে আয়াত লিঙ্ক তালিকা আছে, আমরা আছে না হয় আর র্যান্ডম এক্সেস. আমরা শুধু আমি চাই, বলতে পারবেন না 0th উপাদান যেতে, অথবা আমার অ্যারের 6th উপাদান, যা আমি একটি অ্যারের মধ্যে নির্বাচন করতে পারবেন. আমি যেতে চাই না বলতে পারেন 0th উপাদান, বা 6 ষ্ঠ উপাদান, অথবা আমার লিঙ্ক তালিকা 25th উপাদান, তাদের সঙ্গে যুক্ত কোন সূচক আছে. আর তাই এটি সত্যিই কোন ব্যাপার না আমরা যাতে আমাদের তালিকা সংরক্ষণ করে. যদি আপনি চান তাহলে অবশ্যই পারেন, কিন্তু আছে তারা প্রয়োজন কোন কারণে কোনো অনুক্রমে সংরক্ষণ করা. তাই আবার, এর চেষ্টা করা যাক এবং এই তালিকার মধ্যে 6 খুঁজে. ওয়েল, আমরা এ শুরু শুরুতে, আমরা 6 খুঁজে না এবং তারপর আমরা খোঁজার চালিয়ে 6, আমরা শেষ পর্যন্ত এখানে পেতে পর্যন্ত. নোডের তাই এই মুহূর্তে trav পয়েন্ট 8 ধারণকারী, এবং ছয় সেখানে নয়. তাই পরবর্তী পদক্ষেপ হবে পরের পয়েন্টার যেতে, তাই trav পরের trav সমান বলে. ওয়েল, trav পরের, দ্বারা নির্দেশিত সেখানে লাল বক্স, নাল হয়. তাই কোথাও আছে তাই এই সময়ে যেতে, ও আমরা পৌঁছে গেছেন যে শেষ করা যাবে লিঙ্ক তালিকার শেষে, এবং 6 সেখানে নয়. এবং তা ফিরে যেতে হবে এই ক্ষেত্রে মিথ্যা. ঠিক আছে, কিভাবে আমরা একটি নতুন সন্নিবেশ না লিঙ্ক তালিকায় নোড? সুতরাং আমরা তৈরি করতে পারব দাঁড়াতেই আউট একটি লিঙ্ক তালিকা, কিন্তু আমরা সম্ভবত করতে চান একটি চেইন নির্মাণ ও না স্বতন্ত্র তালিকার একটি গুচ্ছ তৈরি. আমরা এক তালিকায় আছে চান যে এটি বিভিন্ন নোডের একটি গুচ্ছ আছে একটি একক নোড সঙ্গে তালিকার একটি গুচ্ছ. তাই আমরা ঠিক তৈরি করে রাখতে পারবেন না ফাংশন আমরা এখন, আগে সংজ্ঞায়িত আমরা একটি মধ্যে সন্নিবেশ করতে চান যে ইতিমধ্যেই বিদ্যমান তালিকায়. এই ক্ষেত্রে তাই, আমরা চলুন দুটি আর্গুমেন্ট পাস, যে মাথার পয়েন্টার আমরা যোগ করতে চান যে তালিকা লিঙ্ক. এটা তাই কেন আবার, যে গুরুত্বপূর্ণ সবসময় আমরা যে কারণ, এটা ট্র্যাক রাখতে এটা সত্যিই একমাত্র উপায় আমরা এর পুরো তালিকা পড়ুন আছে শুধু প্রথম উপাদান একটি পয়েন্টার দ্বারা. সুতরাং আমরা একটি পাস করতে চান যে প্রথম উপাদান একটি পয়েন্টার, এবং যাই হোক না কেন আমরা মান তালিকায় যোগ করতে চান. এবং অবশেষে এই ফাংশন একটি পয়েন্টার ফেরত যাচ্ছে একটি লিঙ্ক তালিকা নতুন মাথা থেকে. এখানে জড়িত পদক্ষেপ কি কি? ওয়েল, শুধু তৈরি সঙ্গে মত, আমরা পরিবর্তনশীল বরাদ্দ করা প্রয়োজন একটি নতুন নোডের জন্য স্থান, এবং পরীক্ষা করা হবে নিশ্চিত আমরা মেমরি রান আউট না, আবার, আমরা malloc ব্যবহার করছেন কারণ. তারপর আমরা পূরণ করতে চান এবং, নোড সন্নিবেশ তাই সংখ্যা করা, যাই হোক না কেন Val নোডের মধ্যে, হয়. আমরা এ নোড সন্নিবেশ করতে চান লিঙ্ক তালিকা শুরুতে. একটি কারণ আছে যে আমি এই কাজ করতে চান, এবং এটা একটি দ্বিতীয় গ্রহণ মূল্য হতে পারে এখানে ভিডিও বিরতি, এবং আমি করতে চান কেন আমার মনে হয় একটি লিঙ্ক প্রারম্ভে সন্নিবেশ তালিকায়. আবার, আমি আগে উল্লেখ এটা সত্যিই না যে আমরা কোন এটি সংরক্ষণ করা হলে কোন ব্যাপার অর্ডার, তাই হয়ত যে একটি সূত্র. এবং আমরা যদি ঘটতে পারে কি দেখেছি চেয়েছিলেন চাচ্ছি বা শুধু এই একটি দ্বিতীয় থেকে আগে যখন আমরা চালু হয়েছে অনুসন্ধান মাধ্যমে আপনি কি হতে পারে দেখতে পারে আমরা চেষ্টা করা হয়েছে কিনা এরকম তালিকার শেষে সন্নিবেশ. আমরা একটি আছে না, কারণ তালিকার শেষে পয়েন্টার. তাই কারণ আমি চাই যে প্রারম্ভে সন্নিবেশ, আমি অবিলম্বে তা না করতে পারেন, কারণ হয়. আমি শুরুতে একটি ইশারা আছে, এবং আমরা একটি দ্বিতীয় একটি চাক্ষুষ এই দেখতে পাবেন. কিন্তু আমি শেষে সন্নিবেশ করতে চান তাহলে, আমি শুরুতে শুরু আছে সব পথ, তর্ক শেষ, এবং তারপর এটি কর্মপ্রণালী. সুতরাং যে যে অর্থ হবে তালিকার শেষে ঢোকাতে এন এর একটি হে হয়ে যায় অপারেশন, ফিরে যাচ্ছে আমাদের আলোচনায় গণনীয় জটিলতা. এটি এন অপারেশন, যেখানে একটি হে হতে চাই তালিকায় বড়, এবং বড় পেয়েছিলাম হিসাবে, এবং বড়, এটা আরো পরিণত করব এবং কিছু কর্মপ্রণালী আরো কঠিন শেষে উপর. কিন্তু এটা সবসময় সত্যিই সহজ শুরুতে কিছু ট্যাক, আপনি শুরুতে সবসময় করছি. এবং আমরা আবার এই একটি চাক্ষুষ দেখতে পাবেন. এবং তারপর আমরা একবার সম্পন্ন করে ফেলেছেন, একবার আমরা নতুন নোডের ঢোকানো থাকেন, আমরা আমাদের পয়েন্টার ফেরত চাই একটি লিঙ্ক তালিকা নতুন মাথা, যা আমরা এ ঢোকাতে করছি, যেহেতু শুরুতে, আসলে হবে আমরা শুধু তৈরি নোডের একটি পয়েন্টার. , এর এই ঠাহর করা যাক কারণ আমি এটা সাহায্য করব না. তাই এখানে আমাদের তালিকায়, এটা নিয়ে গঠিত চারটি উপাদান, একটি নোড, 15 ধারণকারী যা একটি নোডের স্থানটিকে 9 ধারণকারী যা 13 ধারণকারী একটি নোড স্থানটিকে, যা ধারণকারী একটি নোড স্থানটিকে নাল যা 10, তার পরের পয়েন্টার হিসেবে পয়েন্টার তাই যে তালিকার শেষ. সুতরাং আমরা একটি সন্নিবেশ করতে চান মূল্য 12 সঙ্গে নতুন নোড এই শুরুতে তালিকায়, আমরা কি করব? ওয়েল, আমরা প্রথমে স্থান malloc নোড, এবং তারপর আমরা সেখানে 12 করা. তাই এখন আমরা পৌঁছে গেছেন একটি সিদ্ধান্ত বিন্দু, ডান? আমরা একটি দম্পতি আছে পয়েন্টার যে আমরা পারা আমরা প্রথম যা এক সরানো উচিত, সরানো? আমরা 12 পয়েন্ট করা উচিত তালিকার নতুন প্রধান অথবা আমাকে মাফ, আমরা 12 করা উচিত তালিকার পুরানো মাথার দিকে নির্দেশ? অথবা আমরা বলতে হবে তালিকায় এখন 12 টায় শুরু হয়. একটি পার্থক্য আছে সেখানে, এবং আমরা পর্যবেক্ষণ করব সঙ্গে উভয় একটি দ্বিতীয় মধ্যে কি এ. কিন্তু এই একটি বাড়ে পার্শ্বদন্ডে জন্য মহান বিষয়, যা হল যে এক সংযুক্ত তালিকার সঙ্গে trickiest জিনিস পয়েন্টার ব্যবস্থা করা হয় সঠিক অনুক্রমে. আপনি যাতে বাইরে কিছু সরানো হলে, যদি আপনি দূর্ঘটনাক্রমে শেষ করা যাবে না তালিকার বাকি অনাথ. আর এখানে যে একটি উদাহরণ. সুতরাং আসুন ধারণা নিয়ে যেতে দিন র ভাল, আমরা মাত্র 12 তৈরি করেছি. আমরা 12 হতে যাচ্ছে জানি তালিকায় নতুন সর্বময় কর্তা এবং তাই কেন আমরা কেবল নোড়ো না তালিকায় পয়েন্টার সেখানে নির্দেশ. ঠিক আছে, তাই কি ভালো দেখায়. তাই এখন যেখানে 12 পরবর্তী বিন্দু আছে? আমি দৃশ্যত আমরা দেখতে পারেন, মানে এটা 15 থেকে নির্দেশ করবে, মানুষ হিসাবে এটা আমাদের জন্য সত্যিই সুস্পষ্ট. কিভাবে কম্পিউটার জানেন না? আমরা কিছু করতে হবে না আর 15 এর প্রতি নির্দেশ, ডান? আমরা 15 পড়ুন করার কোনো ক্ষমতা হারিয়ে ফেলেছি. আমরা নতুন তীর পরের সমান বলে না পারেন কিছু সেখানে কিছুই নেই. আসলে, আমরা এতিম করেছি তালিকার বাকি এমনটি করে, আমরা করেছি ঘটনাক্রমে শৃঙ্খল ভাঙ্গা. আর আমরা অবশ্যই তা করতে চাই না. তাই আসুন ফিরে যান এবং আবার চেষ্টা করা যাক. হয়তো ডান জিনিস করতে 12 এর পরের পয়েন্টার সেট করা হয় প্রথম তালিকার পুরানো মাথা থেকে, তারপর আমরা তালিকায় উপর স্থানান্তর করতে পারেন. এবং সত্য, যে হয় সঠিক অনুক্রমে আমরা যে আমরা যখন অনুসরণ করা প্রয়োজন একেলা লিঙ্ক তালিকা সঙ্গে কাজ. আমরা সবসময় সংযোগ স্থাপন করতে চান তালিকার মধ্যে নতুন উপাদান, আমরা যে ধরনের গ্রহণ আগে পরিবর্তন গুরুত্বপূর্ণ পদক্ষেপ যেখানে লিঙ্ক তালিকা প্রধান. আবার, যে যেমন একটি মৌলিক জিনিস, আমরা এটা সম্পর্কে অবগত হারাতে চাই না. তাই আমরা যে নিশ্চিত করতে চাই সবকিছু একসঙ্গে শৃঙ্খলিত আমরা যে পয়েন্টার সরানো আগে. আর তাই এই সঠিক অনুক্রমে হবে, যা তালিকায় 12 সংযোগ করা হয়, তারপর তালিকায় একটি 12 শুরু করে. আমরা তালিকায় 12 এ শুরু বলেন, যদি ও তারপর, তালিকায় 12 সংযোগ করার চেষ্টা আমরা ইতিমধ্যে কি দেখা করেছি. আমরা ভুল করে তালিকা হারান. ঠিক আছে, তাই আরও একটি জিনিস সম্পর্কে কথা বলার জন্য. আমরা কি পরিত্রাণ পেতে চান তাহলে একটি সম্পূর্ণ একযোগে তালিকায় যুক্ত? আবার, আমরা mallocing করছি এই সব স্থান, এবং তাই আমরা আমরা কাজ করছি যখন এটি মুক্ত করা প্রয়োজন. তাই এখন আমরা মুছে ফেলতে চান সমগ্র লিঙ্ক তালিকা. ওয়েল, আমরা কি করতে চান না? আমরা নাল পয়েন্টার পৌঁছে গেছেন, তাহলে আমরা অন্যথায়, শুধু মুছে, বন্ধ করতে চান তারপর তালিকার বাকি এবং আমার মুক্ত. তালিকার বাকি মুছে, এবং তারপর বর্তমান নোড মুক্ত. মত যে শব্দ আছে কি, কি কৌশল আমরা বললাম আছে সম্পর্কে পূর্বে মত যে শব্দ আছে? তারপর, অন্য সবাই মুছে ফিরে এসে আমাকে মুছে দিন. যে recursion, আমরা তৈরি করেছি একটি সামান্য বিট ছোট সমস্যা, আমরা সবাই মুছে বলছে অন্য, তাহলে আপনি আমাকে মুছে দিতে পারেন. এবং আরও রাস্তা নিচে, যে নোড অন্য সবাই মুছে, বলতে হবে. কিন্তু শেষ পর্যন্ত আমরা কিনবো তালিকায় নাল বিন্দু যেখানে, এবং যে আমাদের বেস কেস. তাই আসুন এই কটাক্ষপাত করা যাক, এবং এই কাজ করতে পারে কিভাবে. তাই এখানে আমাদের তালিকায়, এটা একই আমরা শুধু যে বিষয়ে কথা বলছি তালিকায় এবং ধাপ আছে. টেক্সট অনেক এখানে আছে কিন্তু আশা কল্পনা করতে সহায়তা করবে. সুতরাং আমরা থাকতে এবং আমি টানা আমাদের স্ট্যাকের ফ্রেম চিত্রণ আপ কল stacks এর উপর আমাদের ভিডিও থেকে, এবং আশা করছি এই সব একসঙ্গে ঘটছে তা আপনাকে দেখাতে হবে. তাই এখানে আমাদের pseudocode কোড এর. আমরা একটি নাল পৌঁছাতে হলে পয়েন্টার, অন্যথায়, বন্ধ তালিকার বাকি মুছে, তারপর বর্তমান নোড মুক্ত. তাই এই মুহূর্তে, তালিকার আমরা যে পয়েন্টার কথা প্রসঙ্গে 12 পয়েন্ট ধ্বংস. 12 একটি নাল পয়েন্টার হয় না, তাই আমরা করছি তালিকার বাকি মুছে যাচ্ছে. কি মুছে ফেলা হয় আমাদের বাকি জড়িত? হ্যাঁ, এটি একটি তৈরীর মানে বলার অপেক্ষা রাখে না, ধ্বংস কল 15 যে শুরুতে হয় আমরা ধ্বংস করতে চান তালিকার বাকি. তাই কল ধ্বংস 12 হোল্ড ধরনের হয়. এটা জন্য অপেক্ষা করছে, সেখানে বরফওয়ালা তার কাজ শেষ করতে, 15 ধ্বংস কল. ওয়েল, 15 একটি নাল পয়েন্টার নয়, এবং তাই এটা বলে যাচ্ছে, ঠিক আছে, ভাল, তালিকা বাকি মুছে দিন. তালিকার বাকি শুরু 9 এ, তাই আমরা ঠিক করব আপনি সব মুছে দিন পর্যন্ত অপেক্ষা করে স্টাফ, তারপর ফিরে এসে আমাকে মুছে দিন. ওয়েল 9 ভাল, বলে যাচ্ছে, আমি একটি নাল পয়েন্টার নই তাই এখান থেকে বাকি তালিকা মুছে দিন. তাই চেষ্টা করুন এবং 13 ধ্বংস. 13, আমি নাল পয়েন্টার নই বলেছেন একই জিনিস, এটা হরিণ প্রেরণ করা হয়. 10, 10 নাল পয়েন্টার নয় একটি নাল পয়েন্টার রয়েছে, কিন্তু 10 না নিজেই একটি হল নাল মুহূর্তে পয়েন্টার, এবং তাই এটা খুব ছাগ প্রেরণ করা হয়. এবং এখন, সেখানে এটা পয়েন্ট তালিকায় সত্যিই some-- নির্দেশ করবে আমি ছবিতে আরও জায়গা ছিল, এটা কিছু র্যান্ডম স্থান নির্দেশ করবে আমরা কি এটা জানেন না যে. এটা যদিও নাল পয়েন্টার, তালিকা আক্ষরিক এখন এটা নাল মান নির্ধারণ করা হয়েছে. এটা ঠিক যে লাল বক্সের ভিতরে ইশারা করছে. আমরা তাই, একটি নাল পয়েন্টার পৌঁছেছেন আমরা বন্ধ করতে পারবেন, এবং আমরা কাজ করছি. আর তাই যে রক্তবর্ণ ফ্রেম এ এখন আমি হয় সক্রিয় ফ্রেম যে স্ট্যাক উপরের, কিন্তু এটি করা হচ্ছে. আমরা একটি নাল পয়েন্টার পৌঁছেছেন করেছি, বন্ধ. আমরা, কিছু করবেন না আমরা একটি নাল পয়েন্টার মুক্ত করতে পারে না, আমরা কোনো malloc করা হয়নি স্থান, এবং তাই আমরা কাজ করছি. যে ফাংশন ফ্রেম তাই ধ্বংস, এবং আমরা আমরা যেখানে আপনি বাম resume-- আমরা নিতে পরবর্তী সর্বোচ্চ এক সঙ্গে বন্ধ যা এখানে এই গাঢ় নীল ফ্রেম হয়. তাই আমরা যদি আমরা বাম বন্ধ উপরে ডানে বাছাই যেখানে. আমরা বাকি মোছা তালিকায় আগে থেকেই, তাই এখন আমরা করছি বর্তমান নোড মুক্ত করতে যাচ্ছি. তাই এখন আমরা এখন এই নোড মুক্ত, এবং পারেন আমরা ফাংশন শেষে পৌঁছে গেছেন. আর তাই যে ফাংশন ফ্রেম, ধ্বংস হয় এবং আমরা হালকা নীল এক সময়ে কুড়ান. তাই এটা আমি ইতিমধ্যে done-- থাকেন says-- তালিকার বাকি মোছার তাই বর্তমান নোড মুক্ত. আর এখন হলুদ ফ্রেম হয় ফিরে স্ট্যাকের উপর. আপনি দেখতে এবং তাই, আমরা এখন করছি ডান থেকে তালিকায় অন্তক বাম. কিন্ত, ঘটেছে হবে আমরা কিছু ভুল ভাবে কাজ ছিল? শুধু যখন আমরা চেষ্টা করেছি ভালো একটি উপাদান যোগ করার জন্য. আমরা যদি চেইন, বিশৃঙ্খলার সৃষ্টি করে আমরা পয়েন্টার সংযোগ করা হয়নি সঠিক অনুক্রমে, আমরা যদি শুধু প্রথম উপাদান মুক্ত, আমরা শুধু মুক্ত হলে তালিকার মাথা, এখন আমরা পড়ুন করার কোন উপায় আছে তালিকার বাকি. আর তাই আমরা হবে এতিম সবকিছু, আমরা কি ছিল হবে একটি মেমরি লিক বলা. আপনি যদি আমাদের ভিডিও থেকে প্রত্যাহার করা হলে ডাইনামিক মেমরি বরাদ্দ উপর, যে খুব ভাল জিনিস না. সুতরাং হিসাবে আমি সেখানে বলেন, বিভিন্ন অপারেশন আমরা কাজ করতে ব্যবহার করতে হবে যে সঙ্গে কার্যকরভাবে তালিকায় যুক্ত. আর আপনি, আমি এক বাদ লক্ষ্য করে হতে পারে একটি লিঙ্ক থেকে একটি একক উপাদান মুছে ফেলার তালিকায়. আমি যে কি কারণে এটা আসলে কোন ধরনের হয় মুছে কিভাবে চিন্তা করতে প্রবঞ্চক একটি একেলা থেকে একটি একক উপাদান লিঙ্ক তালিকা. আমরা উপর লাফালাফি করতে সক্ষম হতে হবে তালিকায়, কিছু যা আমরা একটি point-- আমরা পেতে মানে এই নোড মুছে ফেলতে চান কিন্তু যাতে আমরা এটা যাতে না করতে কোন তথ্য হারাবেন না, আমরা এই সংযোগ প্রয়োজন এখানে ওভার নোড,. তাই আমি সম্ভবত যে ভুল করেনি একটি চাক্ষুষ দৃষ্টিকোণ থেকে. তাই আমরা শুরুতে আছেন আমাদের তালিকায়, আমরা মাধ্যমে অগ্রসর করছি আমরা এই নোড মুছে ফেলতে চান. আমরা শুধু এটা মুছে ফেলা হলে আমরা শৃঙ্খল ভাঙ্গা করেছি. ঠিক এই নোড অন্য সব কিছুর বোঝায়, এটা এখন থেকে চেইন রয়েছে. সুতরাং আমরা আসলে কি করা উচিত সে আমরা এই বিন্দু পেতে পরে, আমরা এক একধাপ পিছনে প্রয়োজন, এবং হয় এই নোড এই নোড উপর সংযোগ, তাই আমরা তারপর মুছে দিতে পারেন মাঝখানে এক. কিন্তু একেলা লিঙ্ক তালিকা না আমাদের পিছনের দিকে যেতে একটি উপায় প্রদান. যাতে আমরা রাখা প্রয়োজন দুই পয়েন্টার, এবং তাদের সরানো বন্ধ ধাপে সাজানোর পিছনে এক অন্যান্য আমরা যেতে, অথবা একটি বিন্দু পেতে হিসাবে এবং তারপর মাধ্যমে অন্য পয়েন্টার পাঠাতে. এবং আপনি এটি দেখতে পারেন হিসাবে একটু মলিন পেতে পারেন. সৌভাগ্যবশত, আমরা আছে অন্য উপায় যে আপনি সমাধান করতে, যখন আমরা দোকর লিঙ্ক তালিকা সম্পর্কে কথা বলতে. আমি ডগ লয়েড আছি, এই CS50.