1 00:00:00,000 --> 00:00:02,832 >> [সঙ্গীত বাজাচ্ছি] 2 00:00:02,832 --> 00:00:05,670 3 00:00:05,670 --> 00:00:08,560 >> ডগ লয়েড: ঠিক আছে, তাই অবশ্যই এই বিন্দু, 4 00:00:08,560 --> 00:00:15,300 আমরা সি বেসিক অনেক আবৃত করেছি আমরা, ভেরিয়েবল, অ্যারে সম্পর্কে অনেক জানেন 5 00:00:15,300 --> 00:00:17,610 পয়েন্টার, সব যে ভাল জিনিস. 6 00:00:17,610 --> 00:00:21,610 যারা সব ধরণের নির্মিত হয় এ, মৌলিক হিসাবে দেখতে 7 00:00:21,610 --> 00:00:23,880 কিন্তু আমরা ঠিক আছে, আরো কিছু করতে পারি? 8 00:00:23,880 --> 00:00:27,930 আমরা কিছু একত্রিত করতে পারেন একসঙ্গে আকর্ষণীয় উপায়ে. 9 00:00:27,930 --> 00:00:31,010 >> আর তাই এর শুরু করা যাক, চলুন না যে সি আমাদের দেয়, তা থেকে শাখাতেও 10 00:00:31,010 --> 00:00:35,270 এবং আমাদের নিজস্ব তথ্য তৈরি করতে শুরু এই বিল্ডিং ব্যবহার কাঠামো 11 00:00:35,270 --> 00:00:40,590 একসাথে ব্লক কিছু করতে দরকারী, সত্যিই মূল্যবান. 12 00:00:40,590 --> 00:00:43,420 আমরা এটা করতে পারেন একটি উপায় সংগ্রহের বিষয়ে কথা বলার জন্য. 13 00:00:43,420 --> 00:00:48,360 সুতরাং এ পর্যন্ত আমরা তথ্য এক ধরনের ছিল করেছি সংগ্রহের প্রতিনিধিত্বমূলক জন্য কাঠামো 14 00:00:48,360 --> 00:00:51,030 এর মান, একই মানের মত. 15 00:00:51,030 --> 00:00:52,350 এটা একটা অ্যারে হবে. 16 00:00:52,350 --> 00:00:57,020 আমরা পূর্ণসংখ্যার সংগ্রহের আছে, বা তাই অক্ষর এবং সংগ্রহের. 17 00:00:57,020 --> 00:01:00,890 >> স্ট্রাকচার একটি তথ্য সাজানোর তথ্য সংগ্রহের জন্য কাঠামো, 18 00:01:00,890 --> 00:01:03,220 কিন্তু এটা মান ভালো সংগ্রহের জন্য নয়. 19 00:01:03,220 --> 00:01:08,090 এটি সাধারণত বিভিন্ন ধরনের তথ্য দ্রবণ একসঙ্গে একটি একক বাক্সের ভিতরে. 20 00:01:08,090 --> 00:01:10,750 কিন্তু এটি নিজে না চেন একসাথে ব্যবহার 21 00:01:10,750 --> 00:01:16,920 বা একসাথে একই সংযোগ একটি অ্যারের মত জিনিস. 22 00:01:16,920 --> 00:01:20,960 অ্যারে জন্য মহান উপাদান সন্ধান, কিন্তু রিকল 23 00:01:20,960 --> 00:01:24,262 এটা খুব কঠিন যে একটি অ্যারের মধ্যে সন্নিবেশ করতে, 24 00:01:24,262 --> 00:01:26,470 আমরা এ ঢোকাতে করছি, যদি না যে অ্যারে খুব শেষে. 25 00:01:26,470 --> 00:01:29,730 >> আর সবচেয়ে ভাল উদাহরণ আমি আছে যে জন্য সন্নিবেশ ধরণের. 26 00:01:29,730 --> 00:01:31,650 আপনি যদি আমাদের ভিডিও প্রত্যাহার হলে সন্নিবেশ সাজানোর উপর, 27 00:01:31,650 --> 00:01:34,110 অনেক ছিল ব্যয় হচ্ছে জড়িত 28 00:01:34,110 --> 00:01:37,970 উপাদান কুড়ান, এবং তাদের নামান কিছু মাপসই উপায় আউট 29 00:01:37,970 --> 00:01:41,290 আপনার অ্যারের মধ্যম মধ্যে. 30 00:01:41,290 --> 00:01:44,690 অ্যারে এছাড়াও অন্য ভোগা সমস্যা নেই, যা অনমনীয়তা হয়. 31 00:01:44,690 --> 00:01:47,150 আমরা একটি অ্যারে ডিক্লেয়ার করার সময়, আমরা এটা এক শট পেতে. 32 00:01:47,150 --> 00:01:49,790 আমরা আমি চাই, বলতে পেতে এই অনেক উপাদান. 33 00:01:49,790 --> 00:01:51,940 100 হতে পারে, এটা হতে পারে 1,000 হতে, এটা হতে পারে 34 00:01:51,940 --> 00:01:55,930 X ব্যবহারকারী একটি সংখ্যা যে যেখানে X হতে একটি প্রম্পটে বা নির্দেশে আমাদের দিয়েছেন 35 00:01:55,930 --> 00:01:56,630 লাইন. 36 00:01:56,630 --> 00:01:59,905 >> কিন্তু আমরা শুধুমাত্র এটা এক শট পেতে, আমরা আমি আসলে, তারপর ওহ বলতে পাবেন না 37 00:01:59,905 --> 00:02:04,360 101 প্রয়োজন, অথবা আমি এক্স প্লাস 20 প্রয়োজন. 38 00:02:04,360 --> 00:02:07,910 খুব দেরি হয়ে গেছে, ইতিমধ্যে আমরা ঘোষণা করেছি অ্যারে, এবং আমরা 101 বা পেতে চান তাহলে এক্স 39 00:02:07,910 --> 00:02:12,050 প্লাস 20, আমরা ঘোষণা করতে হবে একটি সম্পূর্ণরূপে ভিন্ন অ্যারের, 40 00:02:12,050 --> 00:02:15,540 অ্যারে সব উপাদান কপি ওভার, এবং তারপর আমরা যথেষ্ট আছে. 41 00:02:15,540 --> 00:02:19,880 এবং আমরা আবার ভুল হয়, তাহলে কি, কি আমরা আসলে 102, বা এক্স প্লাস 40 প্রয়োজন হলে, 42 00:02:19,880 --> 00:02:21,970 আমরা আবার এই কাজ করতে হবে. 43 00:02:21,970 --> 00:02:26,250 তাই তারা খুব অনমনীয় আছেন আমাদের তথ্য resizing জন্য, 44 00:02:26,250 --> 00:02:29,360 কিন্তু আমরা একসাথে কিছু একত্রিত হলে আমরা ইতিমধ্যে করেছি যে বুনিয়াদি 45 00:02:29,360 --> 00:02:33,230 পয়েন্টার এবং কাঠামো সম্পর্কে শিখেছি, বিশেষ করে ডাইনামিক মেমরি ব্যবহার 46 00:02:33,230 --> 00:02:36,180 malloc সঙ্গে বরাদ্দ, আমরা এইসব একসঙ্গে টুকরা করা যাবে 47 00:02:36,180 --> 00:02:40,960 একটি নতুন তথ্য কাঠামো তৈরি করতে একেলা আমরা কথাই পারে তালিকায় লিঙ্ক 48 00:02:40,960 --> 00:02:45,400 যে আমাদের হত্তয়া করতে পারবেন এবং মান একটি সংকলন সঙ্কুচিত 49 00:02:45,400 --> 00:02:48,800 এবং আমরা কোনো বরবাদ স্থান থাকবে না. 50 00:02:48,800 --> 00:02:53,320 >> তাই আবার, আমরা এই ধারণা কল, এই ধারণা, একটি লিঙ্ক তালিকা. 51 00:02:53,320 --> 00:02:56,320 বিশেষ করে, এই ভিডিওতে আমরা আছেন একেলা লিঙ্ক তালিকা সম্পর্কে কথা বলা, 52 00:02:56,320 --> 00:02:59,185 এবং তারপর অন্য একটি ভিডিও আমরা আলোচনা করব সম্পর্কে দোকর লিঙ্ক তালিকা, যা 53 00:02:59,185 --> 00:03:01,560 এখানে একটি থিম মাত্র একটি পরিবর্তন. 54 00:03:01,560 --> 00:03:05,200 কিন্তু একটি একেলা লিঙ্ক তালিকা নোড গঠিত হয়, 55 00:03:05,200 --> 00:03:08,559 নোড শুধু একটি বিমূর্ত term-- হচ্ছে এটা আমি আহ্বান করছি শুধু কিছু 56 00:03:08,559 --> 00:03:10,350 যে এক ধরনের গঠন, মূলত, আমি আছি? 57 00:03:10,350 --> 00:03:16,190 এটা শুধু ব্যাকটেরিয়ার ক্ষেত্রেই নোড এবং এই কল করা যাচ্ছে নোড দুই সদস্য, বা দুটি ক্ষেত্র রয়েছে. 58 00:03:16,190 --> 00:03:20,300 এটি সাধারণত একটি তথ্য আছে পূর্ণসংখ্যা, একটি অক্ষর ভাসা, 59 00:03:20,300 --> 00:03:23,790 বা অন্য কিছু ডাটা টাইপ হতে পারে আপনি একটি টাইপ Def সাথে সংজ্ঞায়িত করেছি যে. 60 00:03:23,790 --> 00:03:29,290 এবং এটি একটি পয়েন্টার রয়েছে একই ধরণের আরেকটি নোড. 61 00:03:29,290 --> 00:03:34,710 >> তাই আমরা ভেতরে দুটি জিনিস আছে এই নোড, তথ্য এবং একটি পয়েন্টার 62 00:03:34,710 --> 00:03:36,380 অন্য একটি নোড. 63 00:03:36,380 --> 00:03:39,370 আর আপনি ঠাহর করা শুরু হলে এই, আপনি এটি সম্পর্কে চিন্তা করতে পারেন 64 00:03:39,370 --> 00:03:42,280 নোড একটা চেইন মত যে একসাথে যুক্ত হয়. 65 00:03:42,280 --> 00:03:45,070 আমরা প্রথম নোড আছে, এটা তথ্য, এবং একটি পয়েন্টার রয়েছে 66 00:03:45,070 --> 00:03:49,110 রয়েছে যা দ্বিতীয় নোড, যাও তথ্য, এবং তৃতীয় নোডের একটি পয়েন্টার. 67 00:03:49,110 --> 00:03:52,940 আর তাই যে আমরা এটি একটি কল কেন লিঙ্ক তালিকা, তারা একসাথে যুক্ত করছি. 68 00:03:52,940 --> 00:03:56,070 >> এই বিশেষ কী নোড কাঠামো অনুরূপ? 69 00:03:56,070 --> 00:04:01,120 ওয়েল, আপনি আমাদের ভিডিও থেকে প্রত্যাহার করা হলে টাইপ Def সাথে, কাস্টম ধরনের সংজ্ঞা, 70 00:04:01,120 --> 00:04:05,400 আমরা একটি কাঠামো নির্ধারণ করতে পারবেন এবং এই মত একটি কাঠামো নির্ধারণ টাইপ করুন. 71 00:04:05,400 --> 00:04:11,240 struct sllist tyepdef, এবং তারপর আমি আছি ইচ্ছামত এখানে শব্দ মান ব্যবহার 72 00:04:11,240 --> 00:04:13,891 সত্যিই কোন ডাটা টাইপ ইঙ্গিত. 73 00:04:13,891 --> 00:04:16,890 আপনি, একটি পূর্ণসংখ্যা বা ভাসা পারত আপনি যাহা চান হতে পারে. 74 00:04:16,890 --> 00:04:19,389 এটা শুধু সীমিত নয় ইন্টিজার, বা ওই জাতীয় কিছু. 75 00:04:19,389 --> 00:04:22,790 তাই মান শুধু একটি অবাধ হয় তারপর ডাটা টাইপ, এবং একটি পয়েন্টার 76 00:04:22,790 --> 00:04:26,310 একই ধরণের আরেকটি নোডের. 77 00:04:26,310 --> 00:04:29,690 >> এখন, একটু ধরা আছে এখানে একটি কাঠামো সংজ্ঞা সঙ্গে 78 00:04:29,690 --> 00:04:33,030 যখন এটি একটি স্বয়ংসম্পূর্ণ উল্লেখ গঠন করে. 79 00:04:33,030 --> 00:04:35,340 আমি একটি অস্থায়ী আছে আমার কাঠামো জন্য নাম. 80 00:04:35,340 --> 00:04:37,640 প্রতিদিন আমি শেষে স্পষ্টতই এটা কল করতে চান 81 00:04:37,640 --> 00:04:43,030 SLL নোড, যে শেষ পর্যন্ত নতুন আমার টাইপ সংজ্ঞা অংশ নাম, 82 00:04:43,030 --> 00:04:47,450 কিন্তু আমি SLL নোড ব্যবহার করতে পারবেন না এই মাঝখানে. 83 00:04:47,450 --> 00:04:51,430 কারণ হচ্ছে, আমি না আছে একটি টাইপ বলা SLL নোড তৈরি 84 00:04:51,430 --> 00:04:55,200 আমি এখানে এই চূড়ান্ত বিন্দু আঘাত না হওয়া পর্যন্ত. 85 00:04:55,200 --> 00:04:59,720 যে বিন্দু পর্যন্ত, আমি আছে অন্য ভাবে এই ডাটা টাইপ পড়ুন. 86 00:04:59,720 --> 00:05:02,440 >> আর এই একটি স্বয়ংসম্পূর্ণ উল্লেখ ডাটা টাইপ. 87 00:05:02,440 --> 00:05:06,314 এটা; একটি একটি ডাটা টাইপ এর একটি তথ্য রয়েছে যে কাঠামো, 88 00:05:06,314 --> 00:05:08,480 এবং অন্য একটি পয়েন্টার একই ধরনের কাঠামো. 89 00:05:08,480 --> 00:05:11,750 তাই আমি বোঝাতে সক্ষম হতে হবে এই ডাটা টাইপ অন্তত সাময়িকভাবে, 90 00:05:11,750 --> 00:05:14,910 তাই এটি একটি অস্থায়ী প্রদান struct sllist নাম 91 00:05:14,910 --> 00:05:18,540 আমার তারপর আমি একটি চান বলতে পারবেন অন্য struct sllist পয়েন্টার, 92 00:05:18,540 --> 00:05:24,690 একটি struct sllist তারকা, এবং তারপর আমি সংজ্ঞা সম্পন্ন করেছেন পরে, 93 00:05:24,690 --> 00:05:27,220 আমি এখন এই ধরনের একটি SLL নোড কল করতে পারেন. 94 00:05:27,220 --> 00:05:30,520 >> আপনি সেখানে দেখতে সুতরাং যে কেন এখানে একটি অস্থায়ী নাম, 95 00:05:30,520 --> 00:05:31,879 কিন্তু এখানে একটি স্থায়ী নাম. 96 00:05:31,879 --> 00:05:33,920 কখনও কখনও আপনি দেখতে হতে পারে কাঠামো সংজ্ঞা, 97 00:05:33,920 --> 00:05:36,570 উদাহরণস্বরূপ, যে হয় না স্ব উল্লেখ, যে 98 00:05:36,570 --> 00:05:39,390 এখানে একটি সুনির্দিষ্টভাবে নাম আছে কি না. 99 00:05:39,390 --> 00:05:43,040 এটা শুধু typedef struct বলতে হবে কোঁকড়া বক্রবন্ধনী খুলুন এবং তারপর সংজ্ঞায়িত. 100 00:05:43,040 --> 00:05:45,620 যদি আপনি কিন্তু struct স্ব উল্লেখ, এই এক হিসাবে, 101 00:05:45,620 --> 00:05:49,010 আপনি একটি নির্দিষ্ট করতে হবে অস্থায়ী প্রকার নাম. 102 00:05:49,010 --> 00:05:51,310 কিন্তু শেষ পর্যন্ত, এখন আমরা এই কাজ করেছি যে, 103 00:05:51,310 --> 00:05:53,620 আমরা শুধু পাঠাতে পারেন এই নোডের, এই ইউনিট, 104 00:05:53,620 --> 00:05:57,900 উদ্দেশ্যে SLL নোড হিসাবে এই ভিডিওটি বাকি. 105 00:05:57,900 --> 00:06:00,900 >> ঠিক আছে, তাই আমরা কিভাবে জানি একটি লিঙ্ক তালিকা নোড নির্মাণ. 106 00:06:00,900 --> 00:06:03,240 আমরা সংজ্ঞায়িত কিভাবে জানেন একটি লিঙ্ক তালিকা নোড. 107 00:06:03,240 --> 00:06:06,670 এখন, আমরা শুরু করতে যাচ্ছেন, তাহলে তথ্য সংগ্রহ করার জন্য তাদের ব্যবহার, 108 00:06:06,670 --> 00:06:10,360 অপারেশন দুয়েক আছে আমরা বুঝতে এবং এর সাথে কাজ করতে হবে. 109 00:06:10,360 --> 00:06:12,860 আমরা কীভাবে তৈরি করতে হয় তা আপনার জানা প্রয়োজন পাতলা বায়ু থেকে একটি লিঙ্ক তালিকা. 110 00:06:12,860 --> 00:06:14,901 কোন তালিকায় আগে থেকেই আছে, আমরা শুরু করতে চাই. 111 00:06:14,901 --> 00:06:16,960 সুতরাং আমরা সক্ষম হতে হবে একটি লিঙ্ক তালিকা তৈরি করতে, 112 00:06:16,960 --> 00:06:19,130 আমরা সম্ভবত আপনাকে প্রয়োজন লিঙ্ক তালিকা মাধ্যমে 113 00:06:19,130 --> 00:06:21,830 আমরা খুঁজছেন একটি উপাদান খুঁজে পেতে. 114 00:06:21,830 --> 00:06:24,430 আমরা প্রবেশ করাতে সক্ষম হতে হবে তালিকার মধ্যে নতুন কিছু, 115 00:06:24,430 --> 00:06:25,930 আমরা আমাদের তালিকা প্রসারণ পাবে চান. 116 00:06:25,930 --> 00:06:28,638 এমনিভাবে পাবে চান আমাদের তালিকা থেকে কিছু মুছে ফেলতে, 117 00:06:28,638 --> 00:06:30,250 আমরা আমাদের তালিকায় সঙ্কুচিত করতে সক্ষম হতে চান. 118 00:06:30,250 --> 00:06:32,160 আর শেষে আমাদের প্রোগ্রাম, বিশেষত 119 00:06:32,160 --> 00:06:34,550 আমরা যে প্রত্যাহার হলে পরিবর্তনশীল মেমরি বণ্টন 120 00:06:34,550 --> 00:06:38,337 সাধারণত এই তালিকা নির্মাণ, আমরা যে সমস্ত মেমরি মুক্ত করতে চান 121 00:06:38,337 --> 00:06:39,670 আমরা এটা নিয়ে কাজ সম্পন্ন হলে. 122 00:06:39,670 --> 00:06:44,627 আর তাই আমরা একটি মুছে ফেলতে সক্ষম হতে হবে এক সমগ্র লিঙ্ক তালিকা ছোঁ ব্যর্থ. 123 00:06:44,627 --> 00:06:46,460 সুতরাং আসুন দিয়ে যেতে দেওয়া এই অপারেশন কিছু 124 00:06:46,460 --> 00:06:51,192 এবং আমরা তাদের ঠাহর পারে, বিশেষভাবে pseudocode কোড কথা. 125 00:06:51,192 --> 00:06:53,150 সুতরাং আমরা একটি তৈরি করতে চান তালিকায় যুক্ত, তাই হয়তো আমরা 126 00:06:53,150 --> 00:06:56,480 একটি ফাংশন নির্ধারণ করতে চান এই প্রোটোটাইপ সঙ্গে. 127 00:06:56,480 --> 00:07:01,690 SLL নোড তারকা, তৈরি, এবং আমি পার করছি এক যুক্তি, কিছু অবাধ তথ্য 128 00:07:01,690 --> 00:07:05,530 কিছু অবাধ ডাটা টাইপ, আবার টাইপ করুন. 129 00:07:05,530 --> 00:07:10,482 কিন্তু আমি এই কাজ করা উচিত returning-- করছি একটি একেলা, আমাকে একটি পয়েন্টার ফেরত 130 00:07:10,482 --> 00:07:11,190 লিঙ্ক তালিকা নোড. 131 00:07:11,190 --> 00:07:14,050 আবার, আমরা তৈরি করার চেষ্টা করছেন পাতলা বায়ু থেকে একটি লিঙ্ক তালিকা, 132 00:07:14,050 --> 00:07:17,900 তাই আমি একটি পয়েন্টার প্রয়োজন যখন আমি কাজ করছি যে তালিকা. 133 00:07:17,900 --> 00:07:19,420 >> সুতরাং এখানে ধাপগুলি কি হয়? 134 00:07:19,420 --> 00:07:20,960 ওয়েল, আমি সর্বপ্রথম আছি কাজ করতে যাচ্ছেন পরিবর্তনশীল হয় 135 00:07:20,960 --> 00:07:22,550 একটি নতুন নোডের জন্য স্থান বরাদ্দ. 136 00:07:22,550 --> 00:07:26,689 আবার, আমরা পাতলা আউট এটি তৈরি করছি এয়ার, তাই আমরা এটা জন্য malloc স্থান প্রয়োজন. 137 00:07:26,689 --> 00:07:28,480 এবং অবশ্যই, অবিলম্বে আমরা malloc পর, 138 00:07:28,480 --> 00:07:31,692 আমরা সবসময় নিশ্চিত করুন যে আপনি চেক আমাদের পয়েন্টার আমরা ফিরে নাল পাইনি. 139 00:07:31,692 --> 00:07:33,650 আমরা চেষ্টা যদি কারণ ও একটি নাল পয়েন্টার এলইডি, 140 00:07:33,650 --> 00:07:36,190 আমরা একটি ভোগে চলুন segfault এবং আমরা এটা চাই না. 141 00:07:36,190 --> 00:07:39,510 >> তারপর আমরা ক্ষেত্রের পূরণ করতে চান, আমরা মান ক্ষেত্রের আরম্ভ করতে চান 142 00:07:39,510 --> 00:07:41,690 এবং পরের ক্ষেত্রের আরম্ভ. 143 00:07:41,690 --> 00:07:45,450 এবং তারপর আমরা শেষ পর্যন্ত হিসাবে চাচ্ছি চান আমরা চাই indicates-- ফাংশন প্রোটোটাইপ 144 00:07:45,450 --> 00:07:49,940 একটি SLL নোডের একটি পয়েন্টার ফেরত. 145 00:07:49,940 --> 00:07:51,710 তাই কি এই চাক্ষুষরূপে মত বানাতে? 146 00:07:51,710 --> 00:07:55,230 আচ্ছা, প্রথম আমরা পরিবর্তনশীল চলুন একটি নতুন SLL নোডের জন্য স্থান বরাদ্দ করা, 147 00:07:55,230 --> 00:07:58,320 তাই আমরা যে malloc-- দৃশ্যগত উপস্থাপনা 148 00:07:58,320 --> 00:08:00,020 নোড আমরা শুধু তৈরি. 149 00:08:00,020 --> 00:08:02,757 এবং আমরা নিশ্চিত করতে পরীক্ষা এটা, এই ক্ষেত্রে নাল না 150 00:08:02,757 --> 00:08:04,840 ছবি হবে না এটা নাল ছিল প্রকটিত, 151 00:08:04,840 --> 00:08:07,298 আমরা আর স্মৃতি ফুরিয়ে যেত তাই আমরা সেখানে যেতে ভাল. 152 00:08:07,298 --> 00:08:10,200 তাই এখন আমরা সি পইঠা করছি, নোড মান ক্ষেত্রের আরম্ভ. 153 00:08:10,200 --> 00:08:12,280 ওয়েল, এই ফাংশন উপর ভিত্তি করে আমি এখানে ব্যবহার করছি কল 154 00:08:12,280 --> 00:08:16,700 আমি 6 প্রেরণ করতে ইচ্ছুক মত, দেখে মনে হচ্ছে তাই আমি মান ক্ষেত্রে 6 হবে. 155 00:08:16,700 --> 00:08:18,865 এখন, পরের ক্ষেত্রের আরম্ভ. 156 00:08:18,865 --> 00:08:21,640 ওয়েল, আমি কি সেখানে কাজ করতে যাচ্ছি, কিছুই ঠিক আছে, পরের নেই, 157 00:08:21,640 --> 00:08:23,600 এই তালিকায় শুধুমাত্র জিনিস. 158 00:08:23,600 --> 00:08:27,206 সুতরাং তালিকায় পরবর্তী জিনিস কি? 159 00:08:27,206 --> 00:08:29,660 >> এটা ঠিক আছে, কিছু করার নির্দেশ করা উচিত নয়. 160 00:08:29,660 --> 00:08:33,600 কিছুই তাই কি, অন্য সেখানে আছে আমরা যে জানি ধারণা কিছুই এর 161 00:08:33,600 --> 00:08:35,638 কিছুই করার পয়েন্টার? 162 00:08:35,638 --> 00:08:37,929 এটা হতে পারে আমরা চাই হওয়া উচিত সেখানে একটি নাল পয়েন্টার রাখা, 163 00:08:37,929 --> 00:08:40,178 এবং আমি নাল প্রতিনিধিত্ব করব , হিসাবে শুধু একটি লাল বক্স পয়েন্টার 164 00:08:40,178 --> 00:08:41,559 আমরা বেশি দূর যাওয়া যাবে না. 165 00:08:41,559 --> 00:08:44,430 আমরা একটু পরে দেখতে পাবেন, আমরা শেষ পর্যন্ত চেইন থাকবে 166 00:08:44,430 --> 00:08:46,330 তীরচিহ্ন সংযোগ একসঙ্গে এই নোডের, 167 00:08:46,330 --> 00:08:48,480 কিন্তু যখন আপনি আঘাত লাল বক্স, যে, নাল 168 00:08:48,480 --> 00:08:51,150 আমরা, আরও কোনো যেতে পারে না যে তালিকার শেষ. 169 00:08:51,150 --> 00:08:53,960 >> এবং সর্বশেষে, আমরা শুধু চাই এই নোডের একটি পয়েন্টার আসতে. 170 00:08:53,960 --> 00:08:56,160 তাই আমরা নতুন ডাকবো, এবং নতুন আসতে হবে 171 00:08:56,160 --> 00:08:59,370 তাই এটি ব্যবহার করা যেতে পারে যাই হোক না কেন ফাংশন এটি নির্মিত. 172 00:08:59,370 --> 00:09:03,100 তাই সেখানে আমরা যেতে, আমরা এককভাবে তৈরি করেছি পাতলা বায়ু আউট লিঙ্ক তালিকা নোড, 173 00:09:03,100 --> 00:09:05,920 এবং এখন আমরা সঙ্গে কাজ করতে পারেন একটি তালিকা আছে. 174 00:09:05,920 --> 00:09:08,260 >> এখন, ইতিমধ্যে আমরা বলতে দিন বৃহৎ চেইন আছে, 175 00:09:08,260 --> 00:09:09,800 এবং আমরা তা কিছু খুঁজতে চান. 176 00:09:09,800 --> 00:09:12,716 আর আমরা যাচ্ছে যে একটি ফাংশন চান সত্য বা মিথ্যা ফিরে নির্ভর করতে 177 00:09:12,716 --> 00:09:15,840 একটি মান যে তালিকায় বিদ্যমান কিনা দেখো. 178 00:09:15,840 --> 00:09:18,160 একটি ফাংশন প্রোটোটাইপ, বা যে ফাংশন জন্য ঘোষণা, 179 00:09:18,160 --> 00:09:23,320 আপাততঃ এটি bool মত চেহারা, এবং পারে তারপর আমরা দুটি আর্গুমেন্ট প্রেরণ করতে ইচ্ছুক. 180 00:09:23,320 --> 00:09:26,996 >> প্রথম, একটি পয়েন্টার লিঙ্ক তালিকার প্রথম উপাদান. 181 00:09:26,996 --> 00:09:29,620 এই কমান্ডের সাহায্যে আপনি হবে আসলে কিছু হয় সবসময় ট্র্যাক রাখতে চান, 182 00:09:29,620 --> 00:09:33,110 এবং আসলে কিছু হতে পারে যে এমনকি আপনি একটি বিশ্বব্যাপী পরিবর্তনশীল রাখা. 183 00:09:33,110 --> 00:09:35,360 আপনি একটি তালিকা তৈরি করার পরে, সবসময় আপনি, 184 00:09:35,360 --> 00:09:38,990 খুব ট্র্যাক রাখতে চান তালিকার প্রথম উপাদান. 185 00:09:38,990 --> 00:09:43,690 আপনি অন্য সব পাঠাতে পারেন যে ভাবে শুধু চেইন অনুসরণ করে উপাদান, 186 00:09:43,690 --> 00:09:47,300 পয়েন্টার রাখা করেও প্রতি একক উপাদান অক্ষত. 187 00:09:47,300 --> 00:09:50,920 আপনি শুধুমাত্র প্রথম ট্র্যাক রাখা প্রয়োজন এক তারা সব একসঙ্গে শৃঙ্খলিত করছি. 188 00:09:50,920 --> 00:09:52,460 >> এবং তারপর দ্বিতীয় বিষয় আমরা আবার পার করছি 189 00:09:52,460 --> 00:09:54,376 ইচ্ছামত some-- হয় যাই হোক না কেন আমরা ডাটা টাইপ করছি 190 00:09:54,376 --> 00:09:59,640 সেখানে খুঁজছেন ভেতরে হয় আশা নোড তালিকায় এক. 191 00:09:59,640 --> 00:10:00,980 সেজন্য পদক্ষেপ কি হয়? 192 00:10:00,980 --> 00:10:04,250 ওয়েল, আমরা কি প্রথম জিনিস আমরা একটি আড়াআড়ি পয়েন্টার তৈরি 193 00:10:04,250 --> 00:10:06,015 তালিকা মাথা প্রতি নির্দেশ. 194 00:10:06,015 --> 00:10:08,890 ওয়েল, কেন যে, আমরা ইতিমধ্যে আমরা কি পারি না তালিকা মাথা এ একটি ইশারা আছে, 195 00:10:08,890 --> 00:10:10,974 কেন আমরা শুধু চারপাশে যে এক সরাতে না? 196 00:10:10,974 --> 00:10:13,140 ওয়েল, আমি শুধু বলেছি, এটা আমাদের জন্য সত্যিই গুরুত্বপূর্ণ 197 00:10:13,140 --> 00:10:17,580 সবসময় ট্র্যাক রাখতে তালিকার প্রথম উপাদান. 198 00:10:17,580 --> 00:10:21,270 আর তাই এটি আসলে ভাল যে একটি ডুপ্লিকেট তৈরি করতে, 199 00:10:21,270 --> 00:10:25,350 এবং তাই আমরা কখনও কাছাকাছি সরানো যে ব্যবহার ঘটনাক্রমে দূরে সরানো, বা সর্বদা আমরা 200 00:10:25,350 --> 00:10:30,430 যে কিছু সময়ে একটি ইশারা আছে ডান তালিকার প্রথম উপাদান. 201 00:10:30,430 --> 00:10:33,290 সুতরাং এটি একটি তৈরি করতে ভাল আমরা সরাতে ব্যবহার করে দ্বিতীয় এক. 202 00:10:33,290 --> 00:10:35,877 >> তারপর আমরা শুধু কিনা তুলনা যে নোড এ মান ক্ষেত্র 203 00:10:35,877 --> 00:10:38,960 এটা যদি আমরা খুঁজছেন, এবং তা হল না, আমরা শুধু পরবর্তী নোডের অগ্রসর. 204 00:10:38,960 --> 00:10:41,040 এবং আমরা যে কাজ রাখতে বারবার, 205 00:10:41,040 --> 00:10:44,811 আমরা হয় খুঁজে না পাওয়া পর্যন্ত উপাদান, বা আমরা আঘাত 206 00:10:44,811 --> 00:10:47,310 শূন্য আমরা শেষে পৌঁছে গেছেন এবং তালিকার এটা নেই. 207 00:10:47,310 --> 00:10:50,540 এই আশা একটি সফল হওয়া উচিত আপনাকে ঠিক রৈখিক অনুসন্ধান, 208 00:10:50,540 --> 00:10:54,430 আমরা শুধু এটা প্রতিলিপি নির্মাণ করছেন একটি একেলা লিঙ্ক তালিকা গঠন 209 00:10:54,430 --> 00:10:56,280 পরিবর্তে এটি কি একটি অ্যারে ব্যবহার করে এর. 210 00:10:56,280 --> 00:10:58,210 >> তাই এখানে একটি উদাহরণ একটি একেলা লিঙ্ক তালিকা. 211 00:10:58,210 --> 00:11:00,043 এই এক গঠিত পাঁচটি নোড, এবং আমরা আছে 212 00:11:00,043 --> 00:11:04,330 প্রধান একটি পয়েন্টার তালিকায় বলা হয় যা তালিকা. 213 00:11:04,330 --> 00:11:07,385 আমরা যা করতে চাই প্রথম জিনিস আবার, যে ট্র্যাভেরসাল পয়েন্টার তৈরি. 214 00:11:07,385 --> 00:11:09,760 তাই আমরা এখন দুই পয়েন্টার আছে একই জিনিস যে বিন্দু. 215 00:11:09,760 --> 00:11:15,025 >> এখন, এখানে লক্ষ্য আমি না trav জন্য কোনো স্থান malloc আছে. 216 00:11:15,025 --> 00:11:18,970 আমি trav malloc সমান বলে না কিছু যে নোড ইতিমধ্যে বিদ্যমান 217 00:11:18,970 --> 00:11:21,160 স্মৃতিতে যে স্থান আগে থেকেই আছে. 218 00:11:21,160 --> 00:11:24,290 তাই আমি আসলে করছি সব হয় এটা অন্য পয়েন্টার তৈরি. 219 00:11:24,290 --> 00:11:28,210 আমি একটি অতিরিক্ত mallocing করছি না স্থান, শুধু এখন দুই পয়েন্টার আছে 220 00:11:28,210 --> 00:11:31,370 একই জিনিস প্রতি নির্দেশ. 221 00:11:31,370 --> 00:11:33,710 >> সুতরাং 2 আমি চাই কি? 222 00:11:33,710 --> 00:11:37,220 না, ভাল, তাই আমি আছি পরবর্তী এক থেকে সরানো যাচ্ছে. 223 00:11:37,220 --> 00:11:41,740 তাই মূলত আমি বলতে চাই, trav পরের trav সমান. 224 00:11:41,740 --> 00:11:43,630 আমি কোন, চাই কি 3. 225 00:11:43,630 --> 00:11:45,780 তাই আমি যেতে অবিরত মাধ্যমে, অবশেষে পর্যন্ত 226 00:11:45,780 --> 00:11:48,690 আমি থাকবো কি যা 6 পেতে ফাংশন কল উপর ভিত্তি জন্য 227 00:11:48,690 --> 00:11:51,600 আমি উপরের আছে সেখানে, এবং তাই আমি কাজ করছি. 228 00:11:51,600 --> 00:11:54,150 >> এখন, উপাদান আমি কি করছি খুঁজছেন, তালিকায় না থাকে 229 00:11:54,150 --> 00:11:55,510 এটা এখনও কাজ করে যাচ্ছে? 230 00:11:55,510 --> 00:11:57,120 ওয়েল, তালিকায় যে লক্ষ্য এখানে, subtly বিভিন্ন হয় 231 00:11:57,120 --> 00:11:59,410 এবং এই যে অন্য জিনিস লিঙ্ক তালিকা সঙ্গে গুরুত্বপূর্ণ, 232 00:11:59,410 --> 00:12:01,780 আপনি সংরক্ষণ করতে হবে না তাদের কোনো নির্দিষ্ট অনুক্রম. 233 00:12:01,780 --> 00:12:05,390 যদি আপনি চান আপনি যা করতে পারেন, কিন্তু আপনি ইতিমধ্যে লক্ষ্য করে হতে পারে 234 00:12:05,390 --> 00:12:09,310 আমরা অবগত থাকার করছি না যে আমরা কি নম্বর উপাদান থাকে. 235 00:12:09,310 --> 00:12:13,150 >> আর যে কেউ ট্রেড সাজানোর যে আমরা অ্যারে আয়াত লিঙ্ক তালিকা আছে, 236 00:12:13,150 --> 00:12:15,300 আমরা আছে না হয় আর র্যান্ডম এক্সেস. 237 00:12:15,300 --> 00:12:18,150 আমরা শুধু আমি চাই, বলতে পারবেন না 0th উপাদান যেতে, 238 00:12:18,150 --> 00:12:21,410 অথবা আমার অ্যারের 6th উপাদান, যা আমি একটি অ্যারের মধ্যে নির্বাচন করতে পারবেন. 239 00:12:21,410 --> 00:12:25,080 আমি যেতে চাই না বলতে পারেন 0th উপাদান, বা 6 ষ্ঠ উপাদান, 240 00:12:25,080 --> 00:12:30,360 অথবা আমার লিঙ্ক তালিকা 25th উপাদান, তাদের সঙ্গে যুক্ত কোন সূচক আছে. 241 00:12:30,360 --> 00:12:33,660 আর তাই এটি সত্যিই কোন ব্যাপার না আমরা যাতে আমাদের তালিকা সংরক্ষণ করে. 242 00:12:33,660 --> 00:12:36,080 যদি আপনি চান তাহলে অবশ্যই পারেন, কিন্তু আছে 243 00:12:36,080 --> 00:12:38,567 তারা প্রয়োজন কোন কারণে কোনো অনুক্রমে সংরক্ষণ করা. 244 00:12:38,567 --> 00:12:40,400 তাই আবার, এর চেষ্টা করা যাক এবং এই তালিকার মধ্যে 6 খুঁজে. 245 00:12:40,400 --> 00:12:43,200 ওয়েল, আমরা এ শুরু শুরুতে, আমরা 6 খুঁজে না 246 00:12:43,200 --> 00:12:47,690 এবং তারপর আমরা খোঁজার চালিয়ে 6, আমরা শেষ পর্যন্ত এখানে পেতে পর্যন্ত. 247 00:12:47,690 --> 00:12:52,790 নোডের তাই এই মুহূর্তে trav পয়েন্ট 8 ধারণকারী, এবং ছয় সেখানে নয়. 248 00:12:52,790 --> 00:12:55,250 >> তাই পরবর্তী পদক্ষেপ হবে পরের পয়েন্টার যেতে, 249 00:12:55,250 --> 00:12:57,440 তাই trav পরের trav সমান বলে. 250 00:12:57,440 --> 00:13:00,750 ওয়েল, trav পরের, দ্বারা নির্দেশিত সেখানে লাল বক্স, নাল হয়. 251 00:13:00,750 --> 00:13:03,020 তাই কোথাও আছে তাই এই সময়ে যেতে, ও 252 00:13:03,020 --> 00:13:06,120 আমরা পৌঁছে গেছেন যে শেষ করা যাবে লিঙ্ক তালিকার শেষে, 253 00:13:06,120 --> 00:13:07,190 এবং 6 সেখানে নয়. 254 00:13:07,190 --> 00:13:10,980 এবং তা ফিরে যেতে হবে এই ক্ষেত্রে মিথ্যা. 255 00:13:10,980 --> 00:13:14,540 >> ঠিক আছে, কিভাবে আমরা একটি নতুন সন্নিবেশ না লিঙ্ক তালিকায় নোড? 256 00:13:14,540 --> 00:13:17,310 সুতরাং আমরা তৈরি করতে পারব দাঁড়াতেই আউট একটি লিঙ্ক তালিকা, 257 00:13:17,310 --> 00:13:19,370 কিন্তু আমরা সম্ভবত করতে চান একটি চেইন নির্মাণ ও না 258 00:13:19,370 --> 00:13:22,620 স্বতন্ত্র তালিকার একটি গুচ্ছ তৈরি. 259 00:13:22,620 --> 00:13:25,700 আমরা এক তালিকায় আছে চান যে এটি বিভিন্ন নোডের একটি গুচ্ছ আছে 260 00:13:25,700 --> 00:13:28,040 একটি একক নোড সঙ্গে তালিকার একটি গুচ্ছ. 261 00:13:28,040 --> 00:13:31,260 তাই আমরা ঠিক তৈরি করে রাখতে পারবেন না ফাংশন আমরা এখন, আগে সংজ্ঞায়িত আমরা 262 00:13:31,260 --> 00:13:33,860 একটি মধ্যে সন্নিবেশ করতে চান যে ইতিমধ্যেই বিদ্যমান তালিকায়. 263 00:13:33,860 --> 00:13:36,499 >> এই ক্ষেত্রে তাই, আমরা চলুন দুটি আর্গুমেন্ট পাস, 264 00:13:36,499 --> 00:13:39,290 যে মাথার পয়েন্টার আমরা যোগ করতে চান যে তালিকা লিঙ্ক. 265 00:13:39,290 --> 00:13:40,910 এটা তাই কেন আবার, যে গুরুত্বপূর্ণ সবসময় আমরা যে 266 00:13:40,910 --> 00:13:43,400 কারণ, এটা ট্র্যাক রাখতে এটা সত্যিই একমাত্র উপায় আমরা এর 267 00:13:43,400 --> 00:13:46,690 পুরো তালিকা পড়ুন আছে শুধু প্রথম উপাদান একটি পয়েন্টার দ্বারা. 268 00:13:46,690 --> 00:13:49,360 সুতরাং আমরা একটি পাস করতে চান যে প্রথম উপাদান একটি পয়েন্টার, 269 00:13:49,360 --> 00:13:52,226 এবং যাই হোক না কেন আমরা মান তালিকায় যোগ করতে চান. 270 00:13:52,226 --> 00:13:54,600 এবং অবশেষে এই ফাংশন একটি পয়েন্টার ফেরত যাচ্ছে 271 00:13:54,600 --> 00:13:57,980 একটি লিঙ্ক তালিকা নতুন মাথা থেকে. 272 00:13:57,980 --> 00:13:59,700 >> এখানে জড়িত পদক্ষেপ কি কি? 273 00:13:59,700 --> 00:14:02,249 ওয়েল, শুধু তৈরি সঙ্গে মত, আমরা পরিবর্তনশীল বরাদ্দ করা প্রয়োজন 274 00:14:02,249 --> 00:14:05,540 একটি নতুন নোডের জন্য স্থান, এবং পরীক্ষা করা হবে নিশ্চিত আমরা মেমরি রান আউট না, আবার, 275 00:14:05,540 --> 00:14:07,150 আমরা malloc ব্যবহার করছেন কারণ. 276 00:14:07,150 --> 00:14:09,080 তারপর আমরা পূরণ করতে চান এবং, নোড সন্নিবেশ 277 00:14:09,080 --> 00:14:12,730 তাই সংখ্যা করা, যাই হোক না কেন Val নোডের মধ্যে, হয়. 278 00:14:12,730 --> 00:14:17,310 আমরা এ নোড সন্নিবেশ করতে চান লিঙ্ক তালিকা শুরুতে. 279 00:14:17,310 --> 00:14:19,619 >> একটি কারণ আছে যে আমি এই কাজ করতে চান, এবং এটা 280 00:14:19,619 --> 00:14:21,910 একটি দ্বিতীয় গ্রহণ মূল্য হতে পারে এখানে ভিডিও বিরতি, 281 00:14:21,910 --> 00:14:25,860 এবং আমি করতে চান কেন আমার মনে হয় একটি লিঙ্ক প্রারম্ভে সন্নিবেশ 282 00:14:25,860 --> 00:14:26,589 তালিকায়. 283 00:14:26,589 --> 00:14:28,630 আবার, আমি আগে উল্লেখ এটা সত্যিই না যে 284 00:14:28,630 --> 00:14:33,020 আমরা কোন এটি সংরক্ষণ করা হলে কোন ব্যাপার অর্ডার, তাই হয়ত যে একটি সূত্র. 285 00:14:33,020 --> 00:14:36,040 এবং আমরা যদি ঘটতে পারে কি দেখেছি চেয়েছিলেন চাচ্ছি বা শুধু এই একটি দ্বিতীয় থেকে 286 00:14:36,040 --> 00:14:37,360 আগে যখন আমরা চালু হয়েছে অনুসন্ধান মাধ্যমে আপনি 287 00:14:37,360 --> 00:14:39,235 কি হতে পারে দেখতে পারে আমরা চেষ্টা করা হয়েছে কিনা এরকম 288 00:14:39,235 --> 00:14:41,330 তালিকার শেষে সন্নিবেশ. 289 00:14:41,330 --> 00:14:44,750 আমরা একটি আছে না, কারণ তালিকার শেষে পয়েন্টার. 290 00:14:44,750 --> 00:14:47,490 >> তাই কারণ আমি চাই যে প্রারম্ভে সন্নিবেশ, 291 00:14:47,490 --> 00:14:49,380 আমি অবিলম্বে তা না করতে পারেন, কারণ হয়. 292 00:14:49,380 --> 00:14:52,730 আমি শুরুতে একটি ইশারা আছে, এবং আমরা একটি দ্বিতীয় একটি চাক্ষুষ এই দেখতে পাবেন. 293 00:14:52,730 --> 00:14:55,605 কিন্তু আমি শেষে সন্নিবেশ করতে চান তাহলে, আমি শুরুতে শুরু আছে 294 00:14:55,605 --> 00:14:58,760 সব পথ, তর্ক শেষ, এবং তারপর এটি কর্মপ্রণালী. 295 00:14:58,760 --> 00:15:01,420 সুতরাং যে যে অর্থ হবে তালিকার শেষে ঢোকাতে 296 00:15:01,420 --> 00:15:04,140 এন এর একটি হে হয়ে যায় অপারেশন, ফিরে যাচ্ছে 297 00:15:04,140 --> 00:15:06,720 আমাদের আলোচনায় গণনীয় জটিলতা. 298 00:15:06,720 --> 00:15:10,140 এটি এন অপারেশন, যেখানে একটি হে হতে চাই তালিকায় বড়, এবং বড় পেয়েছিলাম হিসাবে, 299 00:15:10,140 --> 00:15:13,310 এবং বড়, এটা আরো পরিণত করব এবং কিছু কর্মপ্রণালী আরো কঠিন 300 00:15:13,310 --> 00:15:14,661 শেষে উপর. 301 00:15:14,661 --> 00:15:17,410 কিন্তু এটা সবসময় সত্যিই সহজ শুরুতে কিছু ট্যাক, 302 00:15:17,410 --> 00:15:19,060 আপনি শুরুতে সবসময় করছি. 303 00:15:19,060 --> 00:15:21,620 >> এবং আমরা আবার এই একটি চাক্ষুষ দেখতে পাবেন. 304 00:15:21,620 --> 00:15:24,100 এবং তারপর আমরা একবার সম্পন্ন করে ফেলেছেন, একবার আমরা নতুন নোডের ঢোকানো থাকেন, 305 00:15:24,100 --> 00:15:26,880 আমরা আমাদের পয়েন্টার ফেরত চাই একটি লিঙ্ক তালিকা নতুন মাথা, যা 306 00:15:26,880 --> 00:15:29,213 আমরা এ ঢোকাতে করছি, যেহেতু শুরুতে, আসলে হবে 307 00:15:29,213 --> 00:15:31,060 আমরা শুধু তৈরি নোডের একটি পয়েন্টার. 308 00:15:31,060 --> 00:15:33,280 , এর এই ঠাহর করা যাক কারণ আমি এটা সাহায্য করব না. 309 00:15:33,280 --> 00:15:36,661 >> তাই এখানে আমাদের তালিকায়, এটা নিয়ে গঠিত চারটি উপাদান, একটি নোড, 15 ধারণকারী 310 00:15:36,661 --> 00:15:38,410 যা একটি নোডের স্থানটিকে 9 ধারণকারী যা 311 00:15:38,410 --> 00:15:41,370 13 ধারণকারী একটি নোড স্থানটিকে, যা ধারণকারী একটি নোড স্থানটিকে 312 00:15:41,370 --> 00:15:44,840 নাল যা 10, তার পরের পয়েন্টার হিসেবে পয়েন্টার 313 00:15:44,840 --> 00:15:47,010 তাই যে তালিকার শেষ. 314 00:15:47,010 --> 00:15:50,200 সুতরাং আমরা একটি সন্নিবেশ করতে চান মূল্য 12 সঙ্গে নতুন নোড 315 00:15:50,200 --> 00:15:52,720 এই শুরুতে তালিকায়, আমরা কি করব? 316 00:15:52,720 --> 00:15:58,770 ওয়েল, আমরা প্রথমে স্থান malloc নোড, এবং তারপর আমরা সেখানে 12 করা. 317 00:15:58,770 --> 00:16:02,211 >> তাই এখন আমরা পৌঁছে গেছেন একটি সিদ্ধান্ত বিন্দু, ডান? 318 00:16:02,211 --> 00:16:03,960 আমরা একটি দম্পতি আছে পয়েন্টার যে আমরা পারা 319 00:16:03,960 --> 00:16:06,770 আমরা প্রথম যা এক সরানো উচিত, সরানো? 320 00:16:06,770 --> 00:16:09,250 আমরা 12 পয়েন্ট করা উচিত তালিকার নতুন প্রধান 321 00:16:09,250 --> 00:16:13,020 অথবা আমাকে মাফ, আমরা 12 করা উচিত তালিকার পুরানো মাথার দিকে নির্দেশ? 322 00:16:13,020 --> 00:16:15,319 অথবা আমরা বলতে হবে তালিকায় এখন 12 টায় শুরু হয়. 323 00:16:15,319 --> 00:16:17,110 একটি পার্থক্য আছে সেখানে, এবং আমরা পর্যবেক্ষণ করব 324 00:16:17,110 --> 00:16:19,870 সঙ্গে উভয় একটি দ্বিতীয় মধ্যে কি এ. 325 00:16:19,870 --> 00:16:23,350 >> কিন্তু এই একটি বাড়ে পার্শ্বদন্ডে জন্য মহান বিষয়, 326 00:16:23,350 --> 00:16:26,280 যা হল যে এক সংযুক্ত তালিকার সঙ্গে trickiest জিনিস 327 00:16:26,280 --> 00:16:30,980 পয়েন্টার ব্যবস্থা করা হয় সঠিক অনুক্রমে. 328 00:16:30,980 --> 00:16:34,520 আপনি যাতে বাইরে কিছু সরানো হলে, যদি আপনি দূর্ঘটনাক্রমে শেষ করা যাবে না 329 00:16:34,520 --> 00:16:36,050 তালিকার বাকি অনাথ. 330 00:16:36,050 --> 00:16:37,300 আর এখানে যে একটি উদাহরণ. 331 00:16:37,300 --> 00:16:40,540 সুতরাং আসুন ধারণা নিয়ে যেতে দিন র ভাল, আমরা মাত্র 12 তৈরি করেছি. 332 00:16:40,540 --> 00:16:43,180 আমরা 12 হতে যাচ্ছে জানি তালিকায় নতুন সর্বময় কর্তা 333 00:16:43,180 --> 00:16:47,660 এবং তাই কেন আমরা কেবল নোড়ো না তালিকায় পয়েন্টার সেখানে নির্দেশ. 334 00:16:47,660 --> 00:16:49,070 >> ঠিক আছে, তাই কি ভালো দেখায়. 335 00:16:49,070 --> 00:16:51,560 তাই এখন যেখানে 12 পরবর্তী বিন্দু আছে? 336 00:16:51,560 --> 00:16:54,580 আমি দৃশ্যত আমরা দেখতে পারেন, মানে এটা 15 থেকে নির্দেশ করবে, 337 00:16:54,580 --> 00:16:57,250 মানুষ হিসাবে এটা আমাদের জন্য সত্যিই সুস্পষ্ট. 338 00:16:57,250 --> 00:17:00,300 কিভাবে কম্পিউটার জানেন না? 339 00:17:00,300 --> 00:17:02,720 আমরা কিছু করতে হবে না আর 15 এর প্রতি নির্দেশ, ডান? 340 00:17:02,720 --> 00:17:05,869 >> আমরা 15 পড়ুন করার কোনো ক্ষমতা হারিয়ে ফেলেছি. 341 00:17:05,869 --> 00:17:11,460 আমরা নতুন তীর পরের সমান বলে না পারেন কিছু সেখানে কিছুই নেই. 342 00:17:11,460 --> 00:17:13,510 আসলে, আমরা এতিম করেছি তালিকার বাকি 343 00:17:13,510 --> 00:17:16,465 এমনটি করে, আমরা করেছি ঘটনাক্রমে শৃঙ্খল ভাঙ্গা. 344 00:17:16,465 --> 00:17:18,089 আর আমরা অবশ্যই তা করতে চাই না. 345 00:17:18,089 --> 00:17:20,000 >> তাই আসুন ফিরে যান এবং আবার চেষ্টা করা যাক. 346 00:17:20,000 --> 00:17:24,060 হয়তো ডান জিনিস করতে 12 এর পরের পয়েন্টার সেট করা হয় 347 00:17:24,060 --> 00:17:28,290 প্রথম তালিকার পুরানো মাথা থেকে, তারপর আমরা তালিকায় উপর স্থানান্তর করতে পারেন. 348 00:17:28,290 --> 00:17:30,420 এবং সত্য, যে হয় সঠিক অনুক্রমে আমরা যে 349 00:17:30,420 --> 00:17:32,836 আমরা যখন অনুসরণ করা প্রয়োজন একেলা লিঙ্ক তালিকা সঙ্গে কাজ. 350 00:17:32,836 --> 00:17:36,460 আমরা সবসময় সংযোগ স্থাপন করতে চান তালিকার মধ্যে নতুন উপাদান, 351 00:17:36,460 --> 00:17:41,010 আমরা যে ধরনের গ্রহণ আগে পরিবর্তন গুরুত্বপূর্ণ পদক্ষেপ 352 00:17:41,010 --> 00:17:43,360 যেখানে লিঙ্ক তালিকা প্রধান. 353 00:17:43,360 --> 00:17:46,740 আবার, যে যেমন একটি মৌলিক জিনিস, আমরা এটা সম্পর্কে অবগত হারাতে চাই না. 354 00:17:46,740 --> 00:17:49,310 >> তাই আমরা যে নিশ্চিত করতে চাই সবকিছু একসঙ্গে শৃঙ্খলিত 355 00:17:49,310 --> 00:17:52,040 আমরা যে পয়েন্টার সরানো আগে. 356 00:17:52,040 --> 00:17:55,300 আর তাই এই সঠিক অনুক্রমে হবে, যা তালিকায় 12 সংযোগ করা হয়, 357 00:17:55,300 --> 00:17:57,630 তারপর তালিকায় একটি 12 শুরু করে. 358 00:17:57,630 --> 00:18:00,860 আমরা তালিকায় 12 এ শুরু বলেন, যদি ও তারপর, তালিকায় 12 সংযোগ করার চেষ্টা 359 00:18:00,860 --> 00:18:02,193 আমরা ইতিমধ্যে কি দেখা করেছি. 360 00:18:02,193 --> 00:18:04,920 আমরা ভুল করে তালিকা হারান. 361 00:18:04,920 --> 00:18:06,740 >> ঠিক আছে, তাই আরও একটি জিনিস সম্পর্কে কথা বলার জন্য. 362 00:18:06,740 --> 00:18:09,750 আমরা কি পরিত্রাণ পেতে চান তাহলে একটি সম্পূর্ণ একযোগে তালিকায় যুক্ত? 363 00:18:09,750 --> 00:18:11,750 আবার, আমরা mallocing করছি এই সব স্থান, এবং তাই আমরা 364 00:18:11,750 --> 00:18:13,351 আমরা কাজ করছি যখন এটি মুক্ত করা প্রয়োজন. 365 00:18:13,351 --> 00:18:15,350 তাই এখন আমরা মুছে ফেলতে চান সমগ্র লিঙ্ক তালিকা. 366 00:18:15,350 --> 00:18:16,850 ওয়েল, আমরা কি করতে চান না? 367 00:18:16,850 --> 00:18:20,460 >> আমরা নাল পয়েন্টার পৌঁছে গেছেন, তাহলে আমরা অন্যথায়, শুধু মুছে, বন্ধ করতে চান 368 00:18:20,460 --> 00:18:23,420 তারপর তালিকার বাকি এবং আমার মুক্ত. 369 00:18:23,420 --> 00:18:28,890 তালিকার বাকি মুছে, এবং তারপর বর্তমান নোড মুক্ত. 370 00:18:28,890 --> 00:18:32,850 মত যে শব্দ আছে কি, কি কৌশল আমরা বললাম আছে 371 00:18:32,850 --> 00:18:35,440 সম্পর্কে পূর্বে মত যে শব্দ আছে? 372 00:18:35,440 --> 00:18:39,560 তারপর, অন্য সবাই মুছে ফিরে এসে আমাকে মুছে দিন. 373 00:18:39,560 --> 00:18:42,380 >> যে recursion, আমরা তৈরি করেছি একটি সামান্য বিট ছোট সমস্যা, 374 00:18:42,380 --> 00:18:46,910 আমরা সবাই মুছে বলছে অন্য, তাহলে আপনি আমাকে মুছে দিতে পারেন. 375 00:18:46,910 --> 00:18:50,940 এবং আরও রাস্তা নিচে, যে নোড অন্য সবাই মুছে, বলতে হবে. 376 00:18:50,940 --> 00:18:53,940 কিন্তু শেষ পর্যন্ত আমরা কিনবো তালিকায় নাল বিন্দু যেখানে, 377 00:18:53,940 --> 00:18:55,310 এবং যে আমাদের বেস কেস. 378 00:18:55,310 --> 00:18:57,010 >> তাই আসুন এই কটাক্ষপাত করা যাক, এবং এই কাজ করতে পারে কিভাবে. 379 00:18:57,010 --> 00:18:59,759 তাই এখানে আমাদের তালিকায়, এটা একই আমরা শুধু যে বিষয়ে কথা বলছি তালিকায় 380 00:18:59,759 --> 00:19:00,980 এবং ধাপ আছে. 381 00:19:00,980 --> 00:19:04,200 টেক্সট অনেক এখানে আছে কিন্তু আশা কল্পনা করতে সহায়তা করবে. 382 00:19:04,200 --> 00:19:08,557 >> সুতরাং আমরা থাকতে এবং আমি টানা আমাদের স্ট্যাকের ফ্রেম চিত্রণ আপ 383 00:19:08,557 --> 00:19:10,890 কল stacks এর উপর আমাদের ভিডিও থেকে, এবং আশা করছি এই সব 384 00:19:10,890 --> 00:19:13,260 একসঙ্গে ঘটছে তা আপনাকে দেখাতে হবে. 385 00:19:13,260 --> 00:19:14,510 তাই এখানে আমাদের pseudocode কোড এর. 386 00:19:14,510 --> 00:19:17,830 আমরা একটি নাল পৌঁছাতে হলে পয়েন্টার, অন্যথায়, বন্ধ 387 00:19:17,830 --> 00:19:21,320 তালিকার বাকি মুছে, তারপর বর্তমান নোড মুক্ত. 388 00:19:21,320 --> 00:19:25,700 তাই এই মুহূর্তে, তালিকার আমরা যে পয়েন্টার 389 00:19:25,700 --> 00:19:28,410 কথা প্রসঙ্গে 12 পয়েন্ট ধ্বংস. 390 00:19:28,410 --> 00:19:33,340 12 একটি নাল পয়েন্টার হয় না, তাই আমরা করছি তালিকার বাকি মুছে যাচ্ছে. 391 00:19:33,340 --> 00:19:35,450 >> কি মুছে ফেলা হয় আমাদের বাকি জড়িত? 392 00:19:35,450 --> 00:19:37,950 হ্যাঁ, এটি একটি তৈরীর মানে বলার অপেক্ষা রাখে না, ধ্বংস কল 393 00:19:37,950 --> 00:19:42,060 15 যে শুরুতে হয় আমরা ধ্বংস করতে চান তালিকার বাকি. 394 00:19:42,060 --> 00:19:47,480 তাই কল ধ্বংস 12 হোল্ড ধরনের হয়. 395 00:19:47,480 --> 00:19:52,690 এটা জন্য অপেক্ষা করছে, সেখানে বরফওয়ালা তার কাজ শেষ করতে, 15 ধ্বংস কল. 396 00:19:52,690 --> 00:19:56,280 >> ওয়েল, 15 একটি নাল পয়েন্টার নয়, এবং তাই এটা বলে যাচ্ছে, ঠিক আছে, 397 00:19:56,280 --> 00:19:58,450 ভাল, তালিকা বাকি মুছে দিন. 398 00:19:58,450 --> 00:20:00,760 তালিকার বাকি শুরু 9 এ, তাই আমরা ঠিক করব 399 00:20:00,760 --> 00:20:04,514 আপনি সব মুছে দিন পর্যন্ত অপেক্ষা করে স্টাফ, তারপর ফিরে এসে আমাকে মুছে দিন. 400 00:20:04,514 --> 00:20:06,680 ওয়েল 9 ভাল, বলে যাচ্ছে, আমি একটি নাল পয়েন্টার নই 401 00:20:06,680 --> 00:20:09,020 তাই এখান থেকে বাকি তালিকা মুছে দিন. 402 00:20:09,020 --> 00:20:11,805 তাই চেষ্টা করুন এবং 13 ধ্বংস. 403 00:20:11,805 --> 00:20:15,550 13, আমি নাল পয়েন্টার নই বলেছেন একই জিনিস, এটা হরিণ প্রেরণ করা হয়. 404 00:20:15,550 --> 00:20:17,930 10, 10 নাল পয়েন্টার নয় একটি নাল পয়েন্টার রয়েছে, 405 00:20:17,930 --> 00:20:20,200 কিন্তু 10 না নিজেই একটি হল নাল মুহূর্তে পয়েন্টার, 406 00:20:20,200 --> 00:20:22,470 এবং তাই এটা খুব ছাগ প্রেরণ করা হয়. 407 00:20:22,470 --> 00:20:25,560 >> এবং এখন, সেখানে এটা পয়েন্ট তালিকায় সত্যিই some-- নির্দেশ করবে 408 00:20:25,560 --> 00:20:28,710 আমি ছবিতে আরও জায়গা ছিল, এটা কিছু র্যান্ডম স্থান নির্দেশ করবে 409 00:20:28,710 --> 00:20:29,960 আমরা কি এটা জানেন না যে. 410 00:20:29,960 --> 00:20:34,680 এটা যদিও নাল পয়েন্টার, তালিকা আক্ষরিক এখন এটা নাল মান নির্ধারণ করা হয়েছে. 411 00:20:34,680 --> 00:20:36,820 এটা ঠিক যে লাল বক্সের ভিতরে ইশারা করছে. 412 00:20:36,820 --> 00:20:39,960 আমরা তাই, একটি নাল পয়েন্টার পৌঁছেছেন আমরা বন্ধ করতে পারবেন, এবং আমরা কাজ করছি. 413 00:20:39,960 --> 00:20:46,230 >> আর তাই যে রক্তবর্ণ ফ্রেম এ এখন আমি হয় সক্রিয় ফ্রেম যে স্ট্যাক উপরের, 414 00:20:46,230 --> 00:20:47,017 কিন্তু এটি করা হচ্ছে. 415 00:20:47,017 --> 00:20:48,600 আমরা একটি নাল পয়েন্টার পৌঁছেছেন করেছি, বন্ধ. 416 00:20:48,600 --> 00:20:51,290 আমরা, কিছু করবেন না আমরা একটি নাল পয়েন্টার মুক্ত করতে পারে না, 417 00:20:51,290 --> 00:20:55,070 আমরা কোনো malloc করা হয়নি স্থান, এবং তাই আমরা কাজ করছি. 418 00:20:55,070 --> 00:20:57,590 যে ফাংশন ফ্রেম তাই ধ্বংস, এবং আমরা 419 00:20:57,590 --> 00:21:00,930 আমরা যেখানে আপনি বাম resume-- আমরা নিতে পরবর্তী সর্বোচ্চ এক সঙ্গে বন্ধ যা 420 00:21:00,930 --> 00:21:02,807 এখানে এই গাঢ় নীল ফ্রেম হয়. 421 00:21:02,807 --> 00:21:04,390 তাই আমরা যদি আমরা বাম বন্ধ উপরে ডানে বাছাই যেখানে. 422 00:21:04,390 --> 00:21:06,598 আমরা বাকি মোছা তালিকায় আগে থেকেই, তাই এখন আমরা করছি 423 00:21:06,598 --> 00:21:08,000 বর্তমান নোড মুক্ত করতে যাচ্ছি. 424 00:21:08,000 --> 00:21:12,920 তাই এখন আমরা এখন এই নোড মুক্ত, এবং পারেন আমরা ফাংশন শেষে পৌঁছে গেছেন. 425 00:21:12,920 --> 00:21:16,810 আর তাই যে ফাংশন ফ্রেম, ধ্বংস হয় এবং আমরা হালকা নীল এক সময়ে কুড়ান. 426 00:21:16,810 --> 00:21:20,650 >> তাই এটা আমি ইতিমধ্যে done-- থাকেন says-- তালিকার বাকি মোছার তাই 427 00:21:20,650 --> 00:21:23,140 বর্তমান নোড মুক্ত. 428 00:21:23,140 --> 00:21:26,520 আর এখন হলুদ ফ্রেম হয় ফিরে স্ট্যাকের উপর. 429 00:21:26,520 --> 00:21:29,655 আপনি দেখতে এবং তাই, আমরা এখন করছি ডান থেকে তালিকায় অন্তক বাম. 430 00:21:29,655 --> 00:21:33,710 431 00:21:33,710 --> 00:21:37,280 >> কিন্ত, ঘটেছে হবে আমরা কিছু ভুল ভাবে কাজ ছিল? 432 00:21:37,280 --> 00:21:39,410 শুধু যখন আমরা চেষ্টা করেছি ভালো একটি উপাদান যোগ করার জন্য. 433 00:21:39,410 --> 00:21:41,909 আমরা যদি চেইন, বিশৃঙ্খলার সৃষ্টি করে আমরা পয়েন্টার সংযোগ করা হয়নি 434 00:21:41,909 --> 00:21:44,690 সঠিক অনুক্রমে, আমরা যদি শুধু প্রথম উপাদান মুক্ত, 435 00:21:44,690 --> 00:21:47,420 আমরা শুধু মুক্ত হলে তালিকার মাথা, এখন আমরা 436 00:21:47,420 --> 00:21:49,642 পড়ুন করার কোন উপায় আছে তালিকার বাকি. 437 00:21:49,642 --> 00:21:51,350 আর তাই আমরা হবে এতিম সবকিছু, 438 00:21:51,350 --> 00:21:53,880 আমরা কি ছিল হবে একটি মেমরি লিক বলা. 439 00:21:53,880 --> 00:21:56,800 আপনি যদি আমাদের ভিডিও থেকে প্রত্যাহার করা হলে ডাইনামিক মেমরি বরাদ্দ উপর, 440 00:21:56,800 --> 00:21:58,650 যে খুব ভাল জিনিস না. 441 00:21:58,650 --> 00:22:00,810 >> সুতরাং হিসাবে আমি সেখানে বলেন, বিভিন্ন অপারেশন 442 00:22:00,810 --> 00:22:04,010 আমরা কাজ করতে ব্যবহার করতে হবে যে সঙ্গে কার্যকরভাবে তালিকায় যুক্ত. 443 00:22:04,010 --> 00:22:08,430 আর আপনি, আমি এক বাদ লক্ষ্য করে হতে পারে একটি লিঙ্ক থেকে একটি একক উপাদান মুছে ফেলার 444 00:22:08,430 --> 00:22:09,064 তালিকায়. 445 00:22:09,064 --> 00:22:10,980 আমি যে কি কারণে এটা আসলে কোন ধরনের হয় 446 00:22:10,980 --> 00:22:14,360 মুছে কিভাবে চিন্তা করতে প্রবঞ্চক একটি একেলা থেকে একটি একক উপাদান 447 00:22:14,360 --> 00:22:15,600 লিঙ্ক তালিকা. 448 00:22:15,600 --> 00:22:19,950 আমরা উপর লাফালাফি করতে সক্ষম হতে হবে তালিকায়, কিছু যা 449 00:22:19,950 --> 00:22:22,975 আমরা একটি point-- আমরা পেতে মানে এই নোড মুছে ফেলতে চান 450 00:22:22,975 --> 00:22:25,350 কিন্তু যাতে আমরা এটা যাতে না করতে কোন তথ্য হারাবেন না, 451 00:22:25,350 --> 00:22:30,530 আমরা এই সংযোগ প্রয়োজন এখানে ওভার নোড,. 452 00:22:30,530 --> 00:22:33,390 >> তাই আমি সম্ভবত যে ভুল করেনি একটি চাক্ষুষ দৃষ্টিকোণ থেকে. 453 00:22:33,390 --> 00:22:36,830 তাই আমরা শুরুতে আছেন আমাদের তালিকায়, আমরা মাধ্যমে অগ্রসর করছি 454 00:22:36,830 --> 00:22:40,510 আমরা এই নোড মুছে ফেলতে চান. 455 00:22:40,510 --> 00:22:43,440 আমরা শুধু এটা মুছে ফেলা হলে আমরা শৃঙ্খল ভাঙ্গা করেছি. 456 00:22:43,440 --> 00:22:45,950 ঠিক এই নোড অন্য সব কিছুর বোঝায়, 457 00:22:45,950 --> 00:22:48,260 এটা এখন থেকে চেইন রয়েছে. 458 00:22:48,260 --> 00:22:51,190 >> সুতরাং আমরা আসলে কি করা উচিত সে আমরা এই বিন্দু পেতে পরে, 459 00:22:51,190 --> 00:22:56,670 আমরা এক একধাপ পিছনে প্রয়োজন, এবং হয় এই নোড এই নোড উপর সংযোগ, 460 00:22:56,670 --> 00:22:58,590 তাই আমরা তারপর মুছে দিতে পারেন মাঝখানে এক. 461 00:22:58,590 --> 00:23:02,120 কিন্তু একেলা লিঙ্ক তালিকা না আমাদের পিছনের দিকে যেতে একটি উপায় প্রদান. 462 00:23:02,120 --> 00:23:05,160 যাতে আমরা রাখা প্রয়োজন দুই পয়েন্টার, এবং তাদের সরানো 463 00:23:05,160 --> 00:23:09,527 বন্ধ ধাপে সাজানোর পিছনে এক অন্যান্য আমরা যেতে, অথবা একটি বিন্দু পেতে হিসাবে 464 00:23:09,527 --> 00:23:11,110 এবং তারপর মাধ্যমে অন্য পয়েন্টার পাঠাতে. 465 00:23:11,110 --> 00:23:13,150 এবং আপনি এটি দেখতে পারেন হিসাবে একটু মলিন পেতে পারেন. 466 00:23:13,150 --> 00:23:15,360 সৌভাগ্যবশত, আমরা আছে অন্য উপায় যে আপনি সমাধান করতে, 467 00:23:15,360 --> 00:23:17,810 যখন আমরা দোকর লিঙ্ক তালিকা সম্পর্কে কথা বলতে. 468 00:23:17,810 --> 00:23:20,720 >> আমি ডগ লয়েড আছি, এই CS50. 469 00:23:20,720 --> 00:23:22,298