数据结构家谱图代码.docx

上传人:b****6 文档编号:2807465 上传时间:2022-11-15 格式:DOCX 页数:29 大小:21.60KB
下载 相关 举报
数据结构家谱图代码.docx_第1页
第1页 / 共29页
数据结构家谱图代码.docx_第2页
第2页 / 共29页
数据结构家谱图代码.docx_第3页
第3页 / 共29页
数据结构家谱图代码.docx_第4页
第4页 / 共29页
数据结构家谱图代码.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数据结构家谱图代码.docx

《数据结构家谱图代码.docx》由会员分享,可在线阅读,更多相关《数据结构家谱图代码.docx(29页珍藏版)》请在冰豆网上搜索。

数据结构家谱图代码.docx

数据结构家谱图代码

//main.cpp

#include

#include

#include

#include

#include

#include"Head.h"

voidmain()

{

HANDLEconsolehwnd;//字体颜色的改变

consolehwnd=GetStdHandle(STD_OUTPUT_HANDLE);//字体颜色的改变

intchose,i;

BinTreeT;

T=NULL;

while

(1)

{

SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY+FOREGROUND_RED);//字体颜色的改变

printf("***************家谱信息功能表*************\n");

SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY+FOREGROUND_BLUE|FOREGROUND_GREEN);

printf("1:

新建一个根节点\n");

printf("2:

以添加成员节点构造家谱图\n");

printf("3:

家谱树的层次显示\n");

printf("4家谱树保存到文件!

\n");

printf("5:

家谱树读入文件!

\n");

printf(":

家谱信息的删除\n");

printf("6:

结束程序\n");

SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY+FOREGROUND_RED);//字体颜色的改变

printf("************按以上功能表进行操作*************\n");

SetConsoleTextAttribute(consolehwnd,FOREGROUND_INTENSITY+FOREGROUND_BLUE+FOREGROUND_GREEN+FOREGROUND_RED);

for(i=1;i<=100;)

{

printf("请输入你在功能表上的选项:

");

scanf("%d",&chose);

if(1<=chose<=11)

break;

else

printf("你输入的选项不正确,请重新输入!

\n");

}

switch(chose)

{

case1:

system("cls");//在控制台程序使用清屏函数

InPut(T);//录入个人信息

printf("按任意键返回");//等待程序

system("pause");

system("cls");

break;

case2:

system("cls");

Addchild(T);//比较兄弟岁数后再添加

system("pause");

system("cls");

break;

case3:

system("cls");

LevelOutput(T);

system("pause");

system("cls");

break;

case4:

system("cls");

KCreatTree(T);//将家谱信息保存到文件中

system("pause");

system("cls");

break;

case5:

system("cls");

LCreateTree(T);//从文件中读出家谱成员的信息

system("pause");

system("cls");

break;

case6:

system("cls");

exit(0);

system("pause");

system("cls");

break;

default:

fflush(stdin);

printf("你输入的选项不正确!

\n");

printf("请从新输入菜单的选项!

\n");

system("pause");

system("cls");

}

}

}

 

//Head.h

 

#include

#include

#include

#include

#include

#defineQUEUESIZE100

typedefstructData//出生日期结构体

{

intday;

intmonth;

intyear;

}dataly;

typedefstructBiTNode//个人资料信息

{

charlive[15];//建在(T表示活着,F表示过世)

charname[20];//姓名

charsex[15];//性别

charmarriage[15];//是否已婚(Y为已婚,N为未婚)

charbirthadd[20];//出生地

charaddress[15];//家庭地址

charprofession[20];//职业

charfathername[20];//父亲姓名

intgeneration;//辈分

intmessage;//接点孩子的个数

inthight;//升高

intage;//年龄

datalybirthday;//出生日期

datalydieday;//死亡日期(如果其已经死亡)

structBiTNode*brother;//兄弟

structBiTNode*child;//孩子

structBiTNode*parent;//父母

}BiTNode,*BinTree;

typedefBinTreeQElemType;

/*typedefstruct

{

intfront;

intrear;

QElemTypeelem[QUEUESIZE];

}SqQueue;*/

typedefstructQNode

{

QElemTypedata;

structQNode*next;

}QNode,*QueuePtr;

typedefstruct

{

QueuePtrfront,rear;

}LinkQueue;

intJudgeTime(BinTree);

intComepare(BinTree);

voidInPut(BinTree&T);

BinTreeLevelFind(BinTree&T,BinTreea);

voidCreatfTree(BinTree&T);

voidAddchild(BinTree&T);

voidOutPut(BinTreeT);

voidLevelOutput(BinTreeT);

voidPreOrderD(BinTreeT);

voidKCreatTree(BinTree&s);

voidKeepTTFile(BinTreeT,FILE*fp);

voidPrinfTree(BinTreep,FILE*fp);

voidLAddchild(BinTree&T,LinkQueue&S,FILE*fp);

voidLCreateTree(BinTree&T);

 

//function.cpp

 

#include"Head.h"

//*********************************************************

//*********************************************************

voidInitQueue(LinkQueue&Q)

{

if(!

(Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode))))

{

exit(0);

}

Q.front->next=NULL;

return;

}

intQueueEmpty(LinkQueueQ)

{

return(Q.front->next==NULL);

}

intGetHead(LinkQueueQ,QElemType&e)

{

if(Q.front==Q.rear)

{

return0;

}

e=Q.front->next->data;

return1;

}

voidEnQueue(LinkQueue&Q,QElemTypee)

{

QueuePtrp;

if(!

(p=(QueuePtr)malloc(sizeof(QNode))))

{

exit(0);

}

p->data=e;

p->next=NULL;

Q.rear->next=p;

Q.rear=p;

return;

}

intDeQueue(LinkQueue&Q,QElemType&e)

{

QueuePtrp;

if(Q.front==Q.rear)

return0;

p=Q.front->next;

e=p->data;

Q.front->next=p->next;

if(Q.rear==p)

Q.rear=Q.front;

free(p);

return1;

}

voidQueueTraverse(LinkQueueQ)

{

QueuePtrp;

p=Q.front->next;

while(p)

{

printf("%d",p->data);

p=p->next;

}

printf("\n");

return;

}

//****************************************************************************

//****************************************************************************

intJudgeTime(BinTreep)//判断输入的出生日期是否正确

{

if(p->birthday.year>2013||p->birthday.year<=0)

{

printf("你输入的年份错误,请重新输入!

\n");

return0;

}

if(12birthd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1