এই বিভাগে আমরা জেনারালাইজড লিস্ট সম্পর্কে আলোচনা করব। জেনারালাইজড লিস্টকে নিম্নরূপ সংজ্ঞায়িত করা যায়:
একটি জেনারালাইজড লিস্ট 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 পয়েন্টার লিস্টের পরবর্তী উপাদানকে নির্দেশ করে। লিস্টটি নিম্নরূপ দেখাবে:
