• 大小: 7.2MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-13
  • 语言: 其他
  • 标签:

资源简介

华工数据结构课程设计源代码和可执行程序。

资源截图

代码片段和文件信息

#include“FamilyTree.h“   

const char *filedat=“D:\\FamilyTree.txt“;//家谱文件的默认存储路径,可根据需要修改

FamilyTree::FamilyTree()   
{   
    T=NULL;//开始为空家谱   
}   
   
FamilyTree::~FamilyTree()   
{   
    DeleteFamilyTree();//释放资源   
}   
   
void FamilyTree::NewFamilyTree()   
{   
    //建立一空家谱   
    DeleteFamilyTree();//删除原有家谱   
    T=NULL;   
}   
   
void FamilyTree::CreateFamilyTree()   
{   
    DeleteFamilyTree();
//删除原来家谱树结构   
    int n=0;
//初始化数组下标,用来看有几个数据   
    fstream f(filedatios::binary|ios::in);
//以二进制读方式打开   
    if(!f)   
    {   
        cerr<<“Failed to open!“< //不能打开,显示出错信息   
        return;   
    }
else
{
f.seekg(0ios::end);
//指针移到文件尾   
        long posEnd=f.tellg();
//记录文件尾位置   
        f.seekg(0ios::beg);
//指针移到文件头   
        person ParentT=new CSNode; 
        ParentT=NULL;
        person temp[max_char_num];
//定义读取数据的数组   
for(int i=0;i        temp[i]=new CSNode;
//初始化一个地址值,且不能为空否则出错   
        if( posEnd == f.tellg( ) )
{   
cout<<“This is an empty family tree!“< //文件头与文件尾相同,说明文件无数据,为空树
f.close();//关闭文件流
return;   
}
while( posEnd != f.tellg() )
//从头到尾读取二进制数据   
{   
f.read((char*)&(temp[n]->data)sizeof(Info));   
n++;
}
NewFamilyTree();   
         T=temp[0];T->firstchild=T->nextsibling=NULL;
 //将第一个赋给根结点
 for(int j=1;j  //其余继续用类似Add()函数来添加进树里   
 {
 FindName(TParentTtemp[j]->data.fathername);
 if(ParentT)
 {
 temp[j]->firstchild=temp[j]->nextsibling=NULL;
 temp[j]->parent=ParentT;
 if(ParentT->firstchild)   
                 {   
                       InsertSibling(ParentT->firstchildtemp[j]);   
                  }   
                 else
 ParentT->firstchild=temp[j]; 
 }
 }
cout<<“Successfully reading!“< }
    f.close();
//关闭文件流   
}
   
void DestroyNode(person &pnode)   
{   
    //删除一结点   
    if(pnode)   
    {   
        delete pnode;   
        pnode=NULL;   
    }   
}   
   
  
void FamilyTree::DeleteFamilyTree()   
{   
    //删除家谱,释放资源   
    PostOrderTraverse(TDestroyNode);   
}   
   
void FamilyTree::PostOrderTraverse(person &Tvoid (__cdecl *Visit)(person &T))   
{   
    //后序遍历二叉树,并执行visit函数   
    if(T)   
    {   
        PostOrderTraverse(T->firstchildVisit);   
        PostOrderTraverse(T->nextsiblingVisit);   
        (*Visit)(T);   
    }   
}   
   
void FamilyTree::PreOrderTraverse(fstream &fperson &T void (__cdecl *Visit)(fstream &fperson &T))   
{   
    //先序遍历二叉树,并执行visit函数   
    if(T)   
    {   
        (*Visit)(fT);   
        PreOrderTraverse(fT->firstchildVisit);   
        PreOrderTraverse(fT->nextsiblingVisit);   
    }   
}   
   
void SaveNode(fstream &f person &pnode)   
{   
    //以二进制形式保存一个结点的info信息   
    if(pnode)   
    {   
        f.write ( (char * )&pnode->data sizeof(Info) ) ;   
    }   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2138  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\cl.command.1.tlog

     文件      95124  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\CL.read.1.tlog

     文件       1438  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\CL.write.1.tlog

     文件     127488  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\FamilyTree.exe

     文件     943308  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\FamilyTree.ilk

     文件         59  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\FamilyTree.lastbuildstate

     文件       1450  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\FamilyTree.log

     文件     358737  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\FamilyTree.obj

     文件    1240064  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\FamilyTree.pdb

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link-cvtres.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link-cvtres.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link-rc.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link-rc.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.3740-cvtres.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.3740-cvtres.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.3740-rc.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.3740-rc.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.3740.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.3740.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.6512-cvtres.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.6512-cvtres.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.6512-rc.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.6512-rc.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.6512.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.6512.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.780-cvtres.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.780-cvtres.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.780-rc.read.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.780-rc.write.1.tlog

     文件          2  2015-03-01 12:08  华工数据结构课程设计\FamilyTree\Debug\link.780.read.1.tlog

............此处省略22个文件信息

评论

共有 条评论