Copyright© 2017,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:text.cpp
作者:黄某某
完成日期:2017年12月21日
版本:vc6.0
问题描述: 实现简单的族谱系统
d.h
#ifndef FAMILY_H_INCLUDED
#define FAMILY_H_INCLUDED
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
#define MAX 10
typedef struct node//定义data存储结构,存放个人信息
{ char name[MAX]; //姓名
char sex;//性别
int generation;//代
}node;
typedef node ElemType; //将ElemType定义为结构体类型
typedef struct treenode//创建结构体
{
ElemType l; //家谱中直系家属
struct treenode *brother;//用来指向兄弟
struct treenode *child;//用来指向孩子
}treenode;
treenode *search(treenode *p,char ch[]); // 搜索指针函数,搜索需要修改和获得的结点,输入头指针,姓名
int generation(treenode *p,char ch[]); //获得搜索到的成员的代的返回值
int generation1(treenode *p,char ch[]); //获得搜索到的成员的代的返回值
void children(treenode *p,char b[],char c,int d);//建立家谱孩子结点,创建结点并对l赋值保存
void output(treenode *n); //搜索到数据的输出
void InitTree(); //初始化(创建)
void Add(); //添加
void Search(); //查找
void Change(); //修改
#endif // FAMILY_H_INCLUDED
/***********************************************************
*版权所有(C)2017,
*
*文件名称:d.h
*文件标识:无
*内容摘要:定义结构体声明函数
*其它说明:无
*当前版本:V1.0
*作 者: 黄潇慧
*完成日期:2017.12.21
*
*版本号:V1.0
**********************************************************/
d.cpp
#include "d.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
void display0();
void Search1();
using namespace std;
/*********************************************************
*功能描述:容错的检验
*输入参数:x
*输出参数:无
*返回值:x-成功其他-失败
*其它说明:消息字段之间用分号(;)分隔
***********************************************************/
template<class T>//模板
T fun(T x)
{
if(x!=2)
throw x;
else
return x;
}
treenode *root; //root是指向结构体treenode的指针
/*********************************************************
*功能描述:查找search家谱中某位成员
*输入参数: *p 头指针用来指向根节点(root),保证从根节点root进行遍历, ch[]用来储存姓名
*输出参数: 无
*返回值:q or NULL(返回指针)
*其它说明:消息字段之间用分号(;)分隔
通过递归在兄弟、孩子中查找
/***********************************************************/
treenode *search(treenode *p,char ch[]) // 搜索指针函数,搜索需要修改和获得的结点,输入头指针,姓名ch[]
{ //用search寻找性别姓名信息
treenode *q;
if(p==NULL) return NULL;//没有家谱,头指针下为空
if(strcmpi(p->l.name,ch)==0)//比较姓名,看是否重名或是否存在
return p;//家谱不为空,头指针下有这个人
if(p->brother)
{
//递归过程
q=search(p->brother,ch);//在兄弟中找
if(q)
return q;//找到
}
if(p->child)
{
q=search(p->child,ch);//在孩子中找
if(q!=NULL)
return q; //找到
}
return NULL;//没有找到
}
/*********************************************************
*功能描述:获得搜索到的成员的第几代的返回值
*输入参数: *p 头指针用来指向root的根节点,ch[]用来储存姓名
*输出参数:被查找人的信息
*返回值:q->l.generation or NULL or 0
*其它说明:消息字段之间用分号(;)分隔
通过递归在兄弟、孩子中查找
***********************************************************/
int generation(treenode *p,char ch[]) //获得搜索到的成员的代的返回值
{

最低0.47元/天 解锁文章
3556





