一个链表(CPP)中的两个不同节点

时间:2017-12-11 18:58:45

标签: c++ linked-list

我有一个治疗父母班,两个孩子,内在治疗和外治疗。我需要创建一个包含两个子节点的链表。我不允许使用模板或内置列表。

我面临的问题是next ptr的类型,我找到的唯一解决方案是创建基节点父类型,并将两个子项放在其中,加上一个类型变量知道它是哪种节点。像这样:

enum node_type = {inner, outer};
struct treatment_node{

    Inner_Treatment t1;
    Outer_treatment t2;
    struct treatment_node *next;
    node_type treatment_type;

}

我根据治疗类型知道要访问哪个类。这会有用吗?

1 个答案:

答案 0 :(得分:1)

随着多态性的发展,您可以使用与问题中相同的措辞,但对“基础”一词使用不同的含义。因此,您可以创建一个base治疗类并从中继承您的内部和外部类:

class treatment_node {
    treatment_node *next;
public: 
    virtual std::string getTreatment()  = 0;
    ...
};

现在你的外在和内在:

class Outer_treatment : public treatment_node {
    ... members ...
public:
    std::string getTreatement() override {...}
};


};
class Inner_treatment : public treatment_node {
    ... members ...
public:
    std::string getTreatement() override {...}
};

现在您可以将两者放在treatement_nodes列表中。