资源简介
数据结构作业
编程语言:使用C语言
数据结构:树
简介:实现 家族谱。拥有增、删、改、查的功能。 亲测可用
代码片段和文件信息
#include
#include
#include
int num = 0;
struct node
{
int Num;
char Name[20];
char Sex;
struct node *next[10];
struct node *parent;
};
void Menu(struct node *Tree);
void Create(struct node *node);
void PrintAll(struct node *Tree);
struct node *Search(struct node *Tree char name[]);
void Print(struct node *Tree char name[]);
void Add(struct node *Tree);
void Correct(struct node *Tree);
void Delete(struct node *Tree);
void main()
{
struct node *Tree;
Tree = (struct node*) malloc (sizeof(struct node));
strcpy(Tree->Name “0“);
Tree->parent = NULL;
Tree->next[0] = NULL;
Menu(Tree);
}
void Menu(struct node *Tree)
{
int ch;
char name[20];
while (1)
{
fflush(stdin);
printf(“请选择你的操作\n“);
printf(“1:输入家谱信息建立树\n“);
printf(“2:在家族中查找某人并输出其相应信息\n“);
printf(“3:添加新的成员\n“);
printf(“4:输出整个家谱信息\n“);
printf(“5:修改某个人的信息\n“);
printf(“6:删除某个人的信息\n“);
printf(“7:退出整个程序\n“);
printf(“你的选择是:“);
scanf(“%d“&ch);
printf(“\n“);
fflush(stdin);
if(ch == 7) break;
switch(ch)
{
case 1:
printf(“请输入姓名:“);
scanf(“%s“ Tree->Name);
fflush(stdin);
printf(“请输入性别:(女G 男B)“);
scanf(“%c“ &Tree->Sex);
fflush(stdin);
Create(Tree);
printf(“\n\n“);
break;
case 2:
if(strcmp(Tree->Name “0“) == 0)
{
printf(“家族谱未建立\n\n“);
break;
}
printf(“请输入要查找的人物姓名:“);
scanf(“%s“name);
fflush(stdin);
Print(Search(Tree name) name);
printf(“\n\n“);
break;
case 3:
if(strcmp(Tree->Name “0“) == 0)
{
printf(“家族谱未建立\n\n“);
break;
}
Add(Tree);
printf(“\n\n“);
break;
case 4:
if(strcmp(Tree->Name “0“) == 0)
{
printf(“家族谱未建立\n\n“);
break;
}
printf(“整个家族的信息如下:\n“);
PrintAll(Tree);
printf(“\n\n“);
break;
case 5:
if(strcmp(Tree->Name “0“) == 0)
{
printf(“家族谱未建立\n\n“);
break;
}
Correct(Tree);
printf(“\n\n“);
break;
case 6:
if(strcmp(Tree->Name “0“) == 0)
{
printf(“家族谱未建立\n\n“);
break;
}
Delete(Tree);
printf(“\n\n“);
break;
}
}
}
void Create(struct node *node)
{
struct node *NewNode;
NewNode = (struct node*) malloc (sizeof(struct node)); //申请配偶节点内存空间
node->next[0] = NewNode; //节点连接
NewNode->parent = node;
printf(“请输入%s的配偶姓名:(若无配偶,则输入0) “ node->Name);
scanf(“%s“ NewNode->Name);
fflush(stdin);
if(strcmp(NewNode->Name “0“) == 0)
{
node->Num = 0; //无配偶默认无子女
return;
}
if(node->Sex == ‘G‘) NewNode->Sex = ‘B‘; //设置配偶参数
else NewNode->Sex = ‘G‘;
NewNode->Num = node->Num; //配偶子女数
NewNode->next[0] = NULL;
printf(“请输入%s的子女数:“ node->Name);
scanf(“%d“&node->Num);
for(int i = 1; i <= node->Num; i ++)
{
NewNode = (struct node*) malloc (sizeof(struct node)); //申请子女节点内存空间
printf(“请输入%s的第%d个子女的姓名:“ node->Name i)
- 上一篇:曲线最小二乘法多项式拟合C++Qt实现界面
- 下一篇:操作系统 银行家算法 C++
相关资源
- c语言 选课管理系统
- C语言大程序游戏大富翁24707
- c语言gbk、utf8转换编码表及函数
- c语言 五子棋源码界面美观
- c语言time()
- 图书管理系统(C语言课程设计报告
- 数据结构——表达式求值 完整代码
- A*算法 A star算法 C语言版
- C语言打印字符图形
- 熊猫烧香病毒
- C语言实现LZ编码
- C语言 文件压缩和解压
- 三国志游戏源代码C语言版本
- 启发式搜索算法解决八数码问题(C语
- C语言graphics图形库
- 数据结构实验-表达式中括号配对
- 深信服笔试题目C语言和C++
- 简单日历c语言代码,简单易懂。
- “信任的进化”部分功能实现源代码
- c语言int char类型转换
- 定时器设计的门铃C语言源码
- 实现数字签名算法DSA,Hash算法的实现
- 电子表 | 西北工业大学电子实习
- LeetCode 题解
- C语言上机题库150题
- C语言五子棋实验报告.docx
- 基于锁相环的角度观测器C语言实现
- 用mfc实现的计算器
- c语言遍历二叉树
- 4交通灯_STC89C52.zip
评论
共有 条评论