有如下数据结构
struct _ObjInfo { //保存文件的信息或是函数的信息
CString Path;
UINT AllStep;
UINT RealStep;
UINT CommStep;
UINT CommPercent;
UINT BlanStep;
UINT ModCount;
};struct _CmpObjList {
UINT Type; CString Path;
CString Name;
struct _ObjInfo OldObj;
struct _ObjInfo NewObj;
UINT OldStep;
UINT AddStep;
UINT DelStep;
UINT MdfStep;
UINT ModStep;
struct _CmpObjList* NextObj;//兄弟接点
struct _CmpObjList* ChildObj;//孩子接点
struct _CmpObjList* ModuleObj;//函数信息
}
第二个结构体由一个链表穿了起来,其中链表里村的是完整的目录结构,目录下边有文件也可能有字目录,现在我能统计总的文件个数,但是我想给目录来个小计的时候老是出现问题,每次递归,前次内容就丢失,望各位高人给看看,给点指点,给个提示,谢谢~~~

解决方案 »

  1.   

    你只是统计目录下的内容,
    CString EnumDir(_CmpObjList *pObj, BOOL bFirst)//bFirst 用来标记是否统计兄弟
    {
       CString strAllName("");
       if (pObj->type == 1)//目录
    {   
         if (pObj->ChildObj)
         {
        strAllName += EnumDir(pObj->ChildObj, false);
    }
         if (pObj->NextObj && !bFirst)
            strAllName += EnumDir(pObj->ChildObj,false);
    }
    else
        return Name;
    }
      

  2.   

    刚才有个笔误
    if (pObj->NextObj && !bFirst)
            strAllName += EnumDir(pObj->NextObj,false);
      

  3.   

    遍历小记递归函数(当前的节点指针)
    {
         int 当前小记数 = 0;     if (当前的节点指针 == NULL)
              return 0;
         if (当前的节点指针表示的节点是文件)
              return 1;     while(当前的节点指针的节点的孩子节点没有遍历完毕)
         {
               当前小记数 = 当前小记数 + 
                            遍历小记递归函数(当前的节点指针->当前孩子节点);
               移向当前节点的下一个孩子节点;
          }      return 当前小记数;
    }说明:函数的返回值是小记数,本函数统计当前的节点指针所指节点为根节点的树中的文件数