1 00:00:07,260 --> 00:00:10,050 [Powered by Google Translate] প্রোগ্রামিং, আমরা প্রায়ই মান তালিকা চিত্রিত করা প্রয়োজন, 2 00:00:10,050 --> 00:00:12,840 যেমন ছাত্র হিসাবে একটি অধ্যায় এর নাম 3 00:00:12,840 --> 00:00:15,100 সর্বশেষ ব্যঙ্গ বা তাদের স্কোর. 4 00:00:15,100 --> 00:00:17,430 >> সি ভাষায়, ঘোষিত অ্যারে ব্যবহার করা যাবে 5 00:00:17,430 --> 00:00:19,160 যাও তালিকা সঞ্চয়. 6 00:00:19,160 --> 00:00:21,200 এটা একটি তালিকা উপাদান গনা সহজ 7 00:00:21,200 --> 00:00:23,390 সঞ্চিত একটি অ্যারের মধ্যে, এবং যদি আপনি অ্যাক্সেস প্রয়োজন 8 00:00:23,390 --> 00:00:25,050 অথবা ith তালিকা উপাদান সংশোধন করুন 9 00:00:25,050 --> 00:00:27,570 জন্য কিছু অবাধ সূচক আমি, 10 00:00:27,570 --> 00:00:29,910 যে ধ্রুব সময় এটি করা সম্ভব, 11 00:00:29,910 --> 00:00:31,660 কিন্তু অ্যারে অসুবিধেও আছে খুব,. 12 00:00:31,660 --> 00:00:33,850 >> যখন আমরা তাদের ডিক্লেয়ার, আমরা বলতে প্রয়োজন করছি 13 00:00:33,850 --> 00:00:35,900 আপ সামনে কত বড় তারা হয়, 14 00:00:35,900 --> 00:00:38,160 যে হয়, কতগুলি উপাদান তারা সঞ্চয় করতে পারেন 15 00:00:38,160 --> 00:00:40,780 এবং কিভাবে বড় এই উপাদান হল, যা তাদের টাইপ দ্বারা নির্ধারিত হয়. 16 00:00:40,780 --> 00:00:45,450 উদাহরণস্বরূপ, int-Arr (10) 17 00:00:45,450 --> 00:00:48,220 10 আইটেম সঞ্চয় করতে পারেন 18 00:00:48,220 --> 00:00:50,200 যে কোন int মাপ. 19 00:00:50,200 --> 00:00:52,590 >> আমরা ঘোষণার পর একটি অ্যারে এর আকার পরিবর্তন করতে পারবেন না. 20 00:00:52,590 --> 00:00:55,290 আমরা একটি নতুন অ্যারে করতে হবে যদি আমরা আরো উপাদান সঞ্চয় করতে চান. 21 00:00:55,290 --> 00:00:57,410 কারণ এই সীমাবদ্ধতা উপস্থিত যে আমাদের 22 00:00:57,410 --> 00:00:59,040 প্রোগ্রাম সমগ্র অ্যারের সঞ্চয় 23 00:00:59,040 --> 00:01:02,310 হিসাবে একটি মেমরি সংলগ্ন অঞ্চলে. 24 00:01:02,310 --> 00:01:04,500 বলুন এই বাফার যেখানে আমরা আমাদের অ্যারের মধ্যে সংরক্ষণ করা হয়. 25 00:01:04,500 --> 00:01:06,910 অন্যান্য ভেরিয়েবল পর্যন্ত হতে পারে 26 00:01:06,910 --> 00:01:08,310 ডান পাশে অবস্থিত অ্যারে 27 00:01:08,310 --> 00:01:10,060 মেমরি, তাই আমরা নারা 28 00:01:10,060 --> 00:01:12,060 শুধু অ্যারের বড় করতে. 29 00:01:12,060 --> 00:01:15,700 >> কখনও কখনও আমরা অ্যারে এর তথ্য দ্রুত এক্সেস গতি ট্রেড চাই 30 00:01:15,700 --> 00:01:17,650 জন্য একটু আরো নমনীয়তা. 31 00:01:17,650 --> 00:01:20,380 লিঙ্ক তালিকা, অন্য একটি মৌলিক তথ্য গঠন লিখুন 32 00:01:20,380 --> 00:01:22,360 আপনার সাথে পরিচিত হতে না পারে. 33 00:01:22,360 --> 00:01:24,200 একটি উচ্চ স্তরের, 34 00:01:24,200 --> 00:01:26,840 একটি লিঙ্ক তালিকা নোডের একটি অনুক্রম তথ্য সঞ্চয় 35 00:01:26,840 --> 00:01:29,280 প্রতিটি অন্যান্য লিঙ্ক সঙ্গে সংযুক্ত করা হয়, 36 00:01:29,280 --> 00:01:31,760 তাই নাম 'লিঙ্ক তালিকা.' 37 00:01:31,760 --> 00:01:33,840 হিসাবে আমরা দেখতে পাবেন, নকশা মধ্যে এই পার্থক্য 38 00:01:33,840 --> 00:01:35,500 বিভিন্ন সুবিধার বাড়ে এবং অসুবিধেও যাও 39 00:01:35,500 --> 00:01:37,000 তুলনায় একটি অ্যারে. 40 00:01:37,000 --> 00:01:39,840 >> এখানে একটি খুব সহজ ইন্টিজার এর লিঙ্ক তালিকা জন্য সি কোড. 41 00:01:39,840 --> 00:01:42,190 আপনি যে আমরা প্রতিটি নোডের প্রতিনিধিত্ব আছে দেখতে পারেন 42 00:01:42,190 --> 00:01:45,520 একটি struct যা 2 জিনিস রয়েছে হিসাবে তালিকা, 43 00:01:45,520 --> 00:01:47,280 একটি পূর্ণসংখ্যা স্টোর নামক 'Val' 44 00:01:47,280 --> 00:01:50,460 এবং পরবর্তী নোডের একটি তালিকা লিঙ্ক 45 00:01:50,460 --> 00:01:52,990 যা আমরা একটি পয়েন্টার নামক হিসাবে চিত্রিত করা 'পরের.' 46 00:01:54,120 --> 00:01:56,780 এই ভাবে, আমরা সম্পূর্ণ তালিকা ট্র্যাক করতে পারেন 47 00:01:56,780 --> 00:01:58,790 শুধুমাত্র 1 ম নোড যাও একক পয়েন্টার, 48 00:01:58,790 --> 00:02:01,270 এবং তারপর আমরা পরের পয়েন্টার অনুসরণ করতে পারেন 49 00:02:01,270 --> 00:02:03,130 যাও 2nd নোড, 50 00:02:03,130 --> 00:02:05,280 যাও 3rd নোড, 51 00:02:05,280 --> 00:02:07,000 যাও 4th নোড, 52 00:02:07,000 --> 00:02:09,889 এবং তাই, যতক্ষণ না আমরা তালিকার শেষে পেতে. 53 00:02:10,520 --> 00:02:12,210 >> আপনি 1 এই সুবিধা আছে দেখতে পাবে 54 00:02:12,210 --> 00:02:14,490 উপর স্থির কাঠামো অ্যারে - সঙ্গে একটি লিঙ্ক তালিকা, 55 00:02:14,490 --> 00:02:16,450 আমরা সম্পূর্ণভাবে প্রয়োজন একটি মেমরি বড় তাল না. 56 00:02:17,400 --> 00:02:20,530 তালিকার 1 ম নোড মেমরির মধ্যে এই স্থানে বাস করতে পারে, 57 00:02:20,530 --> 00:02:23,160 এবং 2nd নোডের মধ্যে সমস্ত এখানে উপর উপায় হতে পারে. 58 00:02:23,160 --> 00:02:25,780 আমরা সমস্ত নোড কোন ব্যাপার পেতে যেখানে তারা মেমরি পারেন, 59 00:02:25,780 --> 00:02:28,890 কারণ শুরু 1st নোড এ, প্রতিটি নোডের এর পরের পয়েন্টার 60 00:02:28,890 --> 00:02:31,700 আমাদেরকে বলে ঠিক যেখানে পরবর্তী যান. 61 00:02:31,700 --> 00:02:33,670 >> উপরন্তু, আমরা সামনে বলতে আপ না 62 00:02:33,670 --> 00:02:36,740 কত বড় একটি লিঙ্ক তালিকা উপায় আমরা স্থির অ্যারে না হবে, 63 00:02:36,740 --> 00:02:39,060 যেহেতু আমরা একটি তালিকা নোডের যুক্ত করে যেতে পারবেন 64 00:02:39,060 --> 00:02:42,600 যতদিন নতুন নোডের জন্য মেমরি আছে কোথাও স্থান. 65 00:02:42,600 --> 00:02:45,370 অতএব, সংযুক্ত তালিকাগুলি পরিবর্তনশীলরূপে মাপ পরিবর্তন করা সহজ. 66 00:02:45,370 --> 00:02:47,950 বলুন, আমরা পরে আরো যোগ নোড প্রোগ্রামের প্রয়োজন 67 00:02:47,950 --> 00:02:49,350 আমাদের মধ্যে তালিকা. 68 00:02:49,350 --> 00:02:51,480 আমাদের তালিকায় উড়ে একটি নতুন নোডের মধ্যে সন্নিবেশ, 69 00:02:51,480 --> 00:02:53,740 সমস্ত আমরা করতে হবে তা হচ্ছে যে নোডের জন্য মেমরি বরাদ্দ করা, 70 00:02:53,740 --> 00:02:55,630 তথ্য মান অকস্মাৎ, 71 00:02:55,630 --> 00:02:59,070 এবং তারপর যেখানে আমরা যথাযথ পয়েন্টার সামঞ্জস্য স্থাপন করতে চান. 72 00:02:59,070 --> 00:03:02,310 >> উদাহরণস্বরূপ, যদি আমরা একটি নোডের মধ্যে স্থাপন করতে চেয়েছিলেন 73 00:03:02,310 --> 00:03:04,020 তালিকার 2nd এবং 3 য় নোড, 74 00:03:04,020 --> 00:03:06,800  আমরা 2nd 3rd বা নোড এ সব সরানো আছে না. 75 00:03:06,800 --> 00:03:09,190 বলুন, আমরা এই লাল নোড করছি ঢোকাতে. 76 00:03:09,190 --> 00:03:12,890 সমস্ত আমরা কি চাই নতুন নোড এর পরের পয়েন্টার সেট 77 00:03:12,890 --> 00:03:14,870 3rd নোড নির্দেশ 78 00:03:14,870 --> 00:03:18,580 এবং তারপর 2nd নোড এর পরের পয়েন্টার বৈদ্যুতিক তার লাগানো 79 00:03:18,580 --> 00:03:20,980 আমাদের নতুন নোডের দিকে নির্দেশ করে. 80 00:03:22,340 --> 00:03:24,370 সুতরাং, আমরা উড়ে আমাদের তালিকা মাপ পরিবর্তন করতে পারেন 81 00:03:24,370 --> 00:03:26,090 যেহেতু আমাদের কম্পিউটার ইন্ডেক্স উপর নির্ভর করে না, 82 00:03:26,090 --> 00:03:28,990 লিঙ্ক পয়েন্টার তাদের সঞ্চয় ব্যবহার করে বরং. 83 00:03:29,120 --> 00:03:31,600 >> তবে, একটা অসুবিধা লিঙ্ক তালিকা 84 00:03:31,600 --> 00:03:33,370 না যে, অসদৃশ একটি স্ট্যাটিক অ্যারে, 85 00:03:33,370 --> 00:03:36,690 কম্পিউটার ঠিক তালিকা মাঝখানে যাও না তিড়িং লাফ পারেন. 86 00:03:38,040 --> 00:03:40,780 যেহেতু কম্পিউটারের সাথে সংযুক্ত তালিকার প্রতিটি নোডের ভিজিট হয়েছে 87 00:03:40,780 --> 00:03:42,330 পরের এক পেতে, 88 00:03:42,330 --> 00:03:44,770 এটি আর একটি বিশেষ নোড খুঁজে নিতে যাচ্ছে 89 00:03:44,770 --> 00:03:46,400 তুলনায় এটি একটি অ্যারের হবে. 90 00:03:46,400 --> 00:03:48,660 যাও, তর্ক সম্পূর্ণ তালিকা সময় লাগে সমানুপাতিক 91 00:03:48,660 --> 00:03:50,580 তালিকার দৈর্ঘ্য, 92 00:03:50,580 --> 00:03:54,630 অথবা O (n) মধ্যে asymptotic স্বরলিপি. 93 00:03:54,630 --> 00:03:56,510 গড়ে, কোনো নোডের মধ্যে পৌঁছনোর 94 00:03:56,510 --> 00:03:58,800 এছাড়াও সময় লাগে সমানুপাতিক হবে যাও. 95 00:03:58,800 --> 00:04:00,700 >> এখন, আমি কি আসলে কিছু কোড লিখুন 96 00:04:00,700 --> 00:04:02,000 যে লিঙ্ক তালিকা সাথে কাজ করে. 97 00:04:02,000 --> 00:04:04,220 চলুন শুরু করা যাক বলতে আমরা একটি পূর্ণসংখ্যার এর লিঙ্ক তালিকা চাই. 98 00:04:04,220 --> 00:04:06,140 আমরা আমাদের তালিকা মধ্যে আবার একটি নোড উপস্থাপন করতে পারেন 99 00:04:06,140 --> 00:04:08,340 হিসাবে 2 ক্ষেত্রের সাথে একটি struct, 100 00:04:08,340 --> 00:04:10,750 একটি পূর্ণসংখ্যা মান নামক 'Val' 101 00:04:10,750 --> 00:04:13,490 এবং একটি তালিকা পরবর্তী নোডের পরবর্তী পয়েন্টার. 102 00:04:13,490 --> 00:04:15,660 ভাল, যথেষ্ট সহজ মনে হয়. 103 00:04:15,660 --> 00:04:17,220 >> চলুন শুরু করা যাক বলতে আমরা একটি ফাংশন লিখতে চান 104 00:04:17,220 --> 00:04:19,329 যা কপি করে প্রিন্ট আউট তালিকা এবং ঘোরে 105 00:04:19,329 --> 00:04:22,150 তালিকার সর্বশেষ নোডের মধ্যে মান সংরক্ষণ করা হয়. 106 00:04:22,150 --> 00:04:24,850 ভাল, মানে আমরা সমস্ত তালিকায় নোড, তর্ক করতে হবে 107 00:04:24,850 --> 00:04:27,310 গত এক পাবেন, কিন্তু যেহেতু আমরা যোগ করছি না 108 00:04:27,310 --> 00:04:29,250 বা কিছু মুছে ফেলা হচ্ছে, আমরা পরিবর্তন করতে ইচ্ছুক না 109 00:04:29,250 --> 00:04:32,210 তালিকায় পরবর্তী পয়েন্টার অভ্যন্তরীণ গঠন. 110 00:04:32,210 --> 00:04:34,790 >> সুতরাং, আমরা ট্র্যাভেরসাল জন্য একটি পয়েন্টার বিশেষভাবে করতে হবে 111 00:04:34,790 --> 00:04:36,940 যা আমরা 'ক্রলার.' ডাকবো 112 00:04:36,940 --> 00:04:38,870 এটা সমস্ত তালিকা উপাদানের মাধ্যমে হামাগুড়ি হবে 113 00:04:38,870 --> 00:04:41,190 দ্বারা পরবর্তী পয়েন্টার চেইন অনুসরণ. 114 00:04:41,190 --> 00:04:43,750 সমস্ত আমরা সঞ্চিত আছে 1st নোডের একটি পয়েন্টার, 115 00:04:43,750 --> 00:04:45,730 অথবা তালিকার 'মাথা'. 116 00:04:45,730 --> 00:04:47,370 1 ম নোড যাও প্রধান পয়েন্ট. 117 00:04:47,370 --> 00:04:49,120 এই পার্টিশনটির ধরন পয়েন্টার টু নোডের মধ্যে এর. 118 00:04:49,120 --> 00:04:51,280 >> প্রকৃত তালিকা নোডের মধ্যে 1 ম পেতে, 119 00:04:51,280 --> 00:04:53,250 dereference যাও আমরা এই পয়েন্টার আছে, 120 00:04:53,250 --> 00:04:55,100 কিন্তু আগে আমরা dereference পারেন, আমরা যাচাই প্রয়োজন 121 00:04:55,100 --> 00:04:57,180 যদি পয়েন্টার হয় প্রথম নাল. 122 00:04:57,180 --> 00:04:59,190 এটি যদি নাল, তালিকা খালি, 123 00:04:59,190 --> 00:05:01,320 এবং আমরা একটি বার্তা যে, কারণ তালিকা খালি আউট প্রিন্ট করা উচিত, 124 00:05:01,320 --> 00:05:03,250 কোন শেষ হয় নোড. 125 00:05:03,250 --> 00:05:05,190 কিন্তু, এর যাক বলতে তালিকা ফাঁকা করা হবে না. 126 00:05:05,190 --> 00:05:08,340 এটি যদি না থাকে, তাহলে আমরা সম্পূর্ণ তালিকা মাধ্যমে ক্রল করবে 127 00:05:08,340 --> 00:05:10,440 যতক্ষণ না আমরা তালিকার শেষ নোড পেতে, 128 00:05:10,440 --> 00:05:13,030 এবং কিভাবে আমরা বলতে যদি আমরা তালিকা নোডের মধ্যে শেষ সময়ে খুঁজছেন তা করতে পারেন? 129 00:05:13,670 --> 00:05:16,660 >> ওয়েল, যদি একটি নোড এর পরের নাল পয়েন্টার হয়, 130 00:05:16,660 --> 00:05:18,320 আমরা জানি যে আমরা শেষে করছি 131 00:05:18,320 --> 00:05:22,390 গত পরের পয়েন্টার তালিকার যে কোন নির্দেশ পরের নোড আছে. 132 00:05:22,390 --> 00:05:26,590 এটা ভাল অনুশীলন সর্বদা শেষ নোড এর পরের নাল পয়েন্টার যাও সক্রিয়া রাখা 133 00:05:26,590 --> 00:05:30,800 একটি প্রমিত সম্পত্তি যা আমাদের সতর্ক করে যখন আমরা তালিকার শেষে পৌঁছেছেন আছে. 134 00:05:30,800 --> 00:05:33,510 >> সুতরাং, যদি ক্রলার → পরবর্তী নাল, 135 00:05:34,120 --> 00:05:38,270 মনে রাখবেন, যে তীর সিনট্যাক্স dereferencing জন্য একটি শর্টকাট 136 00:05:38,270 --> 00:05:40,010 একটি struct একটি পয়েন্টার তারপর, অ্যাক্সেস 137 00:05:40,010 --> 00:05:42,510 তার পরের ক্ষেত্রের সমতুল্য বিশ্রী যাও: 138 00:05:42,510 --> 00:05:48,750 (* ক্রলার). পরের. 139 00:05:49,820 --> 00:05:51,260 একবার আমরা শেষ নোড পাওয়া করেছি, 140 00:05:51,260 --> 00:05:53,830 আমরা ক্রলার → Val প্রিন্ট করতে চান, 141 00:05:53,830 --> 00:05:55,000 বর্তমান নোডের মধ্যে মান 142 00:05:55,000 --> 00:05:57,130 যা আমরা জানি শেষ জোড়া. 143 00:05:57,130 --> 00:05:59,740 অন্যথায়, যদি আমরা এখনও তালিকা নোডের মধ্যে শেষ না, 144 00:05:59,740 --> 00:06:02,340 আমরা তালিকায় পরবর্তী নোডের উপর সরানো আছে 145 00:06:02,340 --> 00:06:04,750 এবং যদি যে গত এক চেক. 146 00:06:04,750 --> 00:06:07,010 এই কাজের জন্য, আমরা আমাদের ক্রলার পয়েন্টার সেট 147 00:06:07,010 --> 00:06:09,840 বর্তমান নোড এর পরের মান নির্দেশ, 148 00:06:09,840 --> 00:06:11,680 যে হয়, তালিকায় পরবর্তী নোড. 149 00:06:11,680 --> 00:06:13,030 এই সেটিং দ্বারা এটি করা সম্ভব 150 00:06:13,030 --> 00:06:15,280 ক্রলার = ক্রলার → পরের. 151 00:06:16,050 --> 00:06:18,960 তারপর আমরা এই প্রক্রিয়া পুনরাবৃত্তি উদাহরণস্বরূপ একটি লুপ সঙ্গে,, 152 00:06:18,960 --> 00:06:20,960 শেষ পর্যন্ত আমরা খুঁজে নোড. 153 00:06:20,960 --> 00:06:23,150 সুতরাং, উদাহরণস্বরূপ, যদি ক্রলার মাথার প্রতি নির্দেশ ছিল, 154 00:06:24,050 --> 00:06:27,710 আমরা ক্রলার → পরবর্তী নির্দেশ ক্রলার সেট, 155 00:06:27,710 --> 00:06:30,960 যা 1st নোড পরবর্তী ক্ষেত্র হিসাবে একই. 156 00:06:30,960 --> 00:06:33,620 সুতরাং এখন, আমাদের ক্রলার 2nd নোড যাও প্রতি নির্দেশ করা হয়, 157 00:06:33,620 --> 00:06:35,480 এবং আবার,, আমরা একটি লুপ সঙ্গে এই পুনরাবৃত্তি, 158 00:06:37,220 --> 00:06:40,610 শেষ পর্যন্ত আমরা নোড পাওয়া করেছি, যে, 159 00:06:40,610 --> 00:06:43,640 যেখানে নোড এর পরের নাল পয়েন্টার যাও প্রতি নির্দেশ করা হয়. 160 00:06:43,640 --> 00:06:45,070 এবং সেখানে আমরা এটি আছে, 161 00:06:45,070 --> 00:06:47,620 আমরা তালিকায় করেছি শেষ নোড পাওয়া যায়, এবং তার মান মুদ্রণ, 162 00:06:47,620 --> 00:06:50,800 আমরা শুধু ক্রলার → Val ব্যবহার. 163 00:06:50,800 --> 00:06:53,130 >> ঢোঁড়ন হয়, কিন্তু কি সন্নিবেশ খারাপ, তাই না? 164 00:06:53,130 --> 00:06:56,290 আপনাকে বলতে আমরা 4 র্থ স্থান মধ্যে একটি পূর্ণসংখ্যা সন্নিবেশ করতে চান 165 00:06:56,290 --> 00:06:58,040 একটি পূর্ণসংখ্যা তালিকা. 166 00:06:58,040 --> 00:07:01,280 যে বর্তমান 3 য় এবং 4 র্থ নোডের মধ্যে হয়. 167 00:07:01,280 --> 00:07:03,760 আবার, আমরা তালিকা ঠিক আছে যাও, তর্ক করা 168 00:07:03,760 --> 00:07:06,520 3 য় উপাদান, এক আমরা পরে ঢোকাতে করছি পেতে. 169 00:07:06,520 --> 00:07:09,300 সুতরাং, আমরা আবার একটি ক্রলার পয়েন্টার যাও, তর্ক তালিকা তৈরি, 170 00:07:09,300 --> 00:07:11,400 যদি আমাদের মাথা নাল পয়েন্টার হয় চেক, 171 00:07:11,400 --> 00:07:14,810 এবং যদি তা না, আমাদের মাথা নোড এ ক্রলার পয়েন্টার নির্দেশ. 172 00:07:16,880 --> 00:07:18,060 সুতরাং, আমরা 1 ম উপাদান করেন. 173 00:07:18,060 --> 00:07:21,020 আমরা 2 উপাদানের আরো এগিয়ে যান আমরা আগে সন্নিবেশ করতে পারেন, 174 00:07:21,020 --> 00:07:23,390 তাই আমরা একটি লুপ জন্য ব্যবহার করতে পারেন 175 00:07:23,390 --> 00:07:26,430 int i = 1; তোমার <3; তোমার + 176 00:07:26,430 --> 00:07:28,590 এবং লুপ প্রতিটি পুনরাবৃত্তির, 177 00:07:28,590 --> 00:07:31,540 আমাদের ক্রলার পয়েন্টার আগাম ফরোয়ার্ড 1 নোড দ্বারা 178 00:07:31,540 --> 00:07:34,570 চেক দ্বারা যদি বর্তমান নোড এর পরের ক্ষেত্রটি নাল, 179 00:07:34,570 --> 00:07:37,550 এবং যদি তা না, পরবর্তী নোডের আমাদের ক্রলার পয়েন্টার সরানো 180 00:07:37,550 --> 00:07:41,810 সেটিং দ্বারা এটি বর্তমান নোড এর পরের পয়েন্টার সমান. 181 00:07:41,810 --> 00:07:45,210 সুতরাং, আমাদের জন্য লুপ যাও যে বলে 182 00:07:45,210 --> 00:07:47,550 দুইবার, 183 00:07:49,610 --> 00:07:51,190 আমরা 3 য় নোড পৌঁছেছেন, 184 00:07:51,190 --> 00:07:53,110 এবং একবার আমাদের ক্রলার পয়েন্টার নোড পৌঁছেছে পরে 185 00:07:53,110 --> 00:07:55,270 যা আমরা আমাদের নতুন পূর্ণসংখ্যা সন্নিবেশ করতে চান, 186 00:07:55,270 --> 00:07:57,050 কিভাবে আমরা আসলে কি করবেন ঢোকাতে? 187 00:07:57,050 --> 00:07:59,440 >> ওয়েল, আমাদের নতুন ইন্টিজার আছে তালিকায় সন্নিবেশিত করা 188 00:07:59,440 --> 00:08:01,250 হিসাবে নিজস্ব নোড struct অংশ, 189 00:08:01,250 --> 00:08:03,140 যেহেতু এই সত্যিই নোড একটা ক্রম. 190 00:08:03,140 --> 00:08:05,690 সুতরাং, আসুন নোডের একটি নতুন পয়েন্টার করা 191 00:08:05,690 --> 00:08:08,910 বলা হয় 'new_node,' 192 00:08:08,910 --> 00:08:11,800 এবং এটি মেমরি বরাদ্দ করা যে এখন আমরা নির্দেশ সেট 193 00:08:11,800 --> 00:08:14,270 উপর নোডের জন্য নিজেই গাদা, 194 00:08:14,270 --> 00:08:16,000 এবং কতটা মেমরি বরাদ্দ করা প্রয়োজন আমরা কোথায় যাও? 195 00:08:16,000 --> 00:08:18,250 ওয়েল, একটি নোড মাপ, 196 00:08:20,450 --> 00:08:23,410 এবং আমরা পূর্ণসংখ্যা যে আমরা প্রবেশ করাতে চান তার Val ক্ষেত্র সেট করতে চান. 197 00:08:23,410 --> 00:08:25,590 চলুন শুরু করা যাক বলে, 6. 198 00:08:25,590 --> 00:08:27,710 এখন, আমাদের নোড পূর্ণসংখ্যা মান রয়েছে. 199 00:08:27,710 --> 00:08:30,650 এখানে ভাল অনুশীলন নতুন নোড এর পরের ক্ষেত্রের আরম্ভ 200 00:08:30,650 --> 00:08:33,690 যাও যাও নাল নির্দেশ, 201 00:08:33,690 --> 00:08:35,080 কিন্তু এখন কি? 202 00:08:35,080 --> 00:08:37,179 >> আমরা তালিকা অভ্যন্তরীণ কাঠামো পরিবর্তন করতে হবে 203 00:08:37,179 --> 00:08:40,409 এবং পরের পয়েন্টার তালিকা এর বিদ্যমান থাকা 204 00:08:40,409 --> 00:08:42,950 3 য় এবং 4 র্থ নোড. 205 00:08:42,950 --> 00:08:46,560 যেহেতু পরের পয়েন্টার তালিকা অনুযায়ী, নির্ধারণ 206 00:08:46,560 --> 00:08:48,650 এবং যেহেতু আমরা আমাদের নতুন নোডের মধ্যে ঢোকাতে করছি 207 00:08:48,650 --> 00:08:50,510 সরাসরি তালিকা মধ্যম, 208 00:08:50,510 --> 00:08:52,010 এটি একটি চতুর বিট হতে পারেন. 209 00:08:52,010 --> 00:08:54,250 কারণ, মনে রাখবেন, আমাদের কম্পিউটার 210 00:08:54,250 --> 00:08:56,250 শুধুমাত্র নোড তালিকায় অবস্থান জানে 211 00:08:56,250 --> 00:09:00,400 কারণ পূর্ববর্তী পরবর্তী নোডের মধ্যে সংরক্ষিত পয়েন্টার দেয়া হল. 212 00:09:00,400 --> 00:09:03,940 সুতরাং, যদি আমরা এই অবস্থানে কোন ট্র্যাক হারিয়ে ফেলেন, 213 00:09:03,940 --> 00:09:06,860 আমাদের তালিকায় পরবর্তী পয়েন্টার এক পরিবর্তন করে বলে, 214 00:09:06,860 --> 00:09:09,880 উদাহরণস্বরূপ, আমরা বলতে পরিবর্তন 215 00:09:09,880 --> 00:09:12,920 3rd নোড এর পরের ক্ষেত্র 216 00:09:12,920 --> 00:09:15,610 এখানে কিছু নোড দিকে নির্দেশ করে. 217 00:09:15,610 --> 00:09:17,920 আমরা এর ভাগ্য আউট, কারণ আমরা না কি হতে চাই 218 00:09:17,920 --> 00:09:20,940 যেখানে কোনো তালিকার বাকি খুঁজে ধারণা আছে, 219 00:09:20,940 --> 00:09:23,070 এবং যে সম্ভবত খুব খারাপ. 220 00:09:23,070 --> 00:09:25,080 সুতরাং, আমরা সত্যিই আদেশ সম্পর্কে সতর্কতা অবলম্বন করা আবশ্যক আছে 221 00:09:25,080 --> 00:09:28,360 যা আমরা সন্নিবেশ সময় আমাদের পরবর্তী পয়েন্টার নিপূণভাবে. 222 00:09:28,360 --> 00:09:30,540 >> সুতরাং, এই প্রক্রিয়া সহজ, আমি কি বলে যে 223 00:09:30,540 --> 00:09:32,220 আমাদের প্রথম 4 নোড 224 00:09:32,220 --> 00:09:36,200 , A, B, C, ও D নামক পয়েন্টার শৃঙ্খল প্রতিনিধিত্বমূলক তীরযুক্ত, হয় 225 00:09:36,200 --> 00:09:38,070 যে নোডের সাথে সংযুক্ত করুন. 226 00:09:38,070 --> 00:09:40,050 সুতরাং, আমরা আমাদের প্রয়োজন নতুন নোডের মধ্যে সন্নিবেশ 227 00:09:40,050 --> 00:09:42,070 নোডের মধ্যে সি এবং ডি 228 00:09:42,070 --> 00:09:45,060 এটা সঠিক অনুক্রমে এটা গুরুতর, এবং আমি আপনাকে দেখাতে হবে কেন. 229 00:09:45,060 --> 00:09:47,500 >> চলুন কুপথ প্রথমে এটা তাকান. 230 00:09:47,500 --> 00:09:49,490 আরে, আমরা জানতে পারি যে নতুন নোডের যাও সি ডান পরে আসা হয়েছে, 231 00:09:49,490 --> 00:09:51,910 তাই আসুন সি এর পরের পয়েন্টার সেট 232 00:09:51,910 --> 00:09:54,700 যাও যাও new_node নির্দেশ. 233 00:09:56,530 --> 00:09:59,180 ঠিক আছে, মনে হয় ঠিক আছে, আমরা শুধু দ্বারা সমাপ্ত এখন পর্যন্ত আছে 234 00:09:59,180 --> 00:10:01,580 : D নতুন নোড এর পরের পয়েন্টার পয়েন্ট তৈরি, 235 00:10:01,580 --> 00:10:03,250 কিন্তু অপেক্ষা, যে কিভাবে আমরা কি করতে পারি? 236 00:10:03,250 --> 00:10:05,170 শুধু যে আমাদের বলতে যেখানে ডি ছিল পারে, 237 00:10:05,170 --> 00:10:07,630 ছিল পরের পয়েন্টার পূর্বে C-এ সংরক্ষণ করা 238 00:10:07,630 --> 00:10:09,870 কিন্তু আমরা যে পয়েন্টার rewrote 239 00:10:09,870 --> 00:10:11,170 নতুন নোডের দিকে নির্দেশ করে, 240 00:10:11,170 --> 00:10:14,230 তাই আমরা আর কোনো সুরুক যেখানে ডি মেমরি হয় আছে, 241 00:10:14,230 --> 00:10:17,020 এবং আমরা তালিকা বাকি নষ্ট করেছি. 242 00:10:17,020 --> 00:10:19,000 . সব ভাল নেই 243 00:10:19,000 --> 00:10:21,090 >> সুতরাং কিভাবে, আমরা কি করে এই অধিকার? 244 00:10:22,360 --> 00:10:25,090 প্রথমত, নতুন নোড এর ডি এ পয়েন্টার পরবর্তী নির্দেশ 245 00:10:26,170 --> 00:10:28,990 এখন, উভয় নতুন নোড এর এবং সি এর পরের পয়েন্টার 246 00:10:28,990 --> 00:10:30,660 একই নোড, D-প্রতি নির্দেশ করা হয়, 247 00:10:30,660 --> 00:10:32,290 কিন্তু যে সূক্ষ্ম. 248 00:10:32,290 --> 00:10:35,680 এখন আমরা সি এর নতুন নোডের এ পয়েন্টার পরবর্তী নির্দেশ করতে পারেন. 249 00:10:37,450 --> 00:10:39,670 তাই আমরা কোনো তথ্য হারানো ছাড়া এই করেছেন. 250 00:10:39,670 --> 00:10:42,280 কোড ইন, সি বর্তমান নোড 251 00:10:42,280 --> 00:10:45,540 যে ট্র্যাভেরসাল পয়েন্টার ক্রলার যাও প্রতি নির্দেশ করা হয়, 252 00:10:45,540 --> 00:10:50,400 এবং D নোড বর্তমান নোড এর পরের ক্ষেত্র দ্বারা তীক্ষ্ন যাও প্রতিনিধিত্ব করেন, 253 00:10:50,400 --> 00:10:52,600 বা ক্রলার → পরের. 254 00:10:52,600 --> 00:10:55,460 সুতরাং, প্রথম আমরা নতুন নোড এর পরের পয়েন্টার সেট 255 00:10:55,460 --> 00:10:57,370 ক্রলার → পরের দিকে নির্দেশ করে, 256 00:10:57,370 --> 00:11:00,880 একই ভাবে আমরা বলেছেন new_node এর পরের পয়েন্টার উচিত 257 00:11:00,880 --> 00:11:02,780 চিত্রণ মধ্যে D-র দিকে নির্দেশ করে. 258 00:11:02,780 --> 00:11:04,540 তারপর, আমরা বর্তমান নোড এর পরের পয়েন্টার সেট করতে পারেন 259 00:11:04,540 --> 00:11:06,330 আমাদের নতুন নোড, 260 00:11:06,330 --> 00:11:10,980 ঠিক যেমন আমরা সি আঁকার মধ্যে new_node নির্দেশ অপেক্ষা করতে হয়েছিল. 261 00:11:10,980 --> 00:11:12,250 এখন ক্রম সবকিছু, আর আমরা না হারান নি 262 00:11:12,250 --> 00:11:14,490 কোনো তথ্য ট্র্যাক, এবং আমরা ঠিক করতে পারবেন 263 00:11:14,490 --> 00:11:16,200 তালিকা মাঝখানে আমাদের নতুন নোডের সোঁটা 264 00:11:16,200 --> 00:11:19,330 ছাড়া গোটা ব্যাপারটাই পুনর্নির্মাণ বা এমনকি কোনো উপাদান নড়ন 265 00:11:19,330 --> 00:11:22,490 আমাদের কাছে আছে একটি নির্দিষ্ট দৈর্ঘ্যের অ্যারের সঙ্গে ছিল. 266 00:11:22,490 --> 00:11:26,020 >> সুতরাং, সংযুক্ত তালিকাগুলি একটি মৌলিক, কিন্তু গুরুত্বপূর্ণ, গতিশীল ডাটা স্ট্রাকচার 267 00:11:26,020 --> 00:11:29,080 যা উভয় সুবিধার এবং অসুবিধেও আছে 268 00:11:29,080 --> 00:11:31,260 তুলনায় যাও অ্যারে এবং অন্যান্য ডাটা স্ট্রাকচার, 269 00:11:31,260 --> 00:11:33,350 এবং হিসাবে প্রায়ই কম্পিউটার বিজ্ঞানের ক্ষেত্রে, 270 00:11:33,350 --> 00:11:35,640 এটা যখন প্রতিটি টুল ব্যবহার জানা গুরুত্বপূর্ণ, 271 00:11:35,640 --> 00:11:37,960 যাতে আপনি সঠিক কাজের জন্য ডান হাতিয়ার বাছাই করতে পারেন. 272 00:11:37,960 --> 00:11:40,060 >> আরো অনুশীলনের জন্য, ফাংশন লেখার চেষ্টা 273 00:11:40,060 --> 00:11:42,080 একটি লিঙ্ক তালিকা থেকে মুছে দিন নোড - 274 00:11:42,080 --> 00:11:44,050 ক্রম যা আপনি নতুন করে সাজানো সম্পর্কে সতর্কতা অবলম্বন করা আবশ্যক মনে রাখা 275 00:11:44,050 --> 00:11:47,430 আপনার পরের পয়েন্টার যে আপনি আপনার তালিকা একটি তাল হারাবেন না তা নিশ্চিত করার জন্য - 276 00:11:47,430 --> 00:11:50,200 অথবা একটি ফাংশন একটি লিঙ্ক তালিকা বিভিন্ন নোডের গণনা, 277 00:11:50,200 --> 00:11:53,280 অথবা একটি মজার এক, একটি লিঙ্ক তালিকা বিভিন্ন নোডের মধ্যে সমস্ত আদেশ বিপরীত. 278 00:11:53,280 --> 00:11:56,090 >> আমার নাম জ্যাকসন STEINKAMP, এই CS50.