资源简介
华工数据结构课程设计源代码和可执行程序。
代码片段和文件信息
#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\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
文件 2 2015-03-01 12:08 华工数据结构课程设计\FamilyTree\Debug\li
............此处省略22个文件信息
- 上一篇:应用回归分析pdf
- 下一篇:Qt pdf poppler
评论
共有 条评论