情况如下:有很多很多记录,每一项的定义为struct RECORD
{
int nRecord; //记录号
int nParentRecord; //父项记录号
char* pKey; //关键词
};
我现在面临的问题是 根据记录号和父记录号,获取完整的关键词链。例如
RECORD r1 = {4, 3, "清水河校区"};
RECORD r2 = {3, 2, "成华区"};
RECORD r3 = {2, 1, "成都市"};构建4号记录项的结果就是 成都市成华区清水河校区我现在构建某号记录的做法是 std::string strAddress;
lable1:
获取当前项的关键词pKey
strAddress.insert(0, pKey);
根据当前项的nParentRecord找到父项
if(如果父项记录存在)
{
将父项设置为当前项
goto lable1
}
但是当记录数目很大时,每一条记录都要沿着父子链进行遍历,很多时间都耗费在这上面了。
所以想请教一个更加犀利的思虑、算法、策略,谢谢了
{
int nRecord; //记录号
int nParentRecord; //父项记录号
char* pKey; //关键词
};
我现在面临的问题是 根据记录号和父记录号,获取完整的关键词链。例如
RECORD r1 = {4, 3, "清水河校区"};
RECORD r2 = {3, 2, "成华区"};
RECORD r3 = {2, 1, "成都市"};构建4号记录项的结果就是 成都市成华区清水河校区我现在构建某号记录的做法是 std::string strAddress;
lable1:
获取当前项的关键词pKey
strAddress.insert(0, pKey);
根据当前项的nParentRecord找到父项
if(如果父项记录存在)
{
将父项设置为当前项
goto lable1
}
但是当记录数目很大时,每一条记录都要沿着父子链进行遍历,很多时间都耗费在这上面了。
所以想请教一个更加犀利的思虑、算法、策略,谢谢了
或者放到数据库里,用sql实现
或者
map<父项记录号, map<记录号, 关键词> >