C语言上实现家谱管理系统

#include

#include

#include

#include

#define OK 1

#define ERROR -1

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

typedef int Status;

struct BiNode{

//用结构体定义结点类型。

//数据域信息包含家谱中该对的男、女名字,其双亲名字,以及这对夫妇位于家谱中的辈分

//指针域指向他们的第一个孩子以及其他兄弟

char man[10],woman[10],father[10],mother[10];

int level;

struct BiNode *firstchild,*nextsibling;

};

struct SqStack{

//对栈类型进行定义

BiNode *base;

BiNode *top;

int stacksize;

};

//函数声明

Status InitStack (SqStack &S);

Status Push (SqStack &S,BiNode e);

Status CreateBiTree(BiNode *s);

Status Pop(SqStack &S,BiNode e);

Status EmptyStack(SqStack &S);

Status Preorder(BiNode *T,char name[10],BiNode *p);

//Status CreateParent(BiNode *s);

void findchildren(BiNode *p);

void putoutchildren(BiNode *q,int n);

void findparents(BiNode *p);

void levelhome(BiNode *T);

void leveling(SqStack S1,SqStack S2,int n);

void print(BiNode *p);

//主函数

void main()

{

BiNode *home=NULL,*p=NULL;

char name[10];

printf("请按先序遍历的顺序根据提示输入家谱信息,不存在则输入“#”\n");

CreateBiTree(home);

printf("层次化的家谱信息为\n");

levelhome(home);

printf("请输入要查找的人的名字");

gets(name);

Preorder(home,name,p);

if(!p)printf("家谱中无此人");

else{

printf("辈分:%d\n",p->level);

printf("孩子信息");

findchildren(p);

printf("父母信息:");

findparents(p);

}

}

//函数定义

Status InitStack (SqStack &S){

//初始化函数

S.base=(BiNode*)malloc(STACK_INIT_SIZE * sizeof(BiNode));

if(!S.base) return ERROR;

S.top=S.base;

S.stacksize =STACK_INIT_SIZE;

return OK;

}

Status Push (SqStack &S,BiNode e){

//将e结点推入栈,作为栈顶元素

if(S.top-S.base >=S.stacksize ){

S.base=(BiNode *)realloc(S.base ,(S.stacksize +STACKINCREMENT)*sizeof(BiNode));

if(!S.base ) return ERROR;

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

return OK;

}

Status Pop(SqStack &S,BiNode e){

//取出栈顶元素

if(S.base==S.top) return ERROR;

e=*--S.top;

return OK;

}

Status EmptyStack(SqStack &S){

//若栈空,则返回0

return (S.top == NULL);

}

Status CreateBiTree(BiNode *root){

//创建家谱二叉树

char man1[10],woman1[10],father[10],mother[10];

printf("man:");//男方名字,不存在则输入“#”

gets(man1);

printf("woman

:");//女方名字,不存在则输入“#”

gets(man1);

if(strcmp(man1,"#")==0&&strcmp(woman1,"#")==0)//若该结点男女都不存在,则说明该结点为空,即该子树的根结点

C语言家谱管理程序,C语言实现家谱管理相关推荐

  1. C语言家谱管理程序,c语言的家谱——interesting~

    C++是直接从C语言发展过来的,但最初这种语言不是叫C++,而是C with class,这是由于当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有两个问题 ...

  2. C语言家谱管理程序,C语言二叉树家谱管理系统.doc

    C语言二叉树家谱管理系统 摘 要 本文设计了一个对数据输入,输出,储存,查找的多功能软件,本文需要保存家族的基本信息,包括姓名及它们的关系,但是由于家族信息很巨大而且关系很复杂所以采用二叉树来表示它们 ...

  3. C语言家谱管理程序,[C语言]家谱 - 代码贴 - BCCN

    #include #include #include struct node; node *creat();//建立祖先 int add_child(node *head);//添加家庭成员 int ...

  4. c语言婚姻管理程序,C语言实现婚姻匹配有关问题

    C语言实现婚姻匹配问题 最近因为课程需要,看了看婚姻稳定匹配问题,用了两天把代码写完了. 具体问题就不详细写了,这里给出参看的网址. EOJ上面的问题叙述:http://202.120.106.94/ ...

  5. c语言婚姻管理程序,C语言实现婚姻匹配问题

    最近因为课程需要,看了看婚姻稳定匹配问题,用了两天把代码写完了. 具体问题就不详细写了,这里给出参看的网址. 整个思路结合着老师的课件和这篇文章,用C语言完成了整个代码. // // main.c / ...

  6. 百c语言成绩管理程序计划书,c语言大赛策划书.doc

    c语言大赛策划书 电子信息工程系 第一届 C程序设计大赛 策 划 书 主办单位:电子信息工程系 承办单位:科技协会 E时空俱乐部 电子信息工程系第一届C程序设计大赛 一.活动目的: 为了发掘同学们潜力 ...

  7. 以下哪一个不属于python语言的特点-Python语言的特点有哪些

    Python语言的特点有哪些 Python 是目前最流行的语言之一,从云计算.大数据到人工智能,Python 无处不在,Python 人才需求量也在逐年攀升,Python 为何能发展如此的迅猛,究竟有 ...

  8. c语言人事管理系统,c语言人事管理系统

    现在网上有好多c语言程序都不能运行,今天就给大家分享自己写的一个c语言人事管理程序吧! 一.内容(标题:宋体,粗体,四号字) 本程序主要实现了对高校人事的管理.其不仅可以对人员的新建.添加.删除的基本 ...

  9. 计算机C P U的概念就是,2008计算机二级考试:C语言基础教程-C语言的特点

    C语言是中级语言 C语言通常称为中级计算机语言.中级语言并没有贬义,不意味着它功能差.难以使用.或者比B A S I C.P a s c a l那样的高级语言原始,也不意味着它与汇编语言相似,会给使用 ...

最新文章

  1. oracle 修改sgamaxsize_oracle初始化内存配置参数(sga,pga,sharepool)
  2. Zabbix 3.0 配置企业微信报警(配置zabbix-web)
  3. Java利用jenkins做项目的自动化部署
  4. 设计算法统计二叉树(采用二叉链存储结构)中结点值为x的结点个数_20题,算法工程师能力评估测试来啦...
  5. 10.React中的组件、父子组件、React props父组件给子组件传值、子组件给父组件传值、父组件中通过refs获取子组件属性和方法...
  6. 如何优雅的使用迅雷(Mac)
  7. 运算放大器权威指南(第3版) (op amps for everyone)_OP高质量,ED多版本,有钱的动物狂想曲就是能为所欲为...
  8. 在中文维基百科新建用户框
  9. 如何判断时间复杂度和空间复杂度
  10. 从朋友圈看女神的情感状态
  11. Python“文字游戏”
  12. 【LeetCode刷题笔记-87 42:接雨水(三解法)】
  13. STM32F407ZET6的RTC闹钟二次设置笔记
  14. 在Word2010中交叉引用插入参考文献
  15. php微信开发 (获取用户地理位置)
  16. pomelo mysql_全文索引 - Pomelo.EFCore.MySql
  17. 如何使用windebug追踪ASL CODE
  18. wireshark看不到网口
  19. Wondershare Filmora X for Mac(视频编辑器)
  20. 测试wifi 的手机软件,WiFi性能测试

热门文章

  1. 字节跳动 CEO 张楠谈遭微信封禁;传蚂蚁集团将重组 ;Apache ECharts 5 发布| 极客头条...
  2. 舍 bpftrace 而取 systemtap 的代价和思考
  3. 直播电商都用上 AI 实时翻译了!歪果仁也能听懂李佳琦
  4. 程序员删库被判 6 年,公司损失近亿,云原生时代如何打造安全防线?
  5. 从 Pod 到案例,给小白的 Kubernetes 技术课
  6. 面向失败的设计之播控系统!
  7. 为什么 12306 时不时要崩那么一下?
  8. 5G 到底是不是伪需求?
  9. 面对 996,程序员如何利用“碎片时间”涨薪?
  10. 生物信息 Python 库 - Dash Bio 究竟厉害在哪里?