简单的抽象数据类型链表

时间:2012-02-20 07:17:35

标签: c++ class generics data-structures linked-list

我的课程

class Product
{
...
};

class Perishable : public : Product
{
 public:
 int getday();

};

我想要同时包含易腐和产品对象的集合,并希望通过链表来实现。

通常对于链接列表,我们有类似

的内容
class linkedlist
{
           struct List
           {
             int item;
             ListNode* next; 
           }
          //.... all the functions
};

但我在这里有一个问题,因为我想要存储在item中的数据不是int而是Product或Perishable,我如何将它作为链表实现?

2 个答案:

答案 0 :(得分:1)

您可以将Product*作为项目存储在链接列表中。您应该将virtual方法添加到基类Product,这将在运行时调度到适当的方法,具体取决于此指针指向的实际对象类型。

答案 1 :(得分:1)

您需要模板。 C ++中的模板支持泛型编程。在您的类LinkedList之前声明模板后,您可以将T项替换为T项,其中T是占位符,并将替换适当的数据类型(自定义或原始),具体取决于您实例化对象的方式。