অ্যারে বনাম লিঙ্ক করা তালিকা
অ্যারেগুলি উপাদানগুলির সংগ্রহ সঞ্চয় করার জন্য সর্বাধিক ব্যবহৃত ডেটা কাঠামো। বেশিরভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজ সহজে অ্যারে ঘোষণা করতে এবং অ্যারেতে উপাদান অ্যাক্সেস করার পদ্ধতি প্রদান করে। লিংকড লিস্ট, আরো সুনির্দিষ্টভাবে একক-লিঙ্কড লিস্ট, এছাড়াও একটি ডাটা স্ট্রাকচার যা উপাদানের সংগ্রহ সঞ্চয় করতে ব্যবহার করা যেতে পারে। এটি নোডের একটি ক্রম নিয়ে গঠিত এবং প্রতিটি নোডের অনুক্রমের পরবর্তী নোডের একটি রেফারেন্স রয়েছে৷
চিত্র 1 এ দেখানো হয়েছে, কোডের একটি অংশ যা সাধারণত একটি অ্যারেতে মান ঘোষণা এবং বরাদ্দ করতে ব্যবহৃত হয়। চিত্র 2 মেমরিতে একটি অ্যারে দেখতে কেমন হবে তা দেখানো হয়েছে৷
উপরের কোডটি একটি অ্যারেকে সংজ্ঞায়িত করে যা 5 পূর্ণসংখ্যা সংরক্ষণ করতে পারে এবং সেগুলি 0 থেকে 4 সূচক ব্যবহার করে অ্যাক্সেস করা হয়। একটি অ্যারের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল যে পুরো অ্যারেটি মেমরির একক ব্লক হিসাবে বরাদ্দ করা হয় এবং প্রতিটি উপাদান তার নিজস্ব স্থান পায়। অ্যারের মধ্যে একবার একটি অ্যারে সংজ্ঞায়িত করা হলে, এর আকার স্থির করা হয়। সুতরাং আপনি যদি কম্পাইলের সময় অ্যারের আকার সম্পর্কে নিশ্চিত না হন তবে আপনাকে নিরাপদ দিকে থাকার জন্য যথেষ্ট বড় অ্যারে নির্ধারণ করতে হবে। কিন্তু, বেশিরভাগ সময়ই আমরা বরাদ্দের চেয়ে কম সংখ্যক উপাদান ব্যবহার করতে যাচ্ছি। তাই একটি উল্লেখযোগ্য পরিমাণ মেমরি আসলে নষ্ট হয়. অন্যদিকে যদি "বড় যথেষ্ট অ্যারে" আসলে যথেষ্ট বড় না হয়, তাহলে প্রোগ্রামটি ক্র্যাশ হয়ে যাবে।
একটি লিঙ্কযুক্ত তালিকা তার উপাদানগুলির জন্য আলাদাভাবে মেমরির নিজস্ব ব্লকে মেমরি বরাদ্দ করে এবং এই উপাদানগুলিকে একটি শৃঙ্খলে লিঙ্ক হিসাবে সংযুক্ত করে সামগ্রিক কাঠামো পাওয়া যায়।একটি লিঙ্ক করা তালিকার প্রতিটি উপাদানের দুটি ক্ষেত্র রয়েছে যা চিত্র 3-এ দেখানো হয়েছে। ডেটা ক্ষেত্রটি প্রকৃত তথ্য সংরক্ষণ করে এবং পরবর্তী ক্ষেত্রটি চেইনের পরবর্তী উপাদানটির রেফারেন্স ধারণ করে। লিঙ্ক করা তালিকার প্রথম উপাদানটি লিঙ্ক করা তালিকার প্রধান হিসাবে সংরক্ষণ করা হয়।
ডেটা | পরের |
চিত্র 3: লিঙ্ক করা তালিকার উপাদান
চিত্র 4 তিনটি উপাদান সহ একটি লিঙ্কযুক্ত তালিকা চিত্রিত করে। প্রতিটি উপাদান তার ডেটা সঞ্চয় করে এবং শেষটি ছাড়া সমস্ত উপাদান পরবর্তী উপাদানের একটি রেফারেন্স সংরক্ষণ করে। শেষ উপাদানটি তার পরবর্তী ক্ষেত্রে একটি নাল মান ধারণ করে। তালিকার যেকোনো উপাদান মাথা থেকে শুরু করে এবং পরবর্তী পয়েন্টার অনুসরণ করে অ্যাক্সেস করা যেতে পারে যতক্ষণ না আপনি প্রয়োজনীয় উপাদানটি পূরণ করেন।
যদিও অ্যারে এবং লিঙ্কযুক্ত তালিকা এই অর্থে একই রকম যে উভয়ই উপাদান সংগ্রহের জন্য ব্যবহার করা হয়, তারা এর উপাদানগুলিতে মেমরি বরাদ্দ করার জন্য যে কৌশলগুলি ব্যবহার করে তার কারণে তারা পার্থক্য করে। অ্যারেগুলি একটি একক ব্লক হিসাবে এর সমস্ত উপাদানগুলিতে মেমরি বরাদ্দ করে এবং অ্যারের আকার রানটাইমে নির্ধারণ করতে হয়। এটি এমন পরিস্থিতিতে অ্যারেগুলিকে অকার্যকর করে তুলবে যেখানে আপনি কম্পাইলের সময় অ্যারের আকার জানেন না। যেহেতু একটি লিঙ্কযুক্ত তালিকা আলাদাভাবে তার উপাদানগুলিতে মেমরি বরাদ্দ করে, তাই এটি এমন পরিস্থিতিতে অনেক কার্যকর হবে যেখানে আপনি কম্পাইলের সময় তালিকার আকার জানেন না। একটি লিঙ্ক করা তালিকার উপাদানগুলিকে ঘোষণা করা এবং অ্যাক্সেস করা সরাসরি একটি অ্যারের সূচকগুলি ব্যবহার করে আপনি কীভাবে উপাদানগুলিকে সরাসরি অ্যাক্সেস করেন তার তুলনায় সরাসরি হবে না৷