我有兴趣创建一个汽车注册计划:
菜单,供用户添加,删除,查找,编辑(更改汽车的特定细节)汽车并查看所有汽车。然后使用二叉搜索树将其存储在存储器中。所有汽车都要从内存写入csv文件。在加载系统时,它应该读回所有车辆
汽车有汽油和电动两种类型。 每辆车都有属性车ID,车主,品牌,型号,车牌 汽油车具有里程数,充值 电动汽车具有属性功率,英里class car
{
string id
string owner
string make
string model
string numberplate
virtual getkey()//gets key being searched etc.
readfile();
writefile();
};
class petrol : public car
{
string miles
string topup
};
class electric : public car
{
string power
string miles
};
data structure:
class node
{
car *ptr
node *left
node *right
};
class tree
{
///insert delete etc.
};
这是一个实用的类设计,可能需要包含哪些功能?
答案 0 :(得分:0)
初始BST和链接列表实现的问题是它们要么强制您使用特定数据类型,要么继承该数据类型(例如您的数据类型)。如果我想要一个BST水果,我不能使用你的树,因为你的树是专门用于汽车。
我建议使用抽象节点类并从节点类派生数据类:
struct Node
{
boost::shared_ptr<Node> left;
boost::shared_ptr<Node> right;
// Interface functions for descendants
virtual bool is_less_than(boost::shared_ptr<Node> other_node) const = 0;
virtual bool is_equal_to(boost::shared_ptr<Node> other_node) const = 0;
};
我仍然认为最好的设计是使用模板:
template <class User_Data_Type>
class Node
{
public:
boost::shared_ptr<Node> left;
boost::shared_ptr<Node> right;
User_Data_Type m_data;
};