ในส่วนนี้ เราจะเห็นรายการทั่วไป รายการทั่วไปสามารถกำหนดได้ดังนี้ -
รายการทั่วไป 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; }; };
ดังนั้นหากแท็กเป็นจริง องค์ประกอบที่แสดงโดยโหนดจะเป็นรายการย่อย ลงชี้ไปที่โหนดแรกในรายการย่อย หากแท็กเป็นเท็จ แสดงว่าองค์ประกอบนั้นเป็นอะตอม ตัวชี้ถัดไปจะชี้ไปที่องค์ประกอบถัดไปในรายการ รายชื่อก็จะประมาณนี้