1 00:00:00,000 --> 00:00:01,000 [Powered by Google Translate] [অনুচ্ছেদ 6] [আরো আরামদায়ক] 2 00:00:01,000 --> 00:00:04,000 [Rob Bowden] [হার্ভার্ড বিশ্ববিদ্যালয়] 3 00:00:04,000 --> 00:00:09,000 [এটি CS50.] [CS50.TV] 4 00:00:09,000 --> 00:00:11,000 >> আমরা আমাদের প্রশ্নের অধ্যায় আগাইয়া করতে পারেন. 5 00:00:11,000 --> 00:00:17,000 আমি স্থান আগে জন্য URL পাঠানো হয়. 6 00:00:17,000 --> 00:00:22,000 প্রশ্নের বিভাগে প্রথম বলতে- 7 00:00:22,000 --> 00:00:26,000 দৃশ্যত আমি সম্পূর্ণরূপে unsick-একটি খুব সহজ প্রশ্ন না 8 00:00:26,000 --> 00:00:28,000 সারাংশ শুধু valgrind হয়? 9 00:00:28,000 --> 00:00:30,000 Valgrind কি করবেন? 10 00:00:30,000 --> 00:00:34,000 কেউ কি আছে valgrind বলতে চান? 11 00:00:34,000 --> 00:00:36,000 [ছাত্র] চেক মেমরি তথ্য ফাঁসের. 12 00:00:36,000 --> 00:00:41,000 হাঁ, valgrind একটি সাধারণ মেমরি পরীক্ষক. 13 00:00:41,000 --> 00:00:44,000 শেষে বলা যায়, আপনি বলে যদি আপনার কোন মেমরি তথ্য ফাঁসের আছে, 14 00:00:44,000 --> 00:00:49,000 যা বেশীর ভাগই আমরা কি কারণ জন্য এটি ব্যবহার করছেন আপনি চাইলে 15 00:00:49,000 --> 00:00:54,000 সমস্যা সেট অথবা আপনি যদি চান ভাল করতে 16 00:00:54,000 --> 00:00:59,000 বড় জাহাজে পাওয়ার জন্য, আপনার সবটা কোন মেমরি তথ্য ফাঁসের প্রয়োজন আছে, 17 00:00:59,000 --> 00:01:01,000 এবং যদি আপনি একটি মেমরি লিক যে আপনি খুঁজে পাওয়া যায়, 18 00:01:01,000 --> 00:01:04,000 মন যে যখনই আপনি একটি ফাইল খোলার জন্য রাখা 19 00:01:04,000 --> 00:01:07,000 এবং যদি আপনি এটি বন্ধ না, যে একটি মেমরি লিক. 20 00:01:07,000 --> 00:01:10,000 >> মানুষ অনেক কিছু নোডের জন্য যে তারা freeing করছি না হয় 21 00:01:10,000 --> 00:01:15,000 যখন সত্যিই, তারা খুব অভিধান প্রথম ধাপে বন্ধ করে থাকেন না. 22 00:01:15,000 --> 00:01:19,000 এটা আপনাকে বলে যদি আপনি কোনো অবৈধ আছে সার্চ বা লিখছে, 23 00:01:19,000 --> 00:01:22,000 যার মানে হচ্ছে যদি আপনি চেষ্টা এবং একটি মান সেট 24 00:01:22,000 --> 00:01:26,000 যে গাদা শেষে এর পরেও এবং এটি seg ফল্ট না ঘটতে না 25 00:01:26,000 --> 00:01:30,000 কিন্তু valgrind ক্যাচ এটি, হিসাবে আপনি আসলে লেখা উচিত হইনি আছে, 26 00:01:30,000 --> 00:01:33,000 এবং তাই আপনি স্পষ্টভাবে হয় যারা কোনো না থাকা উচিত. 27 00:01:33,000 --> 00:01:38,000 আপনি কিভাবে ব্যবহার valgrind? 28 00:01:38,000 --> 00:01:42,000 আপনি কিভাবে ব্যবহার valgrind? 29 00:01:42,000 --> 00:01:45,000 >> এটা একটা সাধারণ প্রশ্ন 30 00:01:45,000 --> 00:01:49,000 মত এবং এটি চালানোর আউটপুট তাকান. 31 00:01:49,000 --> 00:01:51,000 আউটপুট বার অনেক হয় অপ্রতিরোধ্য. 32 00:01:51,000 --> 00:01:54,000 এর রয়েছে মজা ত্রুটি যেখানে আপনি যদি কিছু ভুল ভয়ঙ্কর জিনিস আছে 33 00:01:54,000 --> 00:01:59,000 একটি লুপ ঘটছে, তারপর অবশেষে বলে, পথ অনেক ত্রুটি "হবে. 34 00:01:59,000 --> 00:02:03,000 আমি যাও গণনা এখন থামবে না. করছি " 35 00:02:03,000 --> 00:02:08,000 এটি মূলত এর পাঠগত আউটপুট যে আপনি পার্স করতে আছে. 36 00:02:08,000 --> 00:02:13,000 শেষ পর্যন্ত, এটি কোনো মেমরির তথ্য ফাঁসের যে আপনি আপনাকে বলতে হবে, 37 00:02:13,000 --> 00:02:16,000 কতগুলি ব্লক, যা উপযোগী হতে পারে কারণ 38 00:02:16,000 --> 00:02:20,000 যদি এটা এক ব্লক unfreed তারপর, এটা সাধারণত সহজে সেটি খুঁজে পেতে 39 00:02:20,000 --> 00:02:23,000 তুলনায় 1,000 ব্লক unfreed. 40 00:02:23,000 --> 00:02:26,000 1,000 unfreed ব্লক সম্ভবত মানে আপনি freeing করছি না 41 00:02:26,000 --> 00:02:30,000 আপনার লিঙ্ক তালিকা সুসংগত বা কিছু বলেছিলাম. 42 00:02:30,000 --> 00:02:32,000 যে valgrind না. 43 00:02:32,000 --> 00:02:35,000 >> এখন আমরা প্রশ্ন আমাদের অধ্যায় আছে, 44 00:02:35,000 --> 00:02:38,000 যা আপনাকে ডাউনলোড করতে হবে না. 45 00:02:38,000 --> 00:02:41,000 আপনি আমার নামের উপর এবং তাদের বৈঠাচালনা স্থান আপ ক্লিক করতে পারেন. 46 00:02:41,000 --> 00:02:44,000 সম্পর্কে এখন ক্লিক করুন. 47 00:02:44,000 --> 00:02:46,000 পরিবর্ধন ও পরিবর্তন তালিকা 1 স্ট্যাকের, যা প্রথম আমরা করছেন হতে হবে. 48 00:02:46,000 --> 00:02:55,000 পরিবর্ধন ও পরিবর্তন তালিকা 2 কিউ, পরিবর্ধন ও পরিবর্তন করা এবং 3 একেলা লিঙ্ক তালিকা হবে. 49 00:02:55,000 --> 00:02:58,000 আমাদের স্ট্যাকের সঙ্গে শুরু হয়. 50 00:02:58,000 --> 00:03:02,000 হিসাবে এটা এখানে বলছেন, একটি স্ট্যাক সবচেয়ে মৌলিক এক, 51 00:03:02,000 --> 00:03:07,000 মৌলিক কম্পিউটার বিজ্ঞানের তথ্য কাঠামোকে সমৃদ্ধ করা. 52 00:03:07,000 --> 00:03:11,000 খুব prototypical উদাহরণ হল 53 00:03:11,000 --> 00:03:13,000 ভোজনশালা মধ্যে ট্রে এর স্তুপ. 54 00:03:13,000 --> 00:03:16,000 এটি মূলত এর যখনই আপনি একটি স্ট্যাকে ব্যবহার করা হয়, 55 00:03:16,000 --> 00:03:20,000 কেউ বলে, যাচ্ছে "ট্রে একটি স্ট্যাক ভালো ওহ,." হয় 56 00:03:20,000 --> 00:03:22,000 আপনি ট্রে আপ গাদা. 57 00:03:22,000 --> 00:03:24,000 তারপর আপনি যখন একটি ট্রে বৈঠাচালনা যান, 58 00:03:24,000 --> 00:03:31,000 প্রথম ট্রে যে টানা এর শুরু হয় গত এক যে স্ট্যাক করা হয়. 59 00:03:31,000 --> 00:03:34,000 এটি মত স্ট্যাকের এখানে-বলছেন 60 00:03:34,000 --> 00:03:37,000 আমরা মেমরির অংশ বলা স্ট্যাকের আছে. 61 00:03:37,000 --> 00:03:40,000 এবং কেন তা বলা হয় স্ট্যাকের? 62 00:03:40,000 --> 00:03:42,000 >> কারণ মত একটি স্ট্যাক ডাটা স্ট্রাকচার, 63 00:03:42,000 --> 00:03:46,000 এটি push কর্মের এবং স্ট্যাক স্ট্যাকের ফ্রেম পপ, 64 00:03:46,000 --> 00:03:53,000 যেখানে স্ট্যাকের ফ্রেম একটি নির্দিষ্ট একটি ফাংশন কল এর মত. 65 00:03:53,000 --> 00:03:57,000 এবং একটি স্ট্যাক ভালো, আপনি সবসময় ফিরে থাকবে 66 00:03:57,000 --> 00:04:03,000 একটি ফাংশন কল থেকে আপনি আগে নিম্ন স্ট্যাকের মধ্যে ফ্রেম পেতে আবার বাড়তেও পারে. 67 00:04:03,000 --> 00:04:08,000 আপনি প্রধান কল কল foo বিন্যাস এবং বার বার ফিরে যাও প্রধান সরাসরি থাকতে পারে না. 68 00:04:08,000 --> 00:04:14,000 এটা সবসময় এর সঠিক স্ট্যাকের ঠেলাঠেলি এবং পপিং অনুসরণ না. 69 00:04:14,000 --> 00:04:18,000 দুটি অপারেশন, যেমন আমি তাকে বললাম, হয় ধাক্কা এবং পপ. 70 00:04:18,000 --> 00:04:20,000 সেগুলো হল বিশ্বজনীন পরিভাষা. 71 00:04:20,000 --> 00:04:26,000 আপনি stacks কোনো ব্যাপার শর্তাবলী ধাক্কা এবং পপ জানা উচিত. 72 00:04:26,000 --> 00:04:28,000 আমরা queues বিভিন্ন ধরনের দেখতে পাবেন. 73 00:04:28,000 --> 00:04:32,000 এটি একটি সার্বজনীন শব্দটি সত্যিই নেই, কিন্তু ধাক্কা এবং পপ হয় stacks জন্য সার্বজনীন. 74 00:04:32,000 --> 00:04:34,000 স্ট্যাকের মধ্যে push করা হয় এবং মাত্র রাখে. 75 00:04:34,000 --> 00:04:37,000 পপ হয় স্ট্যাকের নিতে হবে. 76 00:04:37,000 --> 00:04:43,000 এবং আমরা এখানে দেখতে আমরা আমাদের typedef struct স্ট্যাকের আছে, 77 00:04:43,000 --> 00:04:46,000 তাই আমরা গৃহস্থালি ** স্ট্রিং আছে. 78 00:04:46,000 --> 00:04:51,000 কোন ** দ্বারা ভয় না পান. 79 00:04:51,000 --> 00:04:54,000 এই পর্যন্ত শেষ হচ্ছে স্ট্রিং একটি অ্যারের যাচ্ছে 80 00:04:54,000 --> 00:04:58,000 বা পয়েন্টার একটি অক্ষর অ্যারে, যেখানে 81 00:04:58,000 --> 00:05:00,000 পয়েন্টার অক্ষর যাও যাও স্ট্রিং হতে থাকে. 82 00:05:00,000 --> 00:05:05,000 এটি স্ট্রিং হতে, না আছে কিন্তু এখানে, তারা স্ট্রিং হবে করছি. 83 00:05:05,000 --> 00:05:08,000 >> আমরা স্ট্রিং একটি অ্যারে আছে. 84 00:05:08,000 --> 00:05:14,000 আমরা একটি আকার, যা প্রতিনিধিত্ব কতগুলি উপাদান স্ট্যাক বর্তমানে আছে, 85 00:05:14,000 --> 00:05:19,000 এবং তারপর আমরা ক্ষমতা, যা কতগুলি উপাদান স্ট্যাক হতে পারে আছে. 86 00:05:19,000 --> 00:05:22,000 ক্ষমতা কিছু 1 অধিক হিসাবে আরম্ভ বন্ধ করা উচিত, 87 00:05:22,000 --> 00:05:27,000 কিন্তু আকার 0 হিসাবে চলতে শুরু করতে যাচ্ছে. 88 00:05:27,000 --> 00:05:36,000 এখন, হয় সেখানে মূলত তিনটি ভিন্ন উপায়ে আপনি একটি স্ট্যাকের মনে করতে পারেন. 89 00:05:36,000 --> 00:05:39,000 ভাল, হয় সম্ভবত আরও অনেক বেশি, কিন্তু দুটি প্রধান উপায় আছে 90 00:05:39,000 --> 00:05:43,000 আপনি কি এটা বাস্তবায়নের জন্য একটি অ্যারে ব্যবহার করে, বা করতে পারেন, এটি কার্যকরী করার জন্য একটি লিঙ্ক তালিকা ব্যবহার করতে পারেন. 91 00:05:43,000 --> 00:05:48,000 লিঙ্ক তালিকাগুলি ধরনের থেকে stacks করা তুচ্ছ. 92 00:05:48,000 --> 00:05:51,000 এটা খুবই সহজ একটি স্ট্যাক সংযুক্ত তালিকা ব্যবহার করে না, 93 00:05:51,000 --> 00:05:55,000 এখানে তাই, আমরা একটি স্ট্যাক অ্যারে ব্যবহার করতে যাচ্ছেন, 94 00:05:55,000 --> 00:05:59,000 এবং তারপর অ্যারে ব্যবহার করে, এর রয়েছে দুটি উপায়ে আপনি এটি সম্পর্কে মনে করতে পারেন. 95 00:05:59,000 --> 00:06:01,000 পূর্বে, যখন আমি তাকে বললাম আমরা স্ট্যাকের জন্য একটি ক্ষমতা আছে, 96 00:06:01,000 --> 00:06:04,000 তাই আমরা স্ট্যাক একটি উপাদান ফিট করতে পারে. 97 00:06:04,000 --> 00:06:09,000 >> এক উপায় এটি ঘটতে পারে শীঘ্র আপনি 10 উপাদানের আঘাত, তাহলে আপনি কাজ সম্পন্ন হয়. 98 00:06:09,000 --> 00:06:13,000 আপনি যে একটি ঊর্ধ্ব বিশ্বের 10 জিনিস আবদ্ধ হয় চিনতে 99 00:06:13,000 --> 00:06:16,000 আপনি যে আপনার স্ট্যাকের অধিক 10 জিনিষ কখনও করতে হবে, 100 00:06:16,000 --> 00:06:20,000 সেক্ষেত্রেও আপনি একটি ঊর্ধ্ব আপনার স্ট্যাকের আকার আবদ্ধ থাকতে পারে না. 101 00:06:20,000 --> 00:06:23,000 অথবা আপনি আপনার স্ট্যাকের সীমাবদ্ধ করা হত, 102 00:06:23,000 --> 00:06:27,000 কিন্তু আপনি যদি একটি অ্যারের করছেন, তার মানে তাদের প্রতি একক সময় আপনি 10 উপাদানের আঘাত, 103 00:06:27,000 --> 00:06:29,000 তাহলে 20 উপাদানের ক্ষমতা বৃদ্ধি করতে যাচ্ছে, এবং সেটি যখন আপনি 20 উপাদানের আঘাত, 104 00:06:29,000 --> 00:06:33,000 আপনি 30 উপাদান বা 40 উপাদানগুলি আপনার অ্যারের grow আছে চালু করছি. 105 00:06:33,000 --> 00:06:37,000 আপনি ক্ষমতা, যা আমরা কি এখানে করতে যাচ্ছেন বৃদ্ধি প্রয়োজন চালু করছি. 106 00:06:37,000 --> 00:06:40,000 প্রতি একক সময় আমরা আমাদের স্ট্যাকের সর্বোচ্চ আকার পৌঁছানোর, 107 00:06:40,000 --> 00:06:46,000 যখন আমরা অন্য কিছু চলিতে থাকা, আমরা ক্ষমতা বৃদ্ধি প্রয়োজন চালু করছি. 108 00:06:46,000 --> 00:06:50,000 এখানে, আমরা ধাক্কা bool ধাক্কা (গৃহস্থালি * str) হিসেবে ঘোষণা করেন. 109 00:06:50,000 --> 00:06:54,000 চর * str হয় স্ট্রিং যে আমরা স্ট্যাকের সম্মুখের দিকে ঠেলে দেওয়া হয়, 110 00:06:54,000 --> 00:06:58,000 এবং শুধুমাত্র bool বলেছেন কিনা আমরা সফল বা ব্যর্থ হয়েছে. 111 00:06:58,000 --> 00:07:00,000 >> কিভাবে আমরা ব্যর্থ হতে পারে? 112 00:07:00,000 --> 00:07:04,000 শুধুমাত্র circumstance যে আপনি মনে করতে পারেন কি 113 00:07:04,000 --> 00:07:07,000 যেখানে আমরা মিথ্যা প্রত্যাবর্তন করতে হবে? 114 00:07:07,000 --> 00:07:09,000 হাঁ. 115 00:07:09,000 --> 00:07:12,000 [ছাত্র] যদি এটি সম্পূর্ণ এবং আমরা একটি বেষ্টিত বাস্তবায়ন ব্যবহার করছেন. 116 00:07:12,000 --> 00:07:17,000 হ্যাঁ, তাই কিভাবে আমরা-সংজ্ঞায়িত তিনি উত্তর 117 00:07:17,000 --> 00:07:23,000 যদি এটা সম্পূর্ণ এবং আমরা একটি বেষ্টিত বাস্তবায়ন ব্যবহার করছেন. 118 00:07:23,000 --> 00:07:26,000 তারপর আমরা স্পষ্টভাবে ফিরে মিথ্যা হবে. 119 00:07:26,000 --> 00:07:31,000 আমরা যত শীঘ্র অ্যারের মধ্যে 10 জিনিষ আঘাত, আমরা 11 ফিট করতে পারে না, তাই আমরা ফিরে মিথ্যা. 120 00:07:31,000 --> 00:07:32,000 যদি এটি সীমাবদ্ধ নয়? হাঁ. 121 00:07:32,000 --> 00:07:38,000 আপনি যদি কোনো কারণে অ্যারের না প্রসারিত করতে পারেন. 122 00:07:38,000 --> 00:07:43,000 হ্যাঁ, তাই মেমরির একটি সীমিত সম্পদ, 123 00:07:43,000 --> 00:07:51,000 এবং অবশেষে, যদি আমরা সম্মুখের এবং স্ট্যাকের উপর আবার ঠেলে জিনিস রাখা, 124 00:07:51,000 --> 00:07:54,000 আমরা চেষ্টা এবং একটি বড় অ্যারে বরাদ্দ মাপসই চলুন 125 00:07:54,000 --> 00:07:59,000 বৃহত্তর ক্ষমতা, এবং malloc বা যাই হোক না কেন আমরা ব্যবহার করছি মিথ্যা ফিরে যাচ্ছে. 126 00:07:59,000 --> 00:08:02,000 ভাল, malloc নাল ফিরে আসবে. 127 00:08:02,000 --> 00:08:05,000 >> উল্লেখ্য, প্রতি একক সময় আপনি কি কখনও malloc কল, আপনি চেক করে দেখতে হবে যদি এটি 128 00:08:05,000 --> 00:08:12,000 নাল অথবা অন্য যে ফেরৎ একটি শুদ্ধি সিদ্ধান্তগ্রহণ. 129 00:08:12,000 --> 00:08:17,000 যেহেতু আমরা একটি অনন্ত স্ট্যাকের করাতে চাই, 130 00:08:17,000 --> 00:08:21,000 শুধুমাত্র ক্ষেত্রে আমরা করা মিথ্যা ফিরে যাচ্ছে সেটি যদি আমরা চেষ্টা যাও 131 00:08:21,000 --> 00:08:26,000 ক্ষমতা এবং malloc বৃদ্ধি বা যাই হোক না কেন ফেরৎ মিথ্যা. 132 00:08:26,000 --> 00:08:30,000 তারপর পপ কোনো আর্গুমেন্ট লাগে, 133 00:08:30,000 --> 00:08:37,000 এবং এটি স্ট্রিং স্ট্যাকের উপর যা ফিরিয়ে দেয়. 134 00:08:37,000 --> 00:08:41,000 যাই স্ট্যাক ছিল অতি সম্প্রতি ধাক্কা কি পপ ফিরে না, 135 00:08:41,000 --> 00:08:44,000 এবং এটা স্ট্যাকের থেকে মুছে যাবে. 136 00:08:44,000 --> 00:08:50,000 নোটিশ এবং এটি ফিরিয়ে নাল যদি স্ট্যাকের উপর কিছুই আছে. 137 00:08:50,000 --> 00:08:53,000 এটা সবসময় সম্ভব যে স্ট্যাকের খালি. 138 00:08:53,000 --> 00:08:55,000 ইন জাভা, যদি আপনি যে, বা অন্যান্য ভাষার ব্যবহার করতেন, 139 00:08:55,000 --> 00:09:01,000 একটি খালি স্ট্যাকের থেকে পপ চেষ্টা ব্যতিক্রম বা কিছু হতে পারে. 140 00:09:01,000 --> 00:09:09,000 >> কিন্তু সি, নাল হয় ক্ষেত্রে কিভাবে আমরা এই সমস্যার হ্যান্ডেল অনেক দয়া. 141 00:09:09,000 --> 00:09:13,000 নাল রিটার্নিং হয় কিভাবে আমরা এই স্ট্যাকের খালি বোঝান চালু করছি. 142 00:09:13,000 --> 00:09:16,000 আমরা যে কোড আপনার স্ট্যাকের এর কার্যকারিতা পরীক্ষা করতে হবে সরবরাহ করেছি, 143 00:09:16,000 --> 00:09:19,000 এবং ধাক্কা পপ বাস্তবায়নের জন্য. 144 00:09:19,000 --> 00:09:23,000 এই কোড অনেকটা হবে না. 145 00:09:23,000 --> 00:09:40,000 আমি আসলে করবে, আগে আমরা যে, ইঙ্গিতটি, ইঙ্গিতটি- 146 00:09:40,000 --> 00:09:44,000 যদি আপনি এটি দেখা যায় না, malloc শুধুমাত্র ফাংশন নয় 147 00:09:44,000 --> 00:09:47,000 আপনি যে গাদা জন্য মেমরি বরাদ্দ করা. 148 00:09:47,000 --> 00:09:51,000 Alloc কর্ম একটি পরিবার আছে. 149 00:09:51,000 --> 00:09:53,000 প্রথম malloc হয়, যা আপনি ব্যবহার করতেন. 150 00:09:53,000 --> 00:09:56,000 তারপর calloc, যা malloc হিসাবে একই জিনিস আছে আছে, 151 00:09:56,000 --> 00:09:59,000 কিন্তু এটি আপনার জন্য সব কিছু শূন্য হবে. 152 00:09:59,000 --> 00:10:04,000 যদি কখনও কোন কিছু mallocing পরে করেছি সবকিছু যাও নাল সেট চেয়েছিলেন 153 00:10:04,000 --> 00:10:06,000 আপনি শুধু লেখার পরিবর্তে প্রথম স্থানে আছে উচিত calloc ব্যবহৃত 154 00:10:06,000 --> 00:10:09,000 লুপ যাও মেমরির সম্পূর্ণ ব্লক Zero আউট জন্য একটি. 155 00:10:09,000 --> 00:10:15,000 >> Malloc ভালো Realloc হয় এবং বিশেষ ক্ষেত্রে অনেক আছে, 156 00:10:15,000 --> 00:10:19,000 কিন্তু মূলত what realloc আছে হয় 157 00:10:19,000 --> 00:10:24,000 এটি একটি পয়েন্টার যে ইতিমধ্যেই বরাদ্দ করা হয়েছে প্রদর্শিত হয়. 158 00:10:24,000 --> 00:10:27,000 Realloc হয় ফাংশন করতে চান এখানে গভীর মনযোগ প্রদান করা হবে. 159 00:10:27,000 --> 00:10:31,000 এটি একটি পয়েন্টার যে ইতিমধ্যেই malloc থেকে ফিরে হয়েছে লাগে. 160 00:10:31,000 --> 00:10:35,000 চলুন শুরু করা যাক বলতে malloc থেকে আপনি 10 বাইট একটি পয়েন্টার অনুরোধ করুন. 161 00:10:35,000 --> 00:10:38,000 তারপর পরে আপনি বোঝেন যে আপনি 20 বাইট চেয়েছিলেন, 162 00:10:38,000 --> 00:10:42,000 তাই আপনি 20 বাইট সঙ্গে যে পয়েন্টার on realloc কল, 163 00:10:42,000 --> 00:10:47,000 এবং স্বয়ংক্রিয়ভাবে realloc জন্য আপনি সবকিছু উপর কপি হবে. 164 00:10:47,000 --> 00:10:51,000 আপনি যদি শুধু malloc আবার বলা, মত আমি 10 বাইট একটি ব্লক আছে. 165 00:10:51,000 --> 00:10:53,000 এখন আমি 20 বাইট একটি ব্লক প্রয়োজন, 166 00:10:53,000 --> 00:10:58,000 সুতরাং যদি আমি 20 বাইট malloc তারপর, আমি নিজে প্রথম জিনিস থেকে 10 বাইট কপি উপর আছে 167 00:10:58,000 --> 00:11:01,000 মধ্যে দ্বিতীয় জিনিস এবং তারপর বিনামূল্যে প্রথম জিনিস. 168 00:11:01,000 --> 00:11:04,000 Realloc জন্য আপনি যে হ্যান্ডেল করতে হবে. 169 00:11:04,000 --> 00:11:11,000 >> উল্লেখ্য, স্বাক্ষর অকার্যকর * হবে, 170 00:11:11,000 --> 00:11:15,000 যা ঠিক না মেমরি ব্লক একটি পয়েন্টার ফিরে, 171 00:11:15,000 --> 00:11:17,000 তারপর শূন্যস্থান * ptr. 172 00:11:17,000 --> 00:11:22,000 আপনি শূন্যস্থান * একটি জেনেরিক পয়েন্টার হিসাবে মনে করতে পারেন. 173 00:11:22,000 --> 00:11:27,000 সাধারণত, আপনি কারবার অকার্যকর * সঙ্গে না, 174 00:11:27,000 --> 00:11:30,000 কিন্তু malloc একটি অকার্যকর * ফেরত হয়, এবং তারপর এটি ঠিক মত ব্যবহৃত হচ্ছে 175 00:11:30,000 --> 00:11:34,000 এই প্রকৃতপক্ষে একটি গৃহস্থালি * হতে যাচ্ছে. 176 00:11:34,000 --> 00:11:37,000 আগের অকার্যকর * যে malloc দ্বারা তিনি ফিরে হয়েছে 177 00:11:37,000 --> 00:11:41,000 না এখন going to realloc প্রেরণ করা হবে, এবং তারপর আকার 178 00:11:41,000 --> 00:11:49,000 বাইট হয় আপনি ধার্য করতে ইচ্ছুক নতুন সংখ্যা, তাই আপনার নতুন ক্ষমতা. 179 00:11:49,000 --> 00:11:57,000 আমি কয়েক মিনিট আপনাকে, এবং আমাদের মধ্যে এটি স্থান দেব. 180 00:11:57,000 --> 00:12:02,000 পরিবর্ধন ও পরিবর্তন তালিকা 1 সঙ্গে শুরু. 181 00:12:16,000 --> 00:12:21,000 আমি যথেষ্ট সময় ধাক্কা বাস্তবায়ন সম্পর্কে আপনার থামাতে পর আশা করব, 182 00:12:21,000 --> 00:12:24,000 এবং তারপর আমি পপ না আপনি অন্য বিরতি দেব. 183 00:12:24,000 --> 00:12:27,000 কিন্তু সত্যিই এটা সব সময়ে যে অনেক কোড হইনি. 184 00:12:27,000 --> 00:12:35,000 অধিকাংশ কোড সম্ভবত বিস্তার স্টাফ, ক্ষমতা করতে হবে. 185 00:12:35,000 --> 00:12:39,000 ঠিক আছে, কোনো চাপ সম্পূর্ণ করা সম্ভব, 186 00:12:39,000 --> 00:12:47,000 কিন্তু যতদিন না পর্যন্ত আপনি মনে করছি আপনি সঠিক পথ, যে ভাল. 187 00:12:47,000 --> 00:12:53,000 >> কারো কাছে কি কোন কোড তারা মনে সম্পর্কে কাছে আপ সঙ্গে আরামদায়ক আছে? 188 00:12:53,000 --> 00:12:59,000 হাঁ, আমি কিন্তু আছে, কোনো ব্যক্তি কোনো কোড আমি থামা করতে হবে? 189 00:12:59,000 --> 00:13:05,000 ঠিক আছে, আপনি শুরু, তা সংরক্ষণ করতে পারেন, যাই হোক না কেন এটা হয়? 190 00:13:05,000 --> 00:13:09,000 আমি সবসময় যে পদক্ষেপ ভুলবেন না. 191 00:13:09,000 --> 00:13:15,000 ঠিক আছে, ধাক্কা দিকে তাকিয়ে আছে, 192 00:13:15,000 --> 00:13:18,000 না আপনার কোড ব্যাখ্যা করতে চান? 193 00:13:18,000 --> 00:13:24,000 [ছাত্র] প্রথম সব, আমি মাপ বৃদ্ধি করেছে. 194 00:13:24,000 --> 00:13:28,000 আমি অনুমান হয়তো আমি যে-যাইহোক থাকা উচিত, আমি মাপ বৃদ্ধি, 195 00:13:28,000 --> 00:13:31,000 এবং আমি দেখতে যদি ক্ষমতা কম হয়ে থাকে. 196 00:13:31,000 --> 00:13:36,000 এবং যদি সামর্থ কম, আমি অ্যারে যে ইতিমধ্যে আমরা যোগ করুন. 197 00:13:36,000 --> 00:13:42,000 এবং যদি এটা না, আমি 2 দ্বারা ক্ষমতা সংখ্যাবৃদ্ধি, 198 00:13:42,000 --> 00:13:50,000 এবং আমি কিছু স্ট্রিং অ্যারের reallocate এখন একটি বড় ক্ষমতা আকার সঙ্গে. 199 00:13:50,000 --> 00:13:55,000 এবং তারপর যদি ব্যর্থ হয় যে, আমি ব্যবহারকারী বলতে এবং মিথ্যা ফিরে, 200 00:13:55,000 --> 00:14:04,000 এবং যদি সূক্ষ্ম তারপর, আমি নতুন স্থান মধ্যে স্ট্রিং রাখে. 201 00:14:04,000 --> 00:14:07,000 >> এছাড়াও [রব বি] বিজ্ঞপ্তি যে আমরা একটা চমৎকার bitwise অপারেটর এখানে ব্যবহৃত 202 00:14:07,000 --> 00:14:09,000 2 দ্বারা গুন করা হয়. 203 00:14:09,000 --> 00:14:11,000 মনে রাখবেন, সবসময় বাম স্থানান্তর যাচ্ছে যাও 2 দ্বারা গুন করা হয়. 204 00:14:11,000 --> 00:14:15,000 রাইট শিফ্ট 2 দ্বারা দীর্ঘ হিসাবে বিভক্ত হিসাবে আপনি মনে রাখবেন যে এটি উপায় 205 00:14:15,000 --> 00:14:18,000 একটি পূর্ণসংখ্যা 2 দ্বারা বিভক্ত হিসাবে 2 দ্বারা বিভক্ত করা. 206 00:14:18,000 --> 00:14:20,000 এটি একটি বা 1 এখানে সেখানে অগ্রভাগ ছাঁটিয়া দেত্তয়া পারে. 207 00:14:20,000 --> 00:14:26,000 কিন্তু সবসময় স্থানান্তর 1 দ্বারা বাম যাচ্ছে যাও 2 দ্বারা গুন করা হবে, 208 00:14:26,000 --> 00:14:32,000 যদি না আপনি পূর্ণসংখ্যা এর সীমার ওভারফ্লো, এবং তারপর এটি করা হবে. 209 00:14:32,000 --> 00:14:34,000 একটি সাইড মন্তব্য. 210 00:14:34,000 --> 00:14:39,000 আমি চাই এই বিক্ষোভ কোন উপায় সবটা কোডিং পরিবর্তন হবে না, 211 00:14:39,000 --> 00:14:48,000 কিন্তু আমি এই মত কিছু করতে চান. 212 00:14:48,000 --> 00:14:51,000 এটা আসলে এটা সামান্য বেশি দীর্ঘ করা যাচ্ছে. 213 00:15:04,000 --> 00:15:08,000 হয়তো এই নিখুঁত ক্ষেত্রে এই দেখানোর জন্য না, 214 00:15:08,000 --> 00:15:14,000 কিন্তু সেগমেন্ট যাও আমি এই ব্লকের মধ্যে এটি পছন্দ 215 00:15:14,000 --> 00:15:17,000 ঠিক যদি এই যদি এরকম ঘটে, তাহলে আমি কিছু করতে যাচ্ছি, 216 00:15:17,000 --> 00:15:19,000 এবং তারপর ফাংশন হয়. 217 00:15:19,000 --> 00:15:22,000 আমি তারপর ফাংশন নিচে স্ক্রল সমস্ত পথ আমার চোখ করার প্রয়োজন হবে না 218 00:15:22,000 --> 00:15:25,000 দেখতে else করার পর হবে. 219 00:15:25,000 --> 00:15:27,000 এটা যদি এই যদি এরকম ঘটে, তাহলে আমি ঠিক ফিরে আসবেন. 220 00:15:27,000 --> 00:15:30,000 এটি চমৎকার এই অতিক্রম সবকিছু যোগ বেনিফিট আছে 221 00:15:30,000 --> 00:15:33,000 এখন হয় একবার বাম হাতে চলে যায়. 222 00:15:33,000 --> 00:15:40,000 আমি আর যদি কখনও আপনার কাছাকাছি ridiculously দীর্ঘ লাইন প্রয়োজন, 223 00:15:40,000 --> 00:15:45,000 তারপর ঐ 4 বাইট, এবং আমাদের সহায়তা করতে আরো বাম কিছু করতে পারেন, 224 00:15:45,000 --> 00:15:48,000 কম সমাচ্ছন্ন আপনি কেমন বোধ করবে যদি মত ঠিক আমি মনে আছে 225 00:15:48,000 --> 00:15:53,000 আমি একটি একটি অন্য একটি লুপ জন্য ভিতরে ভিতরে যখন লুপ বর্তমানে না. 226 00:15:53,000 --> 00:15:58,000 কোথাও আপনি এই রিটার্ন অবিলম্বে না, আমি ধরনের ভালো করতে পারেন. 227 00:15:58,000 --> 00:16:05,000 এটা সম্পূর্ণই ঐচ্ছিক এবং প্রত্যাশিত কোনো ভাবে না. 228 00:16:05,000 --> 00:16:12,000 >> [ছাত্র] সেখানে একটি আকার হবে - বিফল অবস্থায়? 229 00:16:12,000 --> 00:16:19,000 এখানে আমরা ব্যর্থ condition হয় realloc ব্যর্থ হয়েছে, তাই হ্যাঁ. 230 00:16:19,000 --> 00:16:22,000 ব্যর্থ অবস্থায় কিভাবে, সম্ভবতঃ লক্ষ্য করুন, 231 00:16:22,000 --> 00:16:26,000 আমরা বিনামূল্যে স্টাফ পরে যদি না, সবসময় আমরা নারা করছি যাচ্ছে 232 00:16:26,000 --> 00:16:29,000 কোন ব্যাপার কতবার আমরা কিছু ধাক্কা চেষ্টা করুন. 233 00:16:29,000 --> 00:16:32,000 যদি আমরা রাখতে ঠেলে নিয়ে যায়, আমরা বৃদ্ধিশীল আকার বজায় রাখুন, 234 00:16:32,000 --> 00:16:36,000 যদিও আমরা কিছু নির্বাণ হয় স্ট্যাকের মধ্যে হইনি. 235 00:16:36,000 --> 00:16:39,000 সাধারণত আমরা মাপ পর্যন্ত না বাড়ায় না 236 00:16:39,000 --> 00:16:43,000 পরে আমরা সফলভাবে স্ট্যাক আছে লাগাতে হবে. 237 00:16:43,000 --> 00:16:50,000 আমরা না, বলতে হবে এবং এখানে হয় না. 238 00:16:50,000 --> 00:16:56,000 এবং তারপর পরিবর্তে বলছে ≤ ক্ষমতা s.size, এটা ক্ষমতা কম, 239 00:16:56,000 --> 00:17:01,000 কারণ আমরা যেখানে সবকিছু শুধুমাত্র পাঠানো হয়. 240 00:17:01,000 --> 00:17:07,000 >> এবং মনে রাখবেন একমাত্র স্থান, যে সম্ভবত আমরা ফিরে মিথ্যা হতে পারে 241 00:17:07,000 --> 00:17:14,000 এখানে, যেখানে realloc ফিরে নাল, 242 00:17:14,000 --> 00:17:19,000 এবং আপনি যদি মান ত্রুটি ঘটেছে মনে রাখবেন, 243 00:17:19,000 --> 00:17:22,000 আপনি হয়তো এই একটি ক্ষেত্রে বিবেচনা যেখানে আপনি একটি প্রমিত ত্রুটি মুদ্রণ করতে পারেন, 244 00:17:22,000 --> 00:17:26,000 পরিবর্তে একটা মানসম্মত আউট সরাসরি মুদ্রণ তাই fprintf stderr. 245 00:17:26,000 --> 00:17:31,000 আবার, যে, কিন্তু একটি প্রত্যাশা না যদি এটা একটা ত্রুটি, 246 00:17:31,000 --> 00:17:41,000 printf টাইপ করুন, তাহলে এটি পরিবর্তে আউট প্রমিত মান ত্রুটির মুদ্রণ করতে চাইবেন. 247 00:17:41,000 --> 00:17:44,000 >> কেউ কিছু মনে রাখবেন অন্য আছে? হ্যাঁ. 248 00:17:44,000 --> 00:17:47,000 [ছাত্র] আপনি [শ্রবণাতীত] উপর যেতে পারি? 249 00:17:47,000 --> 00:17:55,000 [বি Rob] হ্যাঁ, এটি প্রকৃত binariness বা ঠিক কি? 250 00:17:55,000 --> 00:17:57,000 [ছাত্র] সুতরাং আপনি 2 দ্বারা এটি সংখ্যাবৃদ্ধি? 251 00:17:57,000 --> 00:17:59,000 [বি Rob] হ্যাঁ, মূলত. 252 00:17:59,000 --> 00:18:11,000 বাইনারি জমি ইন, সবসময় আমরা আমাদের সংখ্যা নির্ধারণ করুন. 253 00:18:11,000 --> 00:18:22,000 1 দ্বারা এই বাম নড়ন মূলত টিপে ডাইন এখানে না. 254 00:18:22,000 --> 00:18:25,000 ফিরুন এই মাত্র, বাইনারি যে সবকিছু মনে 255 00:18:25,000 --> 00:18:28,000 2 একটি ক্ষমতা, তাই এই 0 2 প্রতিনিধিত্ব করে, 256 00:18:28,000 --> 00:18:30,000 এই 1 2, এই 2 2. 257 00:18:30,000 --> 00:18:33,000 ডাইন যাও 0 থেকে এখন প্রবেশ, আমরা সবকিছু উপর স্থানান্তরিত করুন. 258 00:18:33,000 --> 00:18:38,000 কি 0 2 ব্যবহার করা হয়, এখন হয় 2 1, 2 2 হয়. 259 00:18:38,000 --> 00:18:41,000 ডান দিকে যে আমরা ঢোকানো 260 00:18:41,000 --> 00:18:44,000 অগত্যা হয় 0 হবে, 261 00:18:44,000 --> 00:18:46,000 যা বিষয়টি যুক্তিযুক্ত হবে. 262 00:18:46,000 --> 00:18:49,000 যদি কখনও আপনার 2 দ্বারা একটি সংখ্যা গুণ করা, এটি এবং শেষ বিজোড় যাচ্ছে না, 263 00:18:49,000 --> 00:18:54,000 তাই 0 2 0 জায়গা হওয়া উচিত, 264 00:18:54,000 --> 00:18:59,000 এবং এই কি আমি অর্ধেক আগে সম্পর্কে সতর্ক যদি আপনি নামান ঘটতে না 265 00:18:59,000 --> 00:19:01,000 বহুদূরে বিটের একটি পূর্ণসংখ্যা সংখ্যা, 266 00:19:01,000 --> 00:19:04,000 তারপর এই 1 এবং শেষ যাওয়া বন্ধ করতে যাচ্ছে. 267 00:19:04,000 --> 00:19:10,000 এটা শুধুমাত্র চিন্তা করবেন না, যদি আপনি বৃহৎ ধারণক্ষমতা সাথে ডিল করা ঘটেছে. 268 00:19:10,000 --> 00:19:15,000 কিন্তু যে স্থানে থাকে, তাহলে আপনি জিনিষ বিলিয়ান একটি অ্যারের সাথে আচরণ করছেন, 269 00:19:15,000 --> 00:19:25,000 যা মেমরির মধ্যে মাপসই পারে যাইহোক হইনি. 270 00:19:25,000 --> 00:19:31,000 >> এখন আমরা পপ, যা আরও সহজ করতে পারেন. 271 00:19:31,000 --> 00:19:36,000 আপনি এটা যদি আপনি একটি আভা পপ ঘটতে পছন্দ না হতে পারে, 272 00:19:36,000 --> 00:19:38,000 এবং এখন আপনি অর্ধেক ক্ষমতা আবার আছেন. 273 00:19:38,000 --> 00:19:42,000 আপনি মেমরির পরিমাণ আপনার সঙ্কুচিত realloc পারে, 274 00:19:42,000 --> 00:19:47,000 কিন্তু আপনি যে চিন্তা করতে হবে না, যাতে শুধুমাত্র realloc ক্ষেত্রে হবে 275 00:19:47,000 --> 00:19:50,000 ক্রমবর্ধমান মেমরি, মেমরি হ্রাস না, 276 00:19:50,000 --> 00:19:59,000 যা পপ সুপার সহজ করতে হবে. 277 00:19:59,000 --> 00:20:02,000 এখন queues, যা stacks মত হতে যাচ্ছে, 278 00:20:02,000 --> 00:20:06,000 কিন্তু যাতে আপনি সেটা নিতে বিপরীত. 279 00:20:06,000 --> 00:20:10,000 এই সারির মধ্যে prototypical যেমন একটি লাইন, 280 00:20:10,000 --> 00:20:12,000 তাই আমি অনুমান যদি আপনি ছিল ইংরাজি, আমি বলেন না 281 00:20:12,000 --> 00:20:17,000 একটি সারিতে prototypical এর উদাহরণ হল সারিতে. 282 00:20:17,000 --> 00:20:22,000 সুতরাং মত একটি পংক্তি, যদি আপনি প্রথম লাইন ব্যক্তি, 283 00:20:22,000 --> 00:20:24,000 আপনি লাইন আউট প্রথম ব্যক্তি হতে আশা করছি. 284 00:20:24,000 --> 00:20:31,000 যদি আপনি লাইন অন্তিম ব্যক্তি, আপনি শেষ ব্যক্তির সার্ভিসিং হতে যাচ্ছি. 285 00:20:31,000 --> 00:20:35,000 আমরা যে FIFO প্যাটার্ন কল, যেহেতু স্ট্যাকের ছিল LIFO প্যাটার্ন. 286 00:20:35,000 --> 00:20:40,000 যারা শব্দ হয় চমত্কার সার্বজনীন. 287 00:20:40,000 --> 00:20:46,000 >> ভালো লেগেছে stacks এবং অ্যারে অসদৃশ, সাধারণত queues মাঝখানে উপাদান ব্যবহারের অনুমতি দেওয়া হয় না. 288 00:20:46,000 --> 00:20:50,000 এখানে, একটি স্ট্যাক, আমরা ধাক্কা এবং পপ আছে. 289 00:20:50,000 --> 00:20:54,000 এখানে, আমরা এরকম বলা আছে সারিবদ্ধ এবং dequeue পারবেন. 290 00:20:54,000 --> 00:20:58,000 আমি এ কথা শুনে তাদের স্থানান্তর এবং unshift বলা হয়. 291 00:20:58,000 --> 00:21:02,000 আমি মানুষ বলে ধাক্কা এবং পপ queues যাও যাও এছাড়াও শোনা আবেদন করেছি. 292 00:21:02,000 --> 00:21:05,000 আমি, সন্নিবেশ অপসারণ শুনে থাকেন, 293 00:21:05,000 --> 00:21:11,000 তাই এবং ধাক্কা, পপ যদি আপনি stacks সম্পর্কে কথা, আপনি এবং ঠেলে পপিং হয়. 294 00:21:11,000 --> 00:21:16,000 আপনি যদি queues বিষয়ে কথা বলছি, আপনি শব্দ আপনি ব্যবহার করতে চান সেগুলি নির্বাচন হতে পারে 295 00:21:16,000 --> 00:21:23,000 সন্নিবেশ এবং অপসারণের জন্য, এবং সেটাকে কি বলা উচিত কোন ঐক্যমত্য নেই. 296 00:21:23,000 --> 00:21:27,000 কিন্তু এখানে, আমরা সারিবদ্ধ এবং dequeue আছে. 297 00:21:27,000 --> 00:21:37,000 এখন, struct দেখায় স্ট্যাকের struct প্রায় অভিন্ন. 298 00:21:37,000 --> 00:21:40,000 কিন্তু আমরা মাথা ট্র্যাক রাখা আছে. 299 00:21:40,000 --> 00:21:44,000 আমি অনুমান করে বলেছেন নিচে এখানে, কিন্তু কেন আমরা মাথা প্রয়োজন? 300 00:21:53,000 --> 00:21:57,000 এগুলির নমুনা হয় মূলত যাও এবং ধাক্কা পপ অভিন্ন. 301 00:21:57,000 --> 00:21:59,000 আপনি এটা ধাক্কা এবং পপ হিসাবে মনে করতে পারেন. 302 00:21:59,000 --> 00:22:08,000 শুধু পার্থক্য হল পপ শেষ ফিরে-এর পরিবর্তে, এটি এর প্রথম ফেরত দিচ্ছে. 303 00:22:08,000 --> 00:22:12,000 2, 1, 3, 4, বা কিছু বলেছিলাম. 304 00:22:12,000 --> 00:22:14,000 এবং এখানে শুরু করা হয়. 305 00:22:14,000 --> 00:22:17,000 আমাদের সারি সম্পূর্ণরূপে পূর্ণ, তাই এটি মধ্যে চারটি উপাদান আছে. 306 00:22:17,000 --> 00:22:21,000 আমাদের কিউ শেষে বর্তমানে 2, 307 00:22:21,000 --> 00:22:24,000 এবং এখন আমরা অন্য কিছু সন্নিবেশ যান. 308 00:22:24,000 --> 00:22:29,000 >> যখন আমরা স্ট্যাকের সংস্করণের জন্য যে অন্য কিছু, আমরা কি কি সন্নিবেশ করতে চান 309 00:22:29,000 --> 00:22:36,000 হয় আমরা আমাদের মেমরি ব্লক প্রসারিত হয়েছে. 310 00:22:36,000 --> 00:22:40,000 এই সমস্যা কি? 311 00:22:40,000 --> 00:22:45,000 [ছাত্র] আপনি 2 সরানো. 312 00:22:45,000 --> 00:22:51,000 আগে আমি কি বলেন কিউ শেষে সম্পর্কে, 313 00:22:51,000 --> 00:22:57,000 এই 1 এ আছে অর্থে যে আমরা শুরু করতে না, 314 00:22:57,000 --> 00:23:01,000 তারপর আমরা dequeue 1 চান, তাহলে dequeue 3 তারপর, dequeue 4, 315 00:23:01,000 --> 00:23:05,000 তারপর dequeue 2 পরে, এই এক dequeue. 316 00:23:05,000 --> 00:23:08,000 আমরা এখন realloc ব্যবহার না করতে পারেন, 317 00:23:08,000 --> 00:23:11,000 অথবা খুব অন্তত, একটি ভিন্ন উপায়ে realloc ব্যবহার আছে. 318 00:23:11,000 --> 00:23:15,000 কিন্তু সম্ভবত আপনি ঠিক realloc ব্যবহার করা উচিত নয়. 319 00:23:15,000 --> 00:23:18,000 আপনি ম্যানুয়ালি আপনার মেমরি কপি আছে যাচ্ছি. 320 00:23:18,000 --> 00:23:21,000 >> দুই ফাংশান মেমরি কপি আছে. 321 00:23:21,000 --> 00:23:25,000 Memcopy এবং memmove আছে. 322 00:23:25,000 --> 00:23:29,000 আমি বর্তমানে করছি man পৃষ্ঠা আছে যা আপনি ব্যবহার করতে চান তাহলে চলুন দেখতে পড়া. 323 00:23:29,000 --> 00:23:35,000 Okay memcopy,, পার্থক্য হল 324 00:23:35,000 --> 00:23:38,000 যে memcopy এবং memmove, এক ক্ষেত্রে সঠিকভাবে হ্যান্ডলগুলি 325 00:23:38,000 --> 00:23:41,000 যেখানে আপনি একটি অঞ্চলের যে কোন অঞ্চলের মধ্যে ওভারল্যাপ ঘটে অনুলিপি করছি 326 00:23:41,000 --> 00:23:46,000 আপনার কাছ থেকে অনুলিপি করছি. 327 00:23:46,000 --> 00:23:50,000 Memcopy এটা হ্যান্ডেল হইনি. Memmove আছে. 328 00:23:50,000 --> 00:23:59,000 আপনি-সমস্যা হিসাবে মনে করতে পারেন 329 00:23:59,000 --> 00:24:09,000 এর দেওয়া বলতে আমি এই লোক কপি করতে চান, 330 00:24:09,000 --> 00:24:13,000 এই লোক উপর এইসব চার. 331 00:24:13,000 --> 00:24:16,000 শেষে কি, অ্যারে মত হওয়া উচিত 332 00:24:16,000 --> 00:24:26,000 পরে কপি থাকে 2, 1, 2, 1, 3, 4, এবং তারপর শেষে কিছু জিনিস. 333 00:24:26,000 --> 00:24:29,000 কিন্তু এই অর্ডার যা আসলে আমরা কপি উপর নির্ভরশীল, 334 00:24:29,000 --> 00:24:32,000 থেকে যদি আমরা যে কোন অঞ্চলের মধ্যে অনুলিপি আমরা বিবেচনা করছি না 335 00:24:32,000 --> 00:24:35,000 ওভারল্যাপ আমরা এক থেকে অনুলিপি করছি, 336 00:24:35,000 --> 00:24:46,000 তারপর আমরা এখানে শুরুর ভালো, না জায়গায় আমরা যেতে চাই মধ্যে 2 কপি হতে পারে, 337 00:24:46,000 --> 00:24:52,000 তারপর এগিয়ে আমাদের পয়েন্টার সরানো. 338 00:24:52,000 --> 00:24:56,000 >> এখন আমরা এখানে এবং এখানে হবে, এবং সেটি এখন আমরা কপি করতে চান 339 00:24:56,000 --> 00:25:04,000 এই লোক উপর এই লোক এবং ফরওয়ার্ড আমাদের পয়েন্টার সরানো. 340 00:25:04,000 --> 00:25:07,000 আমরা কি শেষ পর্যন্ত পেয়ে যাচ্ছে সেটি 2, 1, 2, 1, 2, 1 341 00:25:07,000 --> 00:25:10,000 পরিবর্তে উপযুক্ত 2, 1, 2, 1, 3, 4 কারণ 342 00:25:10,000 --> 00:25:15,000 2, 1 আসল 3, 4 overrode. 343 00:25:15,000 --> 00:25:19,000 Memmove যে সঠিকভাবে পরিচালনা করে. 344 00:25:19,000 --> 00:25:23,000 এই ক্ষেত্রে, মূলত শুধু সবসময় memmove ব্যবহার 345 00:25:23,000 --> 00:25:26,000 কারণ তা সঠিকভাবে পরিচালনা করে. 346 00:25:26,000 --> 00:25:29,000 এতে সাধারণত কোনো খারাপ সঞ্চালন করা হয় না. 347 00:25:29,000 --> 00:25:32,000 ধারণা পরিবর্তে শুরু শুরুতে থেকে এবং এই পথ অনুলিপি হয় 348 00:25:32,000 --> 00:25:35,000 ভালো আমরা কি এখানে, এটি শেষ থেকে শুরু হয় এবং মধ্যে কপি করা, 349 00:25:35,000 --> 00:25:38,000 এবং যে ক্ষেত্রে, আপনার কোন সমস্যা না থাকতে পারে. 350 00:25:38,000 --> 00:25:40,000 না এখন পর্যন্ত কোন কর্মক্ষমতা হারিয়ে গেছে. 351 00:25:40,000 --> 00:25:47,000 সর্বদা memmove ব্যবহার করুন. Memcopy সম্পর্কে চিন্তা করবেন না. 352 00:25:47,000 --> 00:25:51,000 এবং যে যেখানে আপনি আলাদাভাবে memmove আছে চলুন 353 00:25:51,000 --> 00:26:01,000 আপনার সারিতে wrapped-এর কাছাকাছি অংশ. 354 00:26:01,000 --> 00:26:04,000 কোন উদ্বেগ সম্পূর্ণভাবে যদি না শেষ. 355 00:26:04,000 --> 00:26:10,000 এই স্ট্যাকের, ধাক্কা, এবং পপ চেয়ে আরো কঠিন. 356 00:26:10,000 --> 00:26:15,000 >> কেউ কোনো কোড আমরা সঙ্গে কাজ করতে আছে? 357 00:26:15,000 --> 00:26:21,000 এমনকি যদি সম্পূর্ণরূপে অসম্পূর্ণ? 358 00:26:21,000 --> 00:26:23,000 [ছাত্র] হ্যাঁ, এটি সম্পূর্ণ অসম্পূর্ণ, যদিও. 359 00:26:23,000 --> 00:26:27,000 সম্পূর্ণরূপে অসম্পূর্ণ দীর্ঘ হিসাবে জরিমানা হিসাবে আমরা-পুনর্বিবেচনা আপনি সংরক্ষণ করতে পারেন? 360 00:26:27,000 --> 00:26:32,000 আমি ভুলে যেতে পারে যে প্রতি একক সময়. 361 00:26:32,000 --> 00:26:39,000 Okay, কি উপেক্ষা ঘটনা যখন আমরা জিনিষ মাপ পরিবর্তন করতে হবে. 362 00:26:39,000 --> 00:26:42,000 পুনরায় মাপ সম্পূর্ণভাবে উপেক্ষা করুন. 363 00:26:42,000 --> 00:26:49,000 এই কোড ব্যাখ্যা করুন. 364 00:26:49,000 --> 00:26:54,000 আমি প্রথমে সব চেক যদি আকার অনুলিপি সমস্ত প্রথম কম করছি 365 00:26:54,000 --> 00:27:01,000 যে পরে এবং তারপর, আমি-সন্নিবেশ আমি মাথা + আকার নিতে, 366 00:27:01,000 --> 00:27:05,000 এবং আমি নিশ্চিত হোন যে, এটি অ্যারের ক্ষমতার কাছাকাছি গোপন করে, 367 00:27:05,000 --> 00:27:08,000 এবং আমি যে অবস্থানে এ নতুন স্ট্রিং সন্নিবেশ করুন. 368 00:27:08,000 --> 00:27:12,000 তারপর আমি মাপ বৃদ্ধি এবং সত্য ফিরে আসুন. 369 00:27:12,000 --> 00:27:22,000 >> [বি Rob] এই স্পষ্টভাবে তাদের ক্ষেত্রে যেখানে আপনি mod ব্যবহার করা চাই চলুন এক. 370 00:27:22,000 --> 00:27:25,000 মামলার কোন ধরনের কাছাকাছি যেখানে আপনি মোড়কে, যদি আপনি কাছাকাছি মোড়কে মনে আছে, 371 00:27:25,000 --> 00:27:29,000 অবিলম্বে চিন্তার mod হওয়া উচিত. 372 00:27:29,000 --> 00:27:36,000 একটি দ্রুত অপ্টিমাইজেশান হিসাবে / আপনার এক লাইন কোড খাটো করা, 373 00:27:36,000 --> 00:27:42,000 আপনি নোটিশ অবিলম্বে এই এক লাইন অনুসরণ 374 00:27:42,000 --> 00:27:53,000 শুধু আকার + +, তাই আপনি মার্জ করে এই যে রেখা, আকার + +. 375 00:27:53,000 --> 00:27:58,000 এখানে এখন ডাউন, আমরা কেস আছে 376 00:27:58,000 --> 00:28:01,000 যেখানে আমরা পর্যাপ্ত মেমরি নেই, 377 00:28:01,000 --> 00:28:05,000 তাই আমরা আমাদের সামর্থ্য 2 দ্বারা হয় চলেছে. 378 00:28:05,000 --> 00:28:09,000 আমি অনুমান করতে এখানে একই সমস্যা হতে পারে, কিন্তু আমরা এখন উপেক্ষা করতে পারেন, 379 00:28:09,000 --> 00:28:13,000 যেখানে আপনি যদি আপনার ক্ষমতা বৃদ্ধি করতে ব্যর্থ হয়েছে, 380 00:28:13,000 --> 00:28:18,000 তারপর আপনি আবার আপনার 2 দ্বারা ক্ষমতা হ্রাস করতে চান চালু করছি. 381 00:28:18,000 --> 00:28:24,000 অন্য একটি সংক্ষিপ্ত নোট ঠিক মত আপনি কি করতে পারেন + =, 382 00:28:24,000 --> 00:28:30,000 এছাড়াও আপনি << = করতে পারেন. 383 00:28:30,000 --> 00:28:43,000 কিছু আগে প্রায় সমান যেতে পারেন + =, | =, =, = <<. 384 00:28:43,000 --> 00:28:52,000 চর * নতুন আমাদের মেমরি নতুন ব্লক. 385 00:28:52,000 --> 00:28:55,000 ওহ, আর ধরে না. 386 00:28:55,000 --> 00:29:02,000 >> লোকেরা আমাদের মেমরি নতুন ব্লক ধরণ সম্পর্কে মনে করেন? 387 00:29:02,000 --> 00:29:06,000 [ছাত্র] এটা ** গৃহস্থালির কাজ করা উচিত. 388 00:29:06,000 --> 00:29:12,000 আমাদের struct ফিরে চিন্তা আপ এখানে, 389 00:29:12,000 --> 00:29:14,000 স্ট্রিং কি আমরা reallocating হয়. 390 00:29:14,000 --> 00:29:21,000 আমরা সারিতে উপাদানের জন্য একটি সম্পূর্ণ নতুন ডাইনামিক স্টোরেজ না. 391 00:29:21,000 --> 00:29:25,000 আমরা কি আপনার স্ট্রিং যাও বরাদ্দ করা যাচ্ছে সেটি কি আমরা এখন অধিকার mallocing করছি, 392 00:29:25,000 --> 00:29:30,000 এবং তাই নতুন একটি গৃহস্থালি ** করা হচ্ছে. 393 00:29:30,000 --> 00:29:34,000 এটি স্ট্রিং একটি অ্যারের হবে না. 394 00:29:34,000 --> 00:29:38,000 তারপর কি কেস অধীন যা আমরা মিথ্যা ফিরে যাচ্ছেন? 395 00:29:38,000 --> 00:29:41,000 [ছাত্র] আমরা কি করা * গৃহস্থালির কাজ করছেন? 396 00:29:41,000 --> 00:29:44,000 [বি Rob] হ্যাঁ, ভাল কল করা হচ্ছে. 397 00:29:44,000 --> 00:29:46,000 [ছাত্র] যে কী ছিল? 398 00:29:46,000 --> 00:29:49,000 [বি Rob] আমরা গৃহস্থালি * মাপ কারণ আমরা কোন চেয়েচিলাম দীর্ঘ 399 00:29:49,000 --> 00:29:53,000 আসলে এই একটি খুব বড় সমস্যার কারণ sizeof (গৃহস্থালির কাজ করা) 1 হতে হবে. 400 00:29:53,000 --> 00:29:55,000 Sizeof গৃহস্থালির কাজ করা * 4 হবে, 401 00:29:55,000 --> 00:29:58,000 তাই বার যখন আপনি ints সঙ্গে লেনদেন করছেন অনেক, 402 00:29:58,000 --> 00:30:01,000 আপনি এটি দিয়ে পার পেতে ঝোঁক কারণ int-* int-র মাপ এবং আকার 403 00:30:01,000 --> 00:30:04,000 একটি 32 বিট সিস্টেমে একই জিনিস হতে যাচ্ছি. 404 00:30:04,000 --> 00:30:09,000 কিন্তু এখানে, sizeof (গৃহস্থালির কাজ করা) এবং sizeof (গৃহস্থালি *) এখন একই জিনিস হতে হয় না. 405 00:30:09,000 --> 00:30:15,000 >> Circumstance যেখানে আমরা ফিরে মিথ্যা কি? 406 00:30:15,000 --> 00:30:17,000 [ছাত্র] গেম নাল হয়. 407 00:30:17,000 --> 00:30:23,000 হাঁ, যদি নতুন হয় নাল, আমরা ফিরে মিথ্যা, 408 00:30:23,000 --> 00:30:34,000 এবং আমি অস্বীকার করা যাচ্ছে না এখানে- 409 00:30:34,000 --> 00:30:37,000 [ছাত্র] [শ্রবণাতীত] 410 00:30:37,000 --> 00:30:39,000 [বি Rob] হ্যাঁ, এটা পরিষ্কার হয়. 411 00:30:39,000 --> 00:30:46,000 আপনি হয় 2 বার ক্ষমতা বা ক্ষমতার স্থানান্তর 1 এবং তখন শুধুমাত্র ডাউন সেট এখানে বা যাই হোক না কেন যেত না. 412 00:30:46,000 --> 00:30:52,000 আমরা এটা করতে হিসাবে আমরা এটি ছিল করব. 413 00:30:52,000 --> 00:30:56,000 ক্যাপাসিটি >> = 1. 414 00:30:56,000 --> 00:31:08,000 এবং আপনি 1 এর জায়গা হারিয়ে যাওয়ার বিষয়ে উদ্বিগ্ন হতে যাচ্ছেন না 415 00:31:08,000 --> 00:31:12,000 কারণ আপনি বাকি 1 দ্বারা স্থানান্তরিত, তাই 1 এর জায়গা অগত্যা 0, 416 00:31:12,000 --> 00:31:16,000 1 দ্বারা যাতে ডান নড়ন, এখনও আপনি ঠিক করছি না. 417 00:31:16,000 --> 00:31:19,000 [ছাত্র] আপনি কি রিটার্ন করার আগে করতে হবে কি? 418 00:31:19,000 --> 00:31:29,000 [বি Rob] হ্যাঁ, এই একেবারে কোন মানে তোলে. 419 00:31:29,000 --> 00:31:36,000 >> এখন অনুমান আমরা শেষ পর্যন্ত ফিরে যাওয়া সত্য করছি. 420 00:31:36,000 --> 00:31:39,000 আমাদের এইসব memmoves করতে যাচ্ছেন, 421 00:31:39,000 --> 00:31:45,000 আমরা কিভাবে আমরা তাদের সঙ্গে কাজ করলে যথেষ্ট সতর্কতা অবলম্বন করা প্রয়োজন. 422 00:31:45,000 --> 00:31:50,000 কেউ কি কিভাবে আমরা তাদের জন্য কি কোন পরামর্শ আছে? 423 00:32:17,000 --> 00:32:21,000 এখানে আমাদের শুরু করা হয়. 424 00:32:21,000 --> 00:32:28,000 অবশ্যম্ভাবীভাবেই, আমরা শুরুতে আবার শুরু করতে চান 425 00:32:28,000 --> 00:32:35,000 এবং সেখানে থেকে কপি জিনিস, 1, 3, 4, 2. 426 00:32:35,000 --> 00:32:41,000 কি করব? 427 00:32:41,000 --> 00:32:52,000 প্রথমত, আমি man পৃষ্ঠা memmove এ জন্য আবার চেহারা আছে. 428 00:32:52,000 --> 00:32:57,000 Memmove, আর্গুমেন্ট আদেশ সবসময় তা গুরুত্বপূর্ণ. 429 00:32:57,000 --> 00:33:01,000 আমরা আমাদের প্রথম গন্তব্য চান, উৎস দ্বিতীয়, তৃতীয় আকার. 430 00:33:01,000 --> 00:33:06,000 ফাংশন যা উত্স ও গন্তব্য বিপরীত অনেক আছে. 431 00:33:06,000 --> 00:33:11,000 গন্তব্য, উৎস কিছুটা সামঞ্জস্যপূর্ণ হতে থাকে. 432 00:33:17,000 --> 00:33:21,000 সরান, কি ফিরে? 433 00:33:21,000 --> 00:33:27,000 এটা গন্তব্য একটি পয়েন্টার ফেরৎ কারণ যাই হোক আপনি যা চাইবেন জন্য. 434 00:33:27,000 --> 00:33:32,000 আমি এটি ছবি, পড়তে পারেন, কিন্তু আমরা আমাদের গন্তব্য সরাতে চাই. 435 00:33:32,000 --> 00:33:35,000 >> কি আমাদের গন্তব্য মুখোমুখি করা হবে? 436 00:33:35,000 --> 00:33:37,000 [ছাত্র] পরিচিতি. 437 00:33:37,000 --> 00:33:39,000 [বি Rob] হ্যাঁ, এবং যেখানে আমরা থেকে অনুলিপি করা হয়? 438 00:33:39,000 --> 00:33:43,000 প্রথম জিনিস আমরা অনুলিপি হয় এই 1, 3, 4. 439 00:33:43,000 --> 00:33:50,000 -1 এই কি, 3, 4. 440 00:33:50,000 --> 00:33:55,000 এই 1 ঠিকানা কি? 441 00:33:55,000 --> 00:33:58,000 যে 1 ঠিকানা কি? 442 00:33:58,000 --> 00:34:01,000 [ছাত্র] [শ্রবণাতীত] 443 00:34:01,000 --> 00:34:03,000 [বি Rob] হেড + প্রথম উপাদান এর ঠিকানা. 444 00:34:03,000 --> 00:34:05,000 কিভাবে আমরা অ্যারের মধ্যে প্রথম উপাদান পেতে পারি? 445 00:34:05,000 --> 00:34:10,000 [ছাত্র] সারি. 446 00:34:10,000 --> 00:34:15,000 [বি Rob] হ্যাঁ, q.strings. 447 00:34:15,000 --> 00:34:20,000 মনে রাখবেন, এখানে, আমাদের মাথা হল 1. 448 00:34:20,000 --> 00:34:24,000 এটি মেরামত করা. আমি মনে করি magically- 449 00:34:24,000 --> 00:34:29,000 এখানে, আমাদের মাথা হল 1. আমি খুব আমার রঙ পরিবর্তন করতে যাচ্ছেন না. 450 00:34:29,000 --> 00:34:36,000 এবং এখানে একটি পংক্তি. 451 00:34:36,000 --> 00:34:41,000 এই, আমরা এটি হয়ত হিসাবে আমরা কি এখানে উপর লিখতে পারেন 452 00:34:41,000 --> 00:34:43,000 সঙ্গে মাথা + q.strings. 453 00:34:43,000 --> 00:34:51,000 মানুষ অনেক এছাড়াও এটি লিখুন & q.strings [মাথা]. 454 00:34:51,000 --> 00:34:55,000 এটি সত্যিই কোনো দক্ষ কম না. 455 00:34:55,000 --> 00:34:58,000 আপনি এটা হিসাবে আপনি এটি dereferencing হয় এবং তারপর এর ঠিকানা পেয়ে মনে হতে পারে, 456 00:34:58,000 --> 00:35:04,000 কিন্তু কম্পাইলার কি আমরা আগে এটি অনুবাদ যেকোন উপায়ে যাচ্ছে, হয় q.strings + করেন. 457 00:35:04,000 --> 00:35:06,000 উভয় ক্ষেত্রেই আপনি মনে করতে চান. 458 00:35:06,000 --> 00:35:11,000 >> এবং কত বাইট আমরা কপি করতে চান? 459 00:35:11,000 --> 00:35:15,000 [ছাত্র] ক্যাপাসিটি - মাথা. 460 00:35:15,000 --> 00:35:18,000 ক্যাপাসিটি - করেন. 461 00:35:18,000 --> 00:35:21,000 এবং তারপর আপনি সবসময় লিখে একটি উদাহরণ হতে পারে আউট 462 00:35:21,000 --> 00:35:23,000 যাও যদি চিন্তা করা যে অধিকার আছে. 463 00:35:23,000 --> 00:35:26,000 [ছাত্র] এটা প্রয়োজন 2 তারপর দ্বারা বিভক্ত করা হবে. 464 00:35:26,000 --> 00:35:30,000 হ্যাঁ, তাই আমি অনুমান আমরা আকার ব্যবহার করতে পারেন. 465 00:35:30,000 --> 00:35:35,000 আমরা এখনও আকার আছে হচ্ছে- 466 00:35:35,000 --> 00:35:39,000 আকার ব্যবহার করে, আমরা মাপ সমান 4 যাও আছে. 467 00:35:39,000 --> 00:35:42,000 আমাদের আকার 4. আমাদের মাথা হল 1. 468 00:35:42,000 --> 00:35:46,000 আমরা এইসব উপাদান 3 কপি করতে চান. 469 00:35:46,000 --> 00:35:54,000 এটা মানসিক সুস্থতা যে আকার চেক - প্রধান সঠিকভাবে 3. 470 00:35:54,000 --> 00:35:58,000 এবং এখানে ফিরে আসছে, যেমন আমরা পূর্বে বলেন, 471 00:35:58,000 --> 00:36:00,000 যদি আমরা ক্ষমতা ব্যবহৃত তারপর, আমরা 2 দ্বারা বিভক্ত করা আছে চাই 472 00:36:00,000 --> 00:36:04,000 কারণ ইতিমধ্যে আমরা আমাদের ক্ষমতা জন্মায় করেছি, তাই, আমরা মাপ ব্যবহার চালু করছি. 473 00:36:11,000 --> 00:36:13,000 যে যে অংশ কপি. 474 00:36:13,000 --> 00:36:18,000 এখন, আমরা অন্যান্য অংশ, যে অংশ শুরুর ছেড়ে দেওয়া হয় কপি করা আবশ্যক. 475 00:36:18,000 --> 00:36:28,000 >> যে কি অবস্থা মধ্যে memmove যাও করছেন? 476 00:36:28,000 --> 00:36:32,000 [ছাত্র] প্লাস আকার - করেন. 477 00:36:32,000 --> 00:36:38,000 হ্যাঁ, তাই আমরা আকার ইতিমধ্যে কপি - মাথা বাইট, 478 00:36:38,000 --> 00:36:43,000 এবং তাই যেখানে আমরা অবশিষ্ট বাইট কপি করতে চান নতুন 479 00:36:43,000 --> 00:36:48,000 এবং তারপর আকার বিয়োগ ভালভাবে, বাইট সংখ্যা ইতিমধ্যে আমরা কপি করেছি ইন 480 00:36:48,000 --> 00:36:52,000 এবং তারপর যেখানে আমরা থেকে অনুলিপি করা হয়? 481 00:36:52,000 --> 00:36:54,000 [ছাত্র] Q.strings [0]. 482 00:36:54,000 --> 00:36:56,000 [বি Rob] হ্যাঁ, q.strings. 483 00:36:56,000 --> 00:37:02,000 আমরা না হয় & q.strings [0]. পারে 484 00:37:02,000 --> 00:37:05,000 এটি উল্লেখযোগ্যভাবে এই তুলনায় কম প্রচলিত. 485 00:37:05,000 --> 00:37:14,000 যদি এটা 0 হতে যাচ্ছে, তাহলে q.strings ঝোঁক দেখতে পাবেন. 486 00:37:14,000 --> 00:37:16,000 যে যেখানে আমরা থেকে অনুলিপি করছি. 487 00:37:16,000 --> 00:37:18,000 কত বাইট আমরা কপি বাকি? আছে >> [ছাত্র] 10. 488 00:37:18,000 --> 00:37:20,000 রাইট. 489 00:37:20,000 --> 00:37:25,000 [ছাত্র] আমরা 5 গুণ করা আছে কি - 10 বার বাইট বা কিছু মাপ? 490 00:37:25,000 --> 00:37:30,000 হ্যাঁ, তাই এই হল যেখানে-what ঠিক আমরা অনুলিপি করা হয়? 491 00:37:30,000 --> 00:37:32,000 [ছাত্র] [শ্রবণাতীত] 492 00:37:32,000 --> 00:37:34,000 জিনিস আমরা অনুলিপি করছেন টাইপ কি? 493 00:37:34,000 --> 00:37:36,000 [ছাত্র] [শ্রবণাতীত] 494 00:37:36,000 --> 00:37:41,000 হাঁ, গৃহস্থালির কাজ * গুলি যে আমরা অনুলিপি করছি, তাই আমরা যেখানে তাদের থেকে আসা হয় না জানি. 495 00:37:41,000 --> 00:37:47,000 ওয়েল, যেখানে স্ট্রিং মত তারা প্রতি নির্দেশ করছেন,, আমরা শেষ কিউ 'র মধ্যে এটি ঠেলাঠেলি 496 00:37:47,000 --> 00:37:49,000 কিউ সম্মুখের বা enqueuing. 497 00:37:49,000 --> 00:37:51,000 কোথা থেকে আসছে, আমরা কোন ধারণা আছে. 498 00:37:51,000 --> 00:37:56,000 আমরা শুধু * গৃহস্থালির কাজ গুলি নিজেদের খবরাখবর রাখা আবশ্যক. 499 00:37:56,000 --> 00:38:00,000 মাথা বাইট - আমরা আকার কপি করতে না চান. 500 00:38:00,000 --> 00:38:03,000 মাথা গৃহস্থালি * গুলি, - আমরা আকার কপি করতে চান 501 00:38:03,000 --> 00:38:11,000 তাই আমরা sizeof (গৃহস্থালি *) দ্বারা এই সংখ্যাবৃদ্ধি করা যাচ্ছে করছি. 502 00:38:11,000 --> 00:38:17,000 একই নিচে এখানে, মাথা * sizeof (গৃহস্থালি *). 503 00:38:17,000 --> 00:38:24,000 >> [ছাত্র] কি [শ্রবণাতীত]? 504 00:38:24,000 --> 00:38:26,000 এখানে ডান? 505 00:38:26,000 --> 00:38:28,000 [ছাত্র] না, নীচের যে, আকার - করেন. 506 00:38:28,000 --> 00:38:30,000 [বি Rob] এখানে ডান? 507 00:38:30,000 --> 00:38:32,000 পয়েন্টার পাটিগণিত. 508 00:38:32,000 --> 00:38:35,000 কিভাবে পয়েন্টার এরিথমেটিক কাজ চালু হয় 509 00:38:35,000 --> 00:38:40,000 এটি স্বয়ংক্রিয়ভাবে টাইপ যে আমরা মোকাবেলা করছি মাপ multiplies. 510 00:38:40,000 --> 00:38:46,000 ঠিক এখানে চান, নতুন + (আকার - মাথা) 511 00:38:46,000 --> 00:38:56,000 হয় নতুন [আকার - মাথা] যথাযথভাবে সমতুল্য 512 00:38:56,000 --> 00:39:00,000 যতক্ষণ না আমরা যে সঠিকভাবে কাজ করবে, 513 00:39:00,000 --> 00:39:04,000 থেকে যদি আমরা একটি int-এ অ্যারে সঙ্গে লেনদেন করছেন, তাহলে আমরা কি int-দ্বারা সূচী 514 00:39:04,000 --> 00:39:07,000 অথবা যদি 5 এর আকারের এবং আপনি 4th উপাদান চান, তাহলে আমরা মধ্যে সূচক 515 00:39:07,000 --> 00:39:10,000 int-এ অ্যারে [4]. 516 00:39:10,000 --> 00:39:14,000 আপনি-don't [4] int-র * মাপ. 517 00:39:14,000 --> 00:39:21,000 যে এটি স্বয়ংক্রিয়ভাবে হ্যান্ডলগুলি, এবং এই ক্ষেত্রে 518 00:39:21,000 --> 00:39:29,000 আক্ষরিক সমতুল্য হয়, তাই বন্ধনী শব্দবিন্যাস 519 00:39:29,000 --> 00:39:34,000 না করছি এই রূপান্তরিত হিসাবে আপনি শীঘ্রই হিসাবে কম্পাইল করা হয়. 520 00:39:34,000 --> 00:39:38,000 যে কোন কিছু যা আপনি যে সচেতন হওয়া প্রয়োজন 521 00:39:38,000 --> 00:39:42,000 যখন আপনি মাপ যোগ করা হয় - মাথা 522 00:39:42,000 --> 00:39:45,000 আপনি না হয় এক বাইট যোগ করা আবশ্যক. 523 00:39:45,000 --> 00:39:53,000 আপনি এক গৃহস্থালি * যোগ করছি, যা এক বাইট বা যাই হোক না কেন হতে পারে. 524 00:39:53,000 --> 00:39:56,000 >> অন্য প্রশ্ন? 525 00:39:56,000 --> 00:40:04,000 ঠিক আছে, যাও dequeue সহজ হবে. 526 00:40:04,000 --> 00:40:11,000 আমি প্রয়োগ একটি মিনিট দেব. 527 00:40:11,000 --> 00:40:18,000 ওহ, এবং আমি অনুমান এই একই অবস্থা যেখানে 528 00:40:18,000 --> 00:40:21,000 what সারিবদ্ধ ক্ষেত্রে, যদি আমরা নাল enqueuing করছি, 529 00:40:21,000 --> 00:40:24,000 হয়তো আমরা একে হ্যান্ডেল করতে চান হয়তো, আমরা হইনি. 530 00:40:24,000 --> 00:40:27,000 আমরা আবার একই কাজ না হয়, এখানে হবে কিন্তু আমাদের স্ট্যাকের কেস হিসাবে একই. 531 00:40:27,000 --> 00:40:34,000 যদি আমরা নাল সারিবদ্ধ, আমরা উপেক্ষা করতে পারেন. 532 00:40:34,000 --> 00:40:40,000 কেউ কিছু কোড আমি থামা করতে পারেন? 533 00:40:40,000 --> 00:40:45,000 [ছাত্র] আমি dequeue আছে. 534 00:40:45,000 --> 00:40:56,000 সংস্করণ 2 হল-okay. 535 00:40:56,000 --> 00:40:59,000 আপনি ব্যাখ্যা করতে চান? 536 00:40:59,000 --> 00:41:01,000 [ছাত্র] প্রথম, নিশ্চিত কিউ 'র মধ্যে কিছু আছে 537 00:41:01,000 --> 00:41:07,000 এবং যে মাপ 1 দ্বারা হবে না. 538 00:41:07,000 --> 00:41:11,000 আপনাকে যা করতে হবে, এবং তারপর আপনি মাথা প্রত্যাবর্তন 539 00:41:11,000 --> 00:41:13,000 এবং তারপর 1 আপ মাথা সরানো. 540 00:41:13,000 --> 00:41:19,000 Okay, তাই কোণার ক্ষেত্রে আমরা বিবেচনা আছে আছে. হাঁ. 541 00:41:19,000 --> 00:41:24,000 [ছাত্র] যদি আপনার মাথা শেষ উপাদান থাকে, 542 00:41:24,000 --> 00:41:26,000 তারপর আপনার অ্যারের বাইরে মাথা নির্দেশ দিতে চান না. 543 00:41:26,000 --> 00:41:29,000 >> হ্যাঁ, তাই যত তাড়াতাড়ি মাথা আমাদের অ্যারের শেষ হিট, 544 00:41:29,000 --> 00:41:35,000 যখন আমরা dequeue, আমাদের মাথা 0 ফিরে modded করা উচিত. 545 00:41:35,000 --> 00:41:40,000 দুর্ভাগ্যবশত, আমরা এক ধাপ যে করতে পারবেন না. 546 00:41:40,000 --> 00:41:44,000 আমি উপায় আমি সম্ভবত ঠিক করতে চাই এটা অনুমান 547 00:41:44,000 --> 00:41:52,000 এই একটি গৃহস্থালি * হবে, আমরা কি ফিরে করছেন, 548 00:41:52,000 --> 00:41:55,000 যাই হোক না কেন আপনার পরিবর্তনশীল নামের হতে চায়. 549 00:41:55,000 --> 00:42:02,000 তারপর আমরা আমাদের ক্ষমতা দ্বারা মাথা Mod চান 550 00:42:02,000 --> 00:42:10,000 এবং তারপর পচান ফিরে আসুন. 551 00:42:10,000 --> 00:42:14,000 মানুষ তার একটি এখানে তারা অনেক কাজ করতে পারে 552 00:42:14,000 --> 00:42:19,000 এই হল-you'll ক্ষেত্রে দেখতে মানুষ না যদি মাথা 553 00:42:19,000 --> 00:42:29,000 হয় ক্ষমতার তুলনায়, মাথা না - ক্ষমতা. 554 00:42:29,000 --> 00:42:36,000 এবং যে শুধু mod প্রায় এর কাজ করে যাচ্ছে. 555 00:42:36,000 --> 00:42:41,000 হেড mod = ক্ষমতা অনেক ক্লিনার 556 00:42:41,000 --> 00:42:51,000 এর চেয়ে যদি ক্ষমতা মাথা তুলনায় মাথা বেশী কাছাকাছি একটি মোড়ানো - ক্ষমতা. 557 00:42:51,000 --> 00:42:56,000 >> প্রশ্ন? 558 00:42:56,000 --> 00:43:02,000 ঠিক আছে, শেষ জিনিস আমরা বাকি আছে আমাদের সংযুক্ত তালিকা. 559 00:43:02,000 --> 00:43:07,000 আপনি লিঙ্ক তালিকা আচরণ কিছু যদি আপনি কি ব্যবহার করা হতে পারে 560 00:43:07,000 --> 00:43:11,000 আপনার হ্যাশ টেবিল তালিকাটি লিঙ্ক, যদি আপনি একটি হ্যাশ টেবিল না. 561 00:43:11,000 --> 00:43:15,000 আমি দৃঢ়ভাবে একটি হ্যাশ টেবিল করছেন সুপারিশ. 562 00:43:15,000 --> 00:43:17,000 আপনার কাছে ইতিমধ্যেই একটি trie হতে হয়, 563 00:43:17,000 --> 00:43:23,000 কিন্তু চেষ্টা আছে আরো কঠিন. 564 00:43:23,000 --> 00:43:27,000 তত্ত্ব, তারা asymptotically করছি ভালো. 565 00:43:27,000 --> 00:43:30,000 তবে বড় বোর্ড তাকান, 566 00:43:30,000 --> 00:43:35,000 এবং ভাল করার চেষ্টা করে না, এবং তারা আরো মেমরি নিতে হয়. 567 00:43:35,000 --> 00:43:43,000 সবকিছু সম্পর্কে চেষ্টা করে শেষ পর্যন্ত কাজের জন্য আরো খারাপ হচ্ছে. 568 00:43:43,000 --> 00:43:49,000 এটা কি সবসময় ডেভিড Malan এর সমাধান 569 00:43:49,000 --> 00:43:56,000 তিনি সবসময় তার trie সমাধান পোস্ট, এবং এর যেখানে বর্তমানে তিনি দেখুন. 570 00:43:56,000 --> 00:44:00,000 What অধীন ছিল সে, ডেভিড জে? 571 00:44:00,000 --> 00:44:06,000 সে # 18, যাতে ভয়ঙ্কর খারাপ না, 572 00:44:06,000 --> 00:44:09,000 এবং যে শ্রেষ্ঠ একজন হতে যাচ্ছে চেষ্টা আপনি মনে করতে পারেন 573 00:44:09,000 --> 00:44:17,000 শ্রেষ্ঠ বা এক একটি trie এর চেষ্টা. 574 00:44:17,000 --> 00:44:23,000 এটা এমনকি তার আসল সমাধান না? 575 00:44:23,000 --> 00:44:29,000 আমি মনে trie সমাধান উপস্থিত RAM-র ব্যবহার সংক্রান্ত তথ্য এই সীমার মধ্যে আরো হতে থাকে. 576 00:44:29,000 --> 00:44:33,000 >> খুব উপরে নিচে যান, উপস্থিত RAM-র ব্যবহার এবং একক সংখ্যায় হয়. 577 00:44:33,000 --> 00:44:36,000 নিচ দিকে নিচে যান, এবং তারপর আপনি শুরু এইজন্য চেষ্টা 578 00:44:36,000 --> 00:44:41,000 যেখানে আপনি একেবারে বৃহদায়তন উপস্থিত RAM-র ব্যবহার পেতে, 579 00:44:41,000 --> 00:44:45,000 এবং চেষ্টা আছে আরো কঠিন. 580 00:44:45,000 --> 00:44:53,000 . সম্পূর্ণভাবে মূল্য এটি কিন্তু একটি শিক্ষাগত অভিজ্ঞতা যদি কেউ কি নেই 581 00:44:53,000 --> 00:44:56,000 শেষ জিনিষ আমাদের যুক্ত তালিকা, 582 00:44:56,000 --> 00:45:04,000 এবং এই তিনটি বিষয়, stacks, queues, এবং সংযুক্ত তালিকা, 583 00:45:04,000 --> 00:45:09,000 ভবিষ্যতে কোনো জিনিস আপনি কি কখনও কম্পিউটার বিজ্ঞান 584 00:45:09,000 --> 00:45:12,000 আপনি এই জিনিষ সঙ্গে ঘনিষ্ঠতা আছে অনুমান করা হবে. 585 00:45:12,000 --> 00:45:19,000 তারা ঠিক তাই সবকিছু যাও মৌলিক. 586 00:45:19,000 --> 00:45:25,000 >> তালিকা লিঙ্ক, এবং এখানে আমরা এককভাবে লিঙ্ক তালিকায় আমাদের বাস্তবায়ন হতে যাচ্ছে আছে না. 587 00:45:25,000 --> 00:45:34,000 What একেলা জন্য মানে লিঙ্ক দোকর লিঙ্ক হিসাবে বিরোধিতা? হ্যাঁ. 588 00:45:34,000 --> 00:45:37,000 [ছাত্র] এটা কেবল পরের পয়েন্টার বরং পয়েন্টার পয়েন্ট, 589 00:45:37,000 --> 00:45:39,000 মত এটি এবং এটি পরে এক গেলা. 590 00:45:39,000 --> 00:45:44,000 হ্যাঁ, তাই এ ছবি বিন্যাস কি, আমি ঠিক কি করব? 591 00:45:44,000 --> 00:45:48,000 আমি দুটি জিনিস আছে. আমি ছবি এবং ছবি আছে. 592 00:45:48,000 --> 00:45:51,000 ইন ছবি বিন্যাস, আমাদের একেলা লিঙ্ক তালিকা, 593 00:45:51,000 --> 00:45:57,000 অবশ্যম্ভাবী, আমরা আমাদের তালিকা মাথার পয়েন্টার কিছু আছে, 594 00:45:57,000 --> 00:46:02,000 আমাদের মধ্যে তালিকা এবং তারপর, আমরা শুধু পয়েন্টার আছে, 595 00:46:02,000 --> 00:46:05,000 এবং হয়ত এই পয়েন্ট নাল না. 596 00:46:05,000 --> 00:46:08,000 এটি আপনার একটি একেলা লিঙ্ক তালিকা আদর্শ অঙ্কন করা যাচ্ছে না. 597 00:46:08,000 --> 00:46:14,000 একটি দোকর লিঙ্ক তালিকা, ফিরিয়া আপনি যেতে পারেন. 598 00:46:14,000 --> 00:46:19,000 যদি আমি আপনার তালিকার যে কোনো নোডের দিতে, তাহলে অগত্যা পেতে পারেন 599 00:46:19,000 --> 00:46:23,000 অন্য কোনো নোডের তালিকায় যদি এটি একটি দোকর লিঙ্ক তালিকা. 600 00:46:23,000 --> 00:46:27,000 কিন্তু যদি আমি পেতে তালিকা নোডের মধ্যে তৃতীয় এবং আপনি এটি একটি একেলা লিঙ্ক তালিকা, 601 00:46:27,000 --> 00:46:30,000 কোন উপায় নাই আপনি কি কখনও করছি প্রথম এবং দ্বিতীয় নোড পেতে যাচ্ছে. 602 00:46:30,000 --> 00:46:34,000 এবং বেনিফিট এবং detriments, এবং এক সুস্পষ্ট এক আছে 603 00:46:34,000 --> 00:46:42,000 হয় আপনি আরো মাপ অবধি সময় ব্যয় হওয়া, এবং আপনি যেখানে এখন এইসব জিনিসের প্রতি নির্দেশ করা হয় ট্র্যাক রাখা আছে. 604 00:46:42,000 --> 00:46:49,000 কিন্তু আমরা কেবল সম্পর্কে একেলা লিঙ্ক যত্নশীল. 605 00:46:49,000 --> 00:46:53,000 >> কয়েকটি জিনিস আমরা প্রয়োগ আছে চালু করছি. 606 00:46:53,000 --> 00:47:00,000 তোমার typedef struct নোড, int আমি: struct নোড * পরবর্তী; নোড. 607 00:47:00,000 --> 00:47:09,000 যে typedef আপনার মন মধ্যে করা উচিত পুড়িয়ে ফেলা হয়েছিল. 608 00:47:09,000 --> 00:47:14,000 ক্যুইজ 1 একটি লিঙ্ক তালিকা নোডের একটি typedef দিতে হবে, 609 00:47:14,000 --> 00:47:18,000 এবং আপনি অবিলম্বে যে ডাউন রচনা করতে সক্ষম হওয়া উচিত 610 00:47:18,000 --> 00:47:22,000 এমনকি ছাড়া এটা সম্পর্কে চিন্তা করল. 611 00:47:22,000 --> 00:47:27,000 আমি একটি দম্পতি অনুমান প্রশ্ন, কেন আমরা এখানে struct দরকার হবে? 612 00:47:27,000 --> 00:47:32,000 কেন আমরা নোড * বলতে পারেন না? 613 00:47:32,000 --> 00:47:35,000 [ছাত্র] [শ্রবণাতীত] 614 00:47:35,000 --> 00:47:38,000 হাঁ. 615 00:47:38,000 --> 00:47:44,000 শুধু যে একটা জিনিষ হিসাবে একটি নোড সংজ্ঞায়িত 616 00:47:44,000 --> 00:47:47,000 হয় typedef নিজেই. 617 00:47:47,000 --> 00:47:55,000 কিন্তু এই বিন্দু থেকে, যখন আমরা এই struct নোড সংজ্ঞা দিয়ে থাকেন পার্সিং ধরনের, 618 00:47:55,000 --> 00:48:01,000 আমরা এখনো আমাদের typedef সমাপ্ত করেন নি, তাই থেকে typedef সমাপ্ত না করেনি, 619 00:48:01,000 --> 00:48:05,000 নোডের মধ্যে বিদ্যমান নেই. 620 00:48:05,000 --> 00:48:12,000 কিন্তু struct নোড আছে, এখানে এবং, এই নোডের 621 00:48:12,000 --> 00:48:14,000 এই এছাড়াও করা যেতে পারে অন্য কিছু বলা হয়. 622 00:48:14,000 --> 00:48:16,000 এই নামে অভিহিত করা হতে পারে. 623 00:48:16,000 --> 00:48:19,000 এটা বলা যুক্ত তালিকা নোডের করা হতে পারে. 624 00:48:19,000 --> 00:48:21,000 এটি যে কোনো নামে অভিহিত করা হতে পারে. 625 00:48:21,000 --> 00:48:26,000 কিন্তু এই struct নোড প্রয়োজন এই struct নোড হিসাবে একই জিনিস বলা হবে না. 626 00:48:26,000 --> 00:48:29,000 আপনি কি এটাকে এখানে উল্লেখ করা হয়েছে, 627 00:48:29,000 --> 00:48:32,000 এবং তাই যে প্রশ্নের উত্তর দ্বিতীয় বিন্দু 628 00:48:32,000 --> 00:48:37,000 যা কেন-বার যখন আপনি structs এবং structs এর typedefs দেখতে অনেক, 629 00:48:37,000 --> 00:48:42,000 আপনি বেনামী structs দেখতে যেখানে আপনি শুধু typedef struct দেখতে পাবেন পাবেন, 630 00:48:42,000 --> 00:48:47,000 struct, অভিধান, বা যাই হোক না কেন বাস্তবায়ন. 631 00:48:47,000 --> 00:48:51,000 >> কেন আমরা এখানে যাও নোড বলে প্রয়োজন? 632 00:48:51,000 --> 00:48:54,000 কেন এটি একটি বেনামী struct হতে পারে না? 633 00:48:54,000 --> 00:48:56,000 প্রায় একই উত্তর. 634 00:48:56,000 --> 00:48:58,000 [ছাত্র] আপনি এটা struct মধ্যে পড়ুন প্রয়োজন. 635 00:48:58,000 --> 00:49:04,000 Struct মধ্যে হাঁ,, আপনি নিজেই struct পড়ুন প্রয়োজন. 636 00:49:04,000 --> 00:49:10,000 আপনি যদি একটি নাম struct কি না, যদি এটি একটি বেনামী struct, তাহলে পড়ুন করতে পারবেন না. 637 00:49:10,000 --> 00:49:17,000 এবং শেষ কিন্তু-অন্তত এই সব করা উচিত কিছুটা না সহজবোধ্য, 638 00:49:17,000 --> 00:49:20,000 এবং তারা আপনাকে বুঝতে যদি আপনি এই লেখার নিচে সাহায্য করা উচিত 639 00:49:20,000 --> 00:49:24,000 আপনি যে কিছু ভুল করছেন যদি জিনিষ এই প্রকারের ইন্দ্রিয় করা হবে না. 640 00:49:24,000 --> 00:49:28,000 কিন্তু শেষ না অন্তত, কেন এই যাও struct নোড * করা আছে? 641 00:49:28,000 --> 00:49:34,000 কেন এটা করা যাবে না নোড struct পরের? 642 00:49:34,000 --> 00:49:37,000 [ছাত্র] পরের struct যাও পয়েন্টার. 643 00:49:37,000 --> 00:49:39,000 অবশ্যম্ভাবী যে আমরা কি চাই. 644 00:49:39,000 --> 00:49:42,000 কেন এটা হতে পারে না struct নোড পরের? 645 00:49:42,000 --> 00:49:50,000 কেন এটা struct নোড * পরবর্তী করা আছে? হাঁ. 646 00:49:50,000 --> 00:49:53,000 [ছাত্র] এটি একটি অসীম লুপ মত. 647 00:49:53,000 --> 00:49:55,000 হাঁ. 648 00:49:55,000 --> 00:49:57,000 [ছাত্র] সমস্ত একটা হবে. 649 00:49:57,000 --> 00:50:02,000 হাঁ, কিভাবে আমরা মাপ বা কিছু করতে হবে, ঠিক মনে করি. 650 00:50:02,000 --> 00:50:08,000 একটি struct আকার মূলত হল + বা - কিছু প্যাটার্ন বা এখানে আছে. 651 00:50:08,000 --> 00:50:15,000 এটি মূলত এর যাও struct অনেক কিছু মাপ যোগফল হতে যাচ্ছে. 652 00:50:15,000 --> 00:50:18,000 কিছু পরিবর্তন ছাড়া এখানে ডান,, মাপ সহজ করা হচ্ছে. 653 00:50:18,000 --> 00:50:24,000 Struct নোডের মধ্যে ফাইলের আকার যাও তোমার পরের + আকার মাপ হতে হবে. 654 00:50:24,000 --> 00:50:27,000 তোমার আকার যাও 4 হবে. পরের ফাইলের আকার 4 হবে. 655 00:50:27,000 --> 00:50:30,000 Struct নোডের মধ্যে ফাইলের আকার যাও 8 হবে. 656 00:50:30,000 --> 00:50:34,000 * আমরা যদি না থেকে থাকে sizeof, চিন্তা, 657 00:50:34,000 --> 00:50:37,000 তারপর sizeof (ঝ) 4 হবে. 658 00:50:37,000 --> 00:50:43,000 Struct নোডের মধ্যে ফাইলের আকার পরের যাও তোমার মাপ হতে struct নোড পরবর্তী + আকার যাচ্ছে 659 00:50:43,000 --> 00:50:46,000 তোমার struct নোড পরবর্তী + আকার + আকার. 660 00:50:46,000 --> 00:50:55,000 এটি একটি নোড সীমাহীন recursion হবে. 661 00:50:55,000 --> 00:51:00,000 এটি কেন হয় কিভাবে এই জিনিষ আছে. 662 00:51:00,000 --> 00:51:03,000 >> আবার স্পষ্টভাবে, যে মুখস্থ করা, 663 00:51:03,000 --> 00:51:06,000 বা অন্তত যথেষ্ট এটা বুঝি যে আপনি করতে পারবেন 664 00:51:06,000 --> 00:51:12,000 এটা কি হওয়া উচিত মাধ্যমে কারণে. 665 00:51:12,000 --> 00:51:14,000 জিনিষ আমরা প্রয়োগ করতে চান চলুন. 666 00:51:14,000 --> 00:51:18,000 যদি দৈর্ঘ্যের তালিকা- 667 00:51:18,000 --> 00:51:21,000 আপনি এবং একটি কাছাকাছি রাখতে পারে ঠকাই 668 00:51:21,000 --> 00:51:24,000 বিশ্বব্যাপী দ্বারা বা কিছু, কিন্তু আমরা কি সেটা যাচ্ছেন না. 669 00:51:24,000 --> 00:51:28,000 আমরা তালিকার দ্বারা গণনা চলুন. 670 00:51:28,000 --> 00:51:34,000 আমরা উপস্থিত আছে, যাতে মূলত একটি অনুসন্ধান করার মত, 671 00:51:34,000 --> 00:51:41,000 তাই আমরা একটি পূর্ণসংখ্যার থেকে যদি এই পূর্ণসংখ্যা লিঙ্ক তালিকায় দেখুন লিঙ্ক তালিকা আছে. 672 00:51:41,000 --> 00:51:44,000 শুরুতে যোগ তালিকা প্রারম্ভে সন্নিবেশ যাচ্ছে. 673 00:51:44,000 --> 00:51:46,000 পরিশেষে শেষে সন্নিবেশ যাচ্ছে. 674 00:51:46,000 --> 00:51:53,000 Insert_sorted তালিকায় স্থান অনুসারে সাজানো মধ্যে সন্নিবেশ যাচ্ছে. 675 00:51:53,000 --> 00:52:01,000 এর Insert_sorted ধরনের অনুমান করে যে আপনার ব্যবহার করা বা শুরুতে যোগ কখনও খারাপ উপায়ে লিখবেন. 676 00:52:01,000 --> 00:52:09,000 >> Insert_sorted যখন আপনি insert_sorted-রূপায়ণকারী করছি 677 00:52:09,000 --> 00:52:13,000 এর যাক বলতে আমরা আমাদের লিঙ্ক তালিকা আছে. 678 00:52:13,000 --> 00:52:18,000 এটা কি এটি বর্তমানে, ভালো 2, 4, 5 দেখায়. 679 00:52:18,000 --> 00:52:24,000 আমি 3, সন্নিবেশ তাই যতদিন ইতিমধ্যে তালিকা অনুসারে সাজানো হয় নিজেই করতে চান, 680 00:52:24,000 --> 00:52:27,000 এটা যাও যেখানে 3 জন্যে খুঁজে সহজ. 681 00:52:27,000 --> 00:52:29,000 আমি 2 আরম্ভ হয়. 682 00:52:29,000 --> 00:52:32,000 ঠিক আছে, 3 2 হয় তার চেয়ে অনেক বেশী, তাই আমি যাব রাখতে চান. 683 00:52:32,000 --> 00:52:35,000 ওহ, 4 অত্যন্ত বড়, তাই আমি জানি 2 3 এবং 4 এর মধ্যে যেতে হবে, 684 00:52:35,000 --> 00:52:39,000 এবং আমি পয়েন্টার এবং যে সব উপাদান ঠিক করা আছে. 685 00:52:39,000 --> 00:52:43,000 কিন্তু আমরা যদি insert_sorted ব্যবহার কঠোরভাবে না করে থাকেন, 686 00:52:43,000 --> 00:52:50,000 যাক এর চান সেটা আমি 6 পূর্বে লিখুন, 687 00:52:50,000 --> 00:52:55,000 তারপর আমার এই তালিকায় সংযুক্ত হতে হয়. 688 00:52:55,000 --> 00:53:01,000 এটা এখন কোন মানে তোলে, তাই insert_sorted জন্য, শুধুমাত্র আপনি অনুমান করতে পারেন 689 00:53:01,000 --> 00:53:04,000 যে তালিকা, সাজানো যদিও অপারেশন বিদ্যমান হয় 690 00:53:04,000 --> 00:53:09,000 তা না অনুসারে বাছাই করা, কারণ যে এটি করতে পারেন. 691 00:53:09,000 --> 00:53:20,000 একটি সহায়ক সন্নিবেশ-তাই যারা প্রধান বিষয় আপনাকে প্রয়োগ আছে চলুন খুঁজুন. 692 00:53:20,000 --> 00:53:24,000 >> এখন জন্য, একটি মিনিট দৈর্ঘ্যের না নিতে এবং রয়েছে, 693 00:53:24,000 --> 00:53:30,000 এবং যারা অপেক্ষাকৃত দ্রুত করা উচিত. 694 00:53:41,000 --> 00:53:48,000 বন্ধের সময় কাছাকাছি, যাতে কারও দ্বারা জন্য কিছু আছে বা রয়েছে? 695 00:53:48,000 --> 00:53:50,000 তারা প্রায় অভিন্ন হতে যাচ্ছেন. 696 00:53:50,000 --> 00:53:57,000 [ছাত্র] দৈর্ঘ্য. 697 00:53:57,000 --> 00:54:01,000 এর চলুন দেখা যাক পুনর্বিবেচনা,. 698 00:54:01,000 --> 00:54:04,000 ঠিক আছে. 699 00:54:12,000 --> 00:54:15,000 আপনি ব্যাখ্যা করতে চান? 700 00:54:15,000 --> 00:54:21,000 [ছাত্র] আমি একটি পয়েন্টার নোড নির্মাণ এবং প্রথম, যা আমাদের বিশ্বব্যাপী পরিবর্তনশীল এটি আরম্ভ করা, 701 00:54:21,000 --> 00:54:27,000 এবং তারপরে আমি যদি এটা নাল তাই আমি এবং পেতে কোনো দোষ না seg 0 যদি যে কেস ফিরে দেখুন. 702 00:54:27,000 --> 00:54:34,000 অন্যথা, আমি মাধ্যমে লুপ, মধ্যে পূর্ণসংখ্যা সম্পর্কে অবগত থাকার 703 00:54:34,000 --> 00:54:38,000 কতবার আমি তালিকার পরবর্তী উপাদান ব্যবহার করেছি 704 00:54:38,000 --> 00:54:43,000 এবং একই মুনাফা কার্যপ্রণালীতে যে প্রকৃত উপাদান অ্যাক্সেস, 705 00:54:43,000 --> 00:54:47,000 এবং তারপর আমি একটানা চেক যদি নাল দেখতে করা, 706 00:54:47,000 --> 00:54:56,000 এবং যদি এটা নাল, তারপর aborts এবং মাত্র উপাদান আমি ব্যবহার করেছি নম্বর ফেরৎ. 707 00:54:56,000 --> 00:55:01,000 >> [বি Rob] কেউ কি কিছু কোনো মন্তব্য আছে? 708 00:55:01,000 --> 00:55:06,000 এই দেখায় সূক্ষ্ম শুদ্ধি জ্ঞানময়. 709 00:55:06,000 --> 00:55:10,000 [ছাত্র] আমি আপনাকে নোড == নাল প্রয়োজন মনে করি না. 710 00:55:10,000 --> 00:55:13,000 হ্যাঁ, তাই যদি নোড == নাল রিটার্ন 0. 711 00:55:13,000 --> 00:55:18,000 কিন্তু যদি পরে নোড == নাল এই-উহু, একটি শুদ্ধি সমস্যা আছে. 712 00:55:18,000 --> 00:55:23,000 এটা ঠিক আপনি আমি ফিরে করছেন, কিন্তু এটি সঠিক সুযোগ এখন না. 713 00:55:23,000 --> 00:55:30,000 আপনি শুধুমাত্র int তোমার প্রয়োজন, তাই আমি = 0. 714 00:55:30,000 --> 00:55:34,000 কিন্তু যদি নোড হল নাল তারপর, আমি এখনও 0 হতে যাচ্ছে, 715 00:55:34,000 --> 00:55:39,000 এবং আমরা 0 ফিরে যাচ্ছেন, তাই এই ক্ষেত্রে অভিন্ন. 716 00:55:39,000 --> 00:55:48,000 আরেকটি সাধারণ জিনিস যাও ঘোষণা রাখা হয় 717 00:55:48,000 --> 00:55:51,000 এর জন্য লুপ এর নোডের ভিতর. 718 00:55:51,000 --> 00:55:54,000 আপনি বলতে-উহু পারে, কোন. 719 00:55:54,000 --> 00:55:56,000 চলুন এটি এই হিসাবে রাখা. 720 00:55:56,000 --> 00:55:59,000 আমি সম্ভবত করা int i = 0 এখানে হবে, 721 00:55:59,000 --> 00:56:05,000 তারপর নোড * নোড = এখানে প্রথম. 722 00:56:05,000 --> 00:56:11,000 এবং সম্ভবত এই ভাবে-পেয়ে এখন এই পরিত্রাণ. 723 00:56:11,000 --> 00:56:14,000 এটা সম্ভবত আমি কিভাবে এটি করা হবে. 724 00:56:14,000 --> 00:56:21,000 আপনি কি এটা ভালো এছাড়াও-খুঁজছেন পারে. 725 00:56:21,000 --> 00:56:25,000 এই লুপ গঠন জন্য এখানে ডান 726 00:56:25,000 --> 00:56:30,000 প্রায় হিসাবে আপনার জন্য int i = 0 হিসাবে প্রাকৃতিক হওয়া উচিত 727 00:56:30,000 --> 00:56:33,000 হল অ্যারের দৈর্গের তোমার +. 728 00:56:33,000 --> 00:56:38,000 যদি যে কিভাবে আপনি একটি অ্যারের উপর বারবার, এই ভাবে আপনি একটি লিঙ্ক তালিকা উপর বারবার. 729 00:56:38,000 --> 00:56:45,000 >> এই কিছু সময়ে দ্বিতীয় প্রকৃতি হওয়া উচিত. 730 00:56:45,000 --> 00:56:50,000 মন যে, এই প্রায় একই জিনিস হবে. 731 00:56:50,000 --> 00:56:57,000 আপনি একটি তালিকা সংযুক্ত করতে চান পুনরুক্তি উপর চলুন. 732 00:56:57,000 --> 00:57:02,000 যদি নোড-আমি কোন ধারণা কি মূল্য বলা হয় আছে. 733 00:57:02,000 --> 00:57:04,000 তোমার নোড. 734 00:57:04,000 --> 00:57:15,000 যদি যে নোড এ মান = আমি ফিরে সত্য, এবং যে এটি. 735 00:57:15,000 --> 00:57:18,000 উল্লেখ্য যে আমরা কখনও মিথ্যা প্রত্যাবর্তন 736 00:57:18,000 --> 00:57:23,000 যদি সমগ্র লিঙ্ক তালিকা উপর আমরা বারবার করা এবং সত্য না ফিরে, 737 00:57:23,000 --> 00:57:29,000 যাতে এর কি এই আছে. 738 00:57:29,000 --> 00:57:36,000 হিসাবে একটি সাইড নোট-আমরা হয়ত বা লিখবেন পূর্বে লিখুন পেতে হবে না. 739 00:57:36,000 --> 00:57:39,000 >> দ্রুত শেষ নোট. 740 00:57:39,000 --> 00:57:52,000 আপনি যদি স্ট্যাটিক কিওয়ার্ড দেখতে, তাই কিছু বলতে স্ট্যাটিক int-গণনা ঃ = 0, 741 00:57:52,000 --> 00:57:56,000 তারপর আমরা গণনা না +, আপনি এটি মূলত একটি বিশ্বব্যাপী পরিবর্তনশীল হিসাবে মনে করতে পারেন, 742 00:57:56,000 --> 00:58:00,000 যদিও আমি এই বলেন কিভাবে আমরা দ্বারা বাস্তবায়ন করতে যাচ্ছেন না. 743 00:58:00,000 --> 00:58:06,000 আমি এই করছি এখানে করছেন, এবং তারপর + গণনা. 744 00:58:06,000 --> 00:58:11,000 কোন ভাবেই আমরা আমাদের যুক্ত তালিকা আমরা আমাদের গণনা করা হয় বৃদ্ধিশীল একটি নোডের মধ্যে লিখতে পারেন. 745 00:58:11,000 --> 00:58:15,000 এই বিন্দু কি স্ট্যাটিক কিওয়ার্ড মানে. 746 00:58:15,000 --> 00:58:20,000 যদি আমি int-গণনা ঃ = 0 ছিল যে একটি নিয়মিত পুরানো বিশ্বব্যাপী পরিবর্তনশীল হবে. 747 00:58:20,000 --> 00:58:25,000 কি স্ট্যাটিক int-গণনা ঃ মানে হল যে এই একটি ফাইল জন্য বিশ্বব্যাপী পরিবর্তনশীল. 748 00:58:25,000 --> 00:58:28,000 এটা অন্য কোনো ফাইল জন্য অসম্ভব, 749 00:58:28,000 --> 00:58:34,000 pset 5 মনে চাই, যদি আপনি শুরু করেছেন. 750 00:58:34,000 --> 00:58:39,000 উভয় speller.c আছে, এবং আপনি dictionary.c আছে, 751 00:58:39,000 --> 00:58:42,000 এবং আপনি যদি শুধুমাত্র একটি জিনিস বিশ্বব্যাপী, ডিক্লেয়ার speller.c তারপর কিছু 752 00:58:42,000 --> 00:58:45,000 dictionary.c এবং তদ্বিপরীত মধ্যে ব্যবহার করা যাবে. 753 00:58:45,000 --> 00:58:48,000 গ্লোবাল ভেরিয়েবল কোনো. গ দ্বারা ব্যবহারযোগ্য ফাইল, 754 00:58:48,000 --> 00:58:54,000 কিন্তু স্ট্যাটিক ভেরিয়েবেলগুলো মধ্যে ফাইল নিজেই থেকে শুধু, 755 00:58:54,000 --> 00:59:01,000 যাতে ভিতর থেকেই বানান পরীক্ষক ভিতরে বা dictionary.c মধ্যে, 756 00:59:01,000 --> 00:59:06,000 এই ভাবে আমি আমার অ্যারের জন্য আমার মাপ পরিবর্তনশীল ডিক্লেয়ার করে ধরনের 757 00:59:06,000 --> 00:59:10,000 অভিধান বা শব্দের আমার নম্বর মাপ. 758 00:59:10,000 --> 00:59:15,000 যেহেতু আমি একটি বিশ্বব্যাপী পরিবর্তনশীল যে কেউ করেনি ডিক্লেয়ার অ্যাক্সেস করতে না চান, 759 00:59:15,000 --> 00:59:18,000 আমি এটা সম্পর্কে সত্যিই শুধুমাত্র আমার নিজের কাজের জন্য যত্ন. 760 00:59:18,000 --> 00:59:21,000 >> এই সম্পর্কে ভালো এছাড়াও পুরো নাম সংঘর্ষের উপাদান. 761 00:59:21,000 --> 00:59:27,000 যদি কিছু ফাইল অন্য একটি বিশ্বব্যাপী পরিবর্তনশীল নামক গণনা ব্যবহার করার চেষ্টা করে, বিপরীত দিকে খুব খুব, ভুল, 762 00:59:27,000 --> 00:59:33,000 তাই সুন্দরভাবে এই জিনিষ নিরাপদ রাখে, এবং শুধুমাত্র আপনি এটি ব্যবহার করতে পারেন, 763 00:59:33,000 --> 00:59:38,000 এবং কোন কেউ এবং, যদি কারোর একটি বিশ্বব্যাপী পরিবর্তনশীল নামক গণনা ঘোষণা করে, করতে পারেন 764 00:59:38,000 --> 00:59:43,000 তাহলে আপনার স্ট্যাটিক পরিবর্তনশীল নামক গণনা হস্তক্ষেপ করবে না. 765 00:59:43,000 --> 00:59:47,000 এটা কি স্ট্যাটিক হয়. এটি একটি ফাইল বিশ্বব্যাপী পরিবর্তনশীল. 766 00:59:47,000 --> 00:59:52,000 >> কিছু প্রশ্ন? 767 00:59:52,000 --> 00:59:59,000 সমস্ত সেট. Bye. 768 00:59:59,000 --> 01:00:03,000 [CS50.TV]