কম্পিউটার টিউটোরিয়াল

ডেটা স্ট্রাকচারে জেনারালাইজড লিস্ট


এই বিভাগে আমরা জেনারালাইজড লিস্ট সম্পর্কে আলোচনা করব। জেনারালাইজড লিস্টকে নিম্নরূপ সংজ্ঞায়িত করা যায়:

একটি জেনারালাইজড লিস্ট L হল n সংখ্যক উপাদানের একটি সসীম ক্রম (n ≥ 0)। প্রতিটি উপাদান ei হয় একটি অ্যাটম (একক উপাদান) অথবা অন্য একটি জেনারালাইজড লিস্ট। যেসব উপাদান ei অ্যাটম নয়, তারা L-এর সাব-লিস্ট হবে। ধরি L হল ((A, B, C), ((D, E), F), G)। এখানে L-র তিনটি উপাদান রয়েছে: সাব-লিস্ট (A, B, C), সাব-লিস্ট ((D, E), F), এবং অ্যাটম G। আবার সাব-লিস্ট ((D, E), F)-র দুটি উপাদান রয়েছে: একটি সাব-লিস্ট (D, E) এবং অ্যাটম F।

C++-এ আমরা জেনারালাইজড লিস্টের কাঠামো নিম্নরূপ সংজ্ঞায়িত করতে পারি:

class GeneralizedListNode {
  private:
    GeneralizedListNode *next;
    bool tag;
    union {
      char data;
      GeneralizedListNode *down;
    };
};

তবে যদি tag সত্য (true) হয়, তবে নোড দ্বারা প্রতিনিধিত্ব করা উপাদানটি একটি সাব-লিস্ট। down পয়েন্টার সাব-লিস্টের প্রথম নোডকে নির্দেশ করে। যদি tag মিথ্যা (false) হয়, তবে উপাদানটি একটি অ্যাটম। next পয়েন্টার লিস্টের পরবর্তী উপাদানকে নির্দেশ করে। লিস্টটি নিম্নরূপ দেখাবে:

ডেটা স্ট্রাকচারে জেনারালাইজড লিস্ট


  1. ডেটা স্ট্রাকচরে একক অ্যারেতে একাধিক লিস্ট

  2. হাফ-এজ ডেটা স্ট্রাকচার

  3. ডেটা স্ট্রাকচরে অ্যাডাপ্টিভ মার্জিং এবং সর্টিং

  4. ডেটা স্ট্রাকচারে অ্যাডজেসেন্সি লিস্ট