আমি লক্ষ করেছি যে বেশিরভাগ কার্যকরী ভাষা তাদের একমাত্র যুক্ত লিঙ্ক তালিকা (একটি "কনস" তালিকা) তাদের সবচেয়ে মৌলিক তালিকার ধরণ হিসাবে নিয়োগ করে। উদাহরণগুলির মধ্যে রয়েছে কমন লিস্প, হাস্কেল এবং এফ #। এটি মূলধারার ভাষাগুলির থেকে পৃথক, যেখানে নেটিভ তালিকার প্রকারগুলি অ্যারে হয়।
তা কেন?
কমন লিস্পের জন্য (গতিবেগের সাথে টাইপ করা হচ্ছে) আমি ধারণা পেয়েছি যে তালগুলি, গাছ ইত্যাদির ঘাঁটি হওয়ার পক্ষেও যথেষ্ট সাধারণ ধারণা এটি খুব ছোট কারণ হতে পারে।
স্থিতিযুক্ত টাইপ করা ভাষার জন্য, যদিও আমি একটি ভাল যুক্তি খুঁজে পাই না, আমি এমনকি পাল্টা যুক্তিগুলিও খুঁজে পেতে পারি:
- কার্যকরী শৈলী অপরিবর্তনীয়তাকে উত্সাহ দেয়, তাই লিঙ্কযুক্ত তালিকার সন্নিবেশের স্বাচ্ছন্দতা কোনও সুবিধা কম,
- কার্যকরী শৈলী অপরিবর্তনীয়াকে উত্সাহ দেয়, তেমনি ডেটা ভাগ করে নেওয়া; একটি অ্যারে লিঙ্কযুক্ত তালিকার চেয়ে "আংশিক" ভাগ করা আরও সহজ,
- আপনি নিয়মিত অ্যারে তেমন প্যাটার্ন ম্যাচিংও করতে পারেন, এবং আরও ভাল (আপনি উদাহরণস্বরূপ ডান থেকে বামে সহজেই ভাঁজ করতে পারেন),
- এর উপরে আপনি নিখরচায় অ্যাক্সেস পান,
- এবং (একটি ব্যবহারিক সুবিধা) যদি ভাষাটি স্ট্যাটিকালি টাইপ করা থাকে তবে আপনি একটি নিয়মিত মেমরি লেআউট নিয়োগ করতে পারেন এবং ক্যাশে থেকে গতি বাড়িয়ে নিতে পারেন।
তাহলে লিঙ্কযুক্ত তালিকাগুলি কেন পছন্দ করবেন?
an array is easier to share "partially" than a linked list
আপনার অর্থ কী তা সম্পর্কে স্পষ্টতা দরকার। তাদের পুনরাবৃত্তিমূলক প্রকৃতির কারণে, আমি এটি বুঝতে পারছি বলে বিপরীতটি সত্য - আপনি কোনও নোড বরাবর পাশ করে আংশিকভাবে লিঙ্কযুক্ত তালিকাটি ভাগ করে নিতে পারেন, যখন একটি অ্যারে নতুন কপি তৈরি করতে সময় ব্যয় করতে পারে। অথবা ডেটা ভাগ করে নেওয়ার ক্ষেত্রে, দুটি লিঙ্কযুক্ত তালিকাগুলি একই প্রত্যয়কে নির্দেশ করতে পারে, যা অ্যারে দিয়ে কেবল প্লেইন সম্ভব নয়।