情况如下:有很多很多记录,每一项的定义为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
   }
但是当记录数目很大时,每一条记录都要沿着父子链进行遍历,很多时间都耗费在这上面了。
所以想请教一个更加犀利的思虑、算法、策略,谢谢了
                               

解决方案 »

  1.   

    我试过建hash表 可是发现效果不太好,因为数据的冗余度并不大,而且还占用了不小的内存
      

  2.   

    B+Tree也存在一个递归问题的吧,我想找一个方法 尽可能从根本上解决这个问题,可是毕竟陷入了自己的思维中,所以想向各位大神求一些猥琐而犀利的策略
      

  3.   

    map<父记录号,map<子记录号,内容> >
    或者放到数据库里,用sql实现
      

  4.   

    数据库里用sql实现
    或者
    map<父项记录号, map<记录号, 关键词> >