6翻了C语言,《嗨翻C语言》随书练习六 6章 二叉树简单例子
二叉树简单例子/* 《嗨翻C语言》随书练习 6章 2016-12-06
xiousheng@126.com 二叉树例子,警务罪犯判断档案系统,哈哈
书中可以专家系统例子
*/
#include
#include //要动态用内存必须用这个库 malloc(),free()
#include
typedef struct node{
char * question; //嫌疑人
struct node *no;
struct node *yes;
}node;
//简单的判断函数
int yes_no(char * question){
char answer[3];
printf("%s?(y/n):", question);
fgets(answer, 3, stdin);
return answer[0] == 'y';
};
node * create(char *question){ //创建
node *n = malloc(sizeof(node));
n ->question = strdup(question);
n ->no = NULL;
n ->yes = NULL;
return n;
}
//释放内存
void release(node *n){
if (n){
if (n->no) release(n->no);
if (n->yes)release(n->yes);
if (n->question) free(n->question);
free(n);
}
};
int main(){
char question[80];
char suspect[20];
node *start_node = create("嫌疑犯有胡子吗");
start_node ->no = create("王小华");
start_node ->yes = create("猪猪赌");
node *current;
do
{
current = start_node;
while (1){
if (yes_no(current->question)){
if (current->yes){
current = current->yes;
}else{
printf("%s是犯罪嫌疑人\r\n",current->question);
break;
}
}else if(current->no){
current = current->no;
}else{
/*新的犯罪嫌疑人*/
printf("谁是新的犯罪嫌疑人?");
fgets(suspect, 20, stdin);
suspect[strlen(suspect)-1] = '\0' ; //去掉换行符号
node *yes_node = create(suspect);
current->yes = yes_node;
/*把以前的排除了的嫌疑人全加到不是这边*/
node *no_node = create(current->question);
current->no = no_node;
/*记录新的特征*/
printf("%s是犯罪嫌疑人,%s不是。\r\n请输入辨认他的信息:", suspect, current->question);
fgets(question, 80, stdin);
question[strlen(question)-1] = '\0' ; //去掉换行符号
free(current->question ) ;
current->question = strdup(question);
break;
}
}
} while (yes_no("再次运行"));
release(start_node);
return 0;
};
结果配图
6翻了C语言,《嗨翻C语言》随书练习六 6章 二叉树简单例子相关推荐
- FL Studio春节大特惠,一起嗨翻狗年
寒冷冬日,依旧阻挡不了我们满溢的热情,没想好怎么嗨年的小伙伴看这里,看这里,看这里,今年春节,我们搞点不一样的,让FL Studio带你嗨翻春节,浓浓年味撞上水果编曲软件,趣味十足! 春节假期,优惠不 ...
- 和年轻人一起嗨翻盛夏!梦百合婚礼季“好梦音乐节”首场圆满落幕
这个夏天,音乐节作为全民party席卷了全国各地,不仅成为了年轻人表达自我.释放个性的生活方式,也是品牌与年轻群体开展情感沟通.传递品牌文化的重要阵地,一些有资源.有实力的品牌化身音乐节主办方,以更沉 ...
- python翻页_python实现电子书翻页小程序
本文实例为大家分享了python实现电子书翻页的具体代码,供大家参考,具体内容如下 1.题目: 电子书翻页: (1)自动翻页:每次默认读三行,读完之后睡两秒,直到把所有内容全部读出来 (2)手动翻页: ...
- 联合体c语言作用,C语言共用体-C语言union-什么是C语言中的联合体-嗨客网
C语言共用体教程 在 共用体的各个成员会占用不同的内存,互相之间没有影响,而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员. C语言共用体 语法 union unionName{ fi ...
- c语言注释的作用文百,C语言注释-C语言行注释-C语言注释块注释-嗨客网
C语言注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性.同时,注释也是一个程序员必须要具有的良好编程习惯.我们应该首先将自己的思想通过注释先整理出来,再用代码去体现. 在 C语言注 ...
- 网络语言嗨C,1,2,3,4,5,6,7,8,9,0的网络语言代表什么意思啊?
不知您是否指的是数字网络语言,如果是的话,看看下面的文章吧. 网络语言最大的特点是输入(书写)简便,其代表的约定俗成的涵义,有的简明,有的含隐,有的诙谐,有区别于正常交流语言(文字)的特殊功效.网络语 ...
- c语言转换为python语言_python和c语言
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! c语言是编译型语言,经过编译后,生成机器码,然后再运行,执行速度快,不能跨平台, ...
- r语言导出文件为xlxs_R语言学习——R读取txt、csv、xls和xlsx格式文件
最近项目中运用到了R读取文件数据,所以把相关好用的.经过验证的方法总结了一下,有效避免下次入坑. 1. R读取txt文件 使用R读取txt文件直接使用read.table()方法进行读取即可,不需要加 ...
- 【Golang】一篇文章带你快速了解Go语言为什么你要学习Go语言
目录 1. 为什么互联网世界需要Go语言 1.1 硬件限制:摩尔定律已然失效 1.2 Go语言为并发而生 1.3 Go性能强悍 1.4 Go语言简单易学 1.4.1 语法简洁 1.4.2 代码风格统一 ...
最新文章
- RecyclerView悬浮标题
- 计算机考研学科专业基础,2018考研计算机学科专业基础综合考试大纲 出炉
- mysql 跨库复制_Mysql跨数据库(在同一IP地址中)复制表
- echarts生成图表
- Eclipse无提示的解决办法 和 内容辅助技巧
- hibernate入门二之单表操作
- 第六章 实验报告 (函数与宏定义)
- esri开发大赛项目总结
- 草根创新的狂欢——《大数据时代》对程序员的启示
- 链克价格一路高涨,简单 5 招让你快速获取链克
- 报错undefined symbol: _ZN3c104impl23ExcludeDispatchKeyGuardC1ENS_11DispatchKeyE
- 恢复被误删的ESP引导分区
- 关于2010年部分节假日安排
- Pytorch踩坑记:赋值、浅拷贝、深拷贝三者的区别以及model.state_dict()和model.load_state_dict()的坑点
- spring MVC之Annotated Controllers
- 苹果电脑如何正确断网?macOS操作系统断网方法来了
- 小学计算机考试感受作文,考试后的感想小学作文6篇
- 面试指南(三):想跳槽,这些问题你会了吗?
- 使用python爬取马蜂窝游记
- 【深度学习】CLM-framework开源代码
热门文章
- android学习笔记55——ContentProvider_2
- Sql Server函数全解(二)数学函数
- 苹果设置网易邮箱收件服务器,如何在iPhone 3/4、iPod touch的邮件应用程序中使用IMAP服务...
- python绘制3维图-1、2、3维图见过,用Python画出来的六维图见过么?
- python语言怎么输入-python如何用input输入数组
- python怎么打开交互式窗口-如何在交互式环境中执行Python程序
- python第三方库下载-3、python第三方库的安装方式
- python怎么安装numpy库-Python NumPy库的安装和使用
- 关于python的一些好的书籍推荐-荐书||关于Python的一些书籍推荐
- java和python哪个好就业2020-java和python哪个的前途更好?