说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

C语言实现树的动态查找

HTML文档下载 WORD文档下载 PDF文档下载
本例演示一种树数据结构存储记录集合时的动态查找方法。

 

本例演示一种树数据结构存储记录集合时的动态查找方法。首先程序通过construct()函数,利用已经存在的结构体数组数据建立一个二叉树,建立树的过程中,要保证每个节点的值都大于它的左子树上节点的值而小于它右子树所有节点的值,该函数返回建立树的根指针;然后通过函数Search(root,name)查找,如果找到相应的数据,将其打印出来,如果没有找到,则用户可以选择是否将该数据插入到树中。

 

具体代码如下:

#include <stdio.h>#include <stdlib.h> #include <string.h>#define NUM 4struct tree{	char name[20];	char city[20];	char sex[10];	char age[10];	char job[10];	struct tree *left;	struct tree *right;};struct tree Datas[NUM]={	"Willing","Tianjing","Female","21","worker",NULL,NULL,	"Tom","Beijing","Male","31","doctor",NULL,NULL,	"Sun","Weifang","Male","24","student",NULL,NULL,	"Marry","Shanghai","Female","19","techer",NULL,NULL};struct tree *construct(	struct tree *root, 	struct tree *r, 	struct tree *Data){	if(!r)	{		r = (struct tree *)malloc(sizeof(struct tree));		if(!r)		{			printf("内存分配失败!");			exit(0);		}		r->left = NULL;		r->right = NULL;		strcpy(r->name,Data->name);		strcpy(r->city,Data->city);		strcpy(r->sex,Data->sex);		strcpy(r->age,Data->age);		strcpy(r->job,Data->job);		if(!root)			return r;		if(strcmp(Data->name,root->name)<0)			root->left = r;		else 			root->right = r;		return r;	}	if(strcmp(Data->name,r->name)<0)		construct(r,r->left,Data);	else		construct(r,r->right,Data);	return root;	}struct tree *Search(root,name)struct tree *root;char name[];{	struct tree *p;	if(root == NULL)		printf("该树为空\n");	p = root;	while(strcmp(p->name,name)!=0)	{		if(strcmp(p->name,name)>0)			p = p->left;		else			p = p->right;		if(p == NULL)			break;	}	return(p);}void print(struct tree *r){	if(!r)		return;	print(r->left);	printf("%s\n",r->name);	print(r->right);}void print_currentData(struct tree *point){	if(point == NULL)		return;	printf("	姓名:%s\n",point->name);	printf("	城市:%s\n",point->city);	printf("	性别:%s\n",point->sex);	printf("	年龄:%s\n",point->age);	printf("	工作:%s\n",point->job);}int main(void){	int i;	char c[10];	char swap[20];	char name[20];	struct tree *root,*p;	struct tree *temp;	p = NULL;	temp = NULL;	root = NULL;	for(i = 0;i<NUM;i++)		root =construct(root,root,&Datas[i]);	printf("现有人员资料:\n");	print(root);	printf("请输入要查找的人的名字\n");	scanf("%s",name);	p = Search(root,name);	if(p == NULL)	{		printf("没有该人资料\n");		printf("是否要插入该人资料[y/n]\n");		scanf("%s",c);		if(strcmp(c,"y")==0)		{			temp = (struct tree *)malloc(sizeof(struct tree));			if(!temp)			{				printf("内存分配失败!");				exit(0);			}			printf("请输入该人姓名:\n");			scanf("%s",swap);			strcpy(temp->name,swap);			printf("请输入该人所在城市:\n");			scanf("%s",swap);			strcpy(temp->city,swap);			printf("请输入该人性别[Male/Female]:\n");			scanf("%s",swap);			strcpy(temp->sex,swap);			printf("请输入该人年龄:\n");			scanf("%s",swap);			strcpy(temp->age,swap);			printf("请输入该人工作:\n");			scanf("%s",swap);			strcpy(temp->job,swap);			temp->left = NULL;			temp->right = NULL;			root =construct(root,root,temp);			print_currentData(temp);			printf("现有人员资料:\n");			root = root;			print(root);		}		else 			return 0;	}	print_currentData(p);	return 1;}

 

面向移动应用程序的DevOps五大挑战和十个最佳实践 Ruby 2.2.0发布,支持回收Symbol类型对象 听UnitedStack、IBM、HP专家如何谈“OpenStack 存储”技术 专访POWER 8编程挑战赛选手孙冬冬:从C语言到人工智能、深度学习的技术演变 盘点2014:十家最酷的大数据创业公司 盘点2014:最受关注的十大云服务创业公司 基于Kubernetes构建Docker集群管理详解 漫画:编程语言学习曲线 彩云天气: 328万元大奖背后的故事 iOS开发的22个奇谲巧技 谁是最受欢迎IT企业?技术、薪酬、发展空间、创新能力大评比 Jolt Awards 2015最佳编程工具奖榜单揭晓,Cloud9 IDE众望所归! 展望2015:数据中心行业的十大预测 亚信CTO金亚东:传统企业向产业互联网转型的两条路径 微信评论功能开启将成净土还是地狱 如何定位Android NDK开发中遇到的错误 流行从这里开始,MDCC 2014十大人气产品榜单揭晓! 专访POWER 8编程挑战赛选手唐刚:大数据计算永远是主角 微信公众号认证命名松绑,您怎么看? LambdaNet:纯Haskell实现的人工神经网络库 专注模式识别,易道博识为海量信息输入提供便捷之门 【问底】Michael G. Noll:整合Kafka到Spark Streaming——代码示例和挑战 2014年手游和社交游戏行业重要趋势解读 腾讯副总裁罗道锋:共建全国最大安全云库 5分钟内数据精准共享 Connected Cycle 一举两得的智能自行车踏板 CES可穿戴产品前瞻:汽车厂商入局智能手表领域 果断Mark!国外程序员收集整理的PHP资源大全 Google 2015项目前瞻:智能隐形眼镜、Google X、Ara Swift的坑:如何实现enum的多选? Swift,其实没那么任性 如何利用单台服务器实现10万多个Git仓库托管 pb7.0哪里可以下载? AUTOCAD图形打印驱动程序设计 贺猪猪成星,散分给水友,天下皆欢颜!!! WinRAR的压缩密码怎么取消啊?快,快,急需!!! 没有权限打开names.nsf的问题? 复选框的问题,在线等待!!! 没有权限打开names.nsf的问题? IE浏览器显示的字体不是默认的,变成了空心字体。如何改成系统默认的字体?(win98+IE5.0) 寻找高手 关于协议的问题 求助!能把一个字段内容分解的函数? Servlet问题?(急等,立结) oleconnection 支不支持sybase的连接,不通过odbc如何连接Sybase高手请进!急啊!!! 关于return的问题 为何内存消耗在不断增长? 浏览器类型 求文件长度? 用DELPHI 开发过ORACLE数据库的高手帮忙,我现在遇到个问题, BCB消息机制问题, 关于MFC 请教:jar问题 零为什么不能做为除数。 菜单资源ID得问题 请问高手,实验室局域网内部下载速度很慢,会是什么原因造成的? 如何利用Datareport做出好看一点的报表? Grid的列怎么来调整? GDI+类使用new操作符问题 有人在吗? 请看看这一样个SQL语句 页面上有两个相连的表格时,中间的边框变得很粗,能否做到和一个表格的效果? 帮我写一个简单的和SERVER2000查询的例子50分相送!! 怎样将别人给我的数据库文件导到本地? 近日较忙,散分200 请问将脚本写在页面和写在J文件里有什么不同?我写在页面上一切正常,可是把脚本防在一个JS文件就报错 ===好几天,ADO 连接oracle数据库的问题.还搞定。大伙给看看 DBLookupComboBox的疑问 我是福建省福州的.程序员在哪儿报名呀?? 如何让录入页面的信息能自动保存~! 编写函数 有谁知道华工的计算机应用的复试考那几门?另外请问关于其他不公布复试科目的学校可以通过电话询问复试科目吗? 想不通,请教?(802.1x) 一个有关浏览器的问题,高手必进! 那位兄弟推荐一款文件夹加密的软件! 发布一套完整的网站系统,up就给分 怎么样能够把文件上传到服务器的任意目录下?? java同mysql连接不上: Server configuration denies access to data source 大家是如何看别人的源程序的呀~介绍一下自己的经验嘛~ 字符串A与B,找出A,B的最大公共子串? 我从TPanel继承一个控件,此控件能有OnMouseWheel事件吗?如果有,如何写? 新手的不解 谁能给个 ado 访问 mssql 最简单的代码例子? 关于Unicode的两个问题 麦克斯韦的电磁理论,不是说非均匀变化的电场产生变化的磁场,为什么...麦克斯韦的电磁理论,不是说非均匀变化的电场产生变化的磁场,为什么一直导线通以直流也会产生磁场呢?不是变化的 深海鱼油到底怎么样,我用深海鱼油药丸中的看似水的东西放在塑料泡沫板上10小时后泡沫板被腐蚀了 植物细胞没有溶酶体吗?教科书46页上画的图 明明就是动物细胞和植物细胞都有溶酶体呀 当年……,如今…… 怎么造句 什么昆虫.有三角龙一般的头部,求名字(图中有点发霉)放在泡沫板做标本后不久泡沫板会被腐蚀 纤维素每个单元为什么会有3个羟基以及形成纤维素的方式 用三个有时造句, 急求一段话的英语翻译!不要用任何翻译器翻!谢谢!文化差异及其产生的原因 文化差异广泛地说,是指世界上不同地区的文化差别,即指人们在不同的环境下形成的语言、知识、人生观、价 羟基纤维素的价格是多少? 当年……如今……造句 在这英雄的土地上,我要怎么样地高声歌唱!扩写句子 请问有没有回收不锈钢酸洗后的淤泥不锈钢酸洗后有大量的淤泥,里面含有镍、铬、铁等金属离子. 硅羟基活性与纤维素上羟基活性哪个大 原线圈输入正弦型交流电压 经过理想变压器变压后得到的电压是正弦型还是余弦型? 我们每月有几百吨不锈钢酸洗后的酸泥,有没有技术可以转化利用.寻求共同合作!急寻酸泥回收利用技术 属于等产量曲线的特征是( ) A.离原点越远,代表的产量越大 B.等产量线凹向原点 C.对同一厂商而言,两条等 方向如图所示的匀强电场(场强为E)和匀强磁场(磁感应强度为B)共存的场区······方向如图所示的匀强电场(场强为E)和匀强磁场(磁感应强度为B)共存的场区,一电子沿垂直电场线 癌症用英语怎么说?急…… 供给曲线与横轴交于原点右方说明了什么那么它的供给弹性的取值范围是什么?为什么 英国物理学家、数学家麦克斯韦的智商是多少? 那个人死于癌症. 我知道纤维素的每个葡萄糖结构单元有三个羟基,可具体的结构式是什么?没人知道吗? 什么时候弹簧的弹性势能最大? "医生告诉他,他得了癌症" 用英语怎么说 6.产品转换曲线() A.总是从原点向外凸出的曲线 B.总是从原点向外凹下的曲线谢谢了, “当我.的时候,当我.的时候,或者当我.的时候,我想起.”造句 患癌症 用英语怎么说主要是“患”, 急需用油膜法测分子直径的数据 许多人死于战争用英语怎么说 在宇宙空间站内,宇航员能否将水吸到口中在空间站中宇航员能不能将水通过吸管吸到口中,或存不存在吸到口中的可能性.希望有这方面知识的朋友能给予帮助!我同学说太空中没有大气压吸不 如何用氯乙烷制备1-丁醇?求每个步骤的试剂和产物, 高锰酸钾加医用酒精会不会爆炸? 如果宇航员在天空里倒水 那么水会流向哪里?如果宇航员不小心掉入太空里会怎么样 请问羟丙基甲基纤维素可以不可以做洗洁精的增稠剂? 溶酶体与衰老细胞器融合体现生物膜结构特性为什么啊 修正液(涂改液)接近了火会怎样?修正液(涂改液)接近了火会怎样?反正我知道涂改液不能接近火 羧甲基纤维素加在洗涤剂中,有什么作用,是乳化剂吗? 溶酶体是细胞器吗 涂改液是否有毒谢谢了,大神帮忙啊 求配图 微观经济学 1.完全竞争市场上企业的供给曲线 2.完全竞争市场的供给曲线 解释两个的原因 在相同条件下氧气的溶解度大于氢气的溶解度,实验中测得比值会比理论值偏大吗是大还是小? 将适量CO2通入0.8gNA0H碱溶液将产物在减压低温下蒸干后得1.37克固体 所得固体成分是什么?质量分别是多少 一质量为M的玩具坦克放于粗糙水平地面上,内部有一质量为m的炮弹,通过燃烧炮筒内少...一质量为M的玩具坦克放于粗糙水平地面上,内部有一质量为m的炮弹,通过燃烧炮筒内少量火药将炮弹在 优美凄凉的句子 将适量的co2通入含0.8克naoh的碱性溶液中,将产物蒸干得到1.37克固体物质问co2的质量?2naoh---na2co3 0.02---0.01 naoh---nahco3 0.02---0.02 na2co3和nahco3的质量比为 0.01*106比0.02*84 通过十字交叉法{1.37-1.06}比{1. " 车用空气净化器对于车内空气改善效果好还是多开窗就可以了?求告知~" 氧化钙与二氧化碳反应生成碳酸钙要打沉淀符号吗 算并联电路中的总电流.不能用总电压除以总电阻吗?5欧和10欧并俩.总电压为2.5.为什么算个支路相加和直接算总的答案不一样? 怎样使车内的空气达到改善,车载净化器是否有用? 应用麦克斯韦的电磁理论判断如图所示的表示电场产生磁场(或磁场产生电场)的关系图应用麦克斯韦的电磁理论判断如图所示的表示电场产生磁场(或磁场产生电场)的关系图象中(每个选 并联电路中总电阻能不能用总电压除以总电流? 为什么Mg燃烧有火焰而Fe燃烧是火星 有没有一些凄凉优美的句子 并联电路中为什么有时候用总电压除以总电阻的电流与各支路电流不相等?这时应该怎么办 为什么溶酶体自噬.而不会分解其他细胞器如题,是说细胞器膜里面的水解酶分解膜后为什么不会分解其他细胞器?我是说蝌蚪的尾巴消失后.成熟的水解酶流出后.为什么不会破坏其他的细胞器 应用麦克斯韦的电磁理论判断如图所示的表示电场产生磁场(或磁场产生电场)的关系图象中(每个选项中的上图是表示变化的场,下图是表示变化的场产生的另外的场),正确的是( ). 并联电路中求电流,电压是除以电阻还是除以电阻的倒数 植物细胞有溶酶体吗植物细胞内有溶酶体,因为它和动物细胞一样都是有蛋白质组成的骨架而且其内的生命活动会有许多死亡的细胞器膜等,这些都需要水解酶的分解来完成而水解酶又存在于 麦克斯韦方程中关于变化的电场产生磁场及变化的磁场产生电场是推论出来的么? 酒精+高锰酸钾一定会爆炸么是不是和量的多少有关系 高等植物细胞具有溶酶体吗?RT 解密以色列版007:最爱暗杀 钟爱炸胡万林拒为堂妹看病:这病我治不好 去解密以色列版007:最爱暗杀 钟爱炸中华典籍朗诵比赛在蒙古国举行俄外长与联合国叙问题特使讨论筹备叙问联合国-阿盟叙特使称伊朗应参加叙问题访塞浦路斯能源、工商及旅游部长捷克议会提前大选结束 共产党或重回执法国上海经济文化发展会和交大校友会换日本近海7级地震核电站无异常 测得最法国上海经济文化发展会和交大校友会换31省区市9月CPI涨幅出炉 物价“1-9月全国规模以上工业企业实现利润孟加拉国贫民窟准妈妈的艰辛生活(组图法国正式要求美国停止监听行为日本近海7级地震核电站无异常 测得最全球最大海上书店巴林“首秀”新老警务联络官交接 南非侨界寄予厚望各国“吃货”探讨舌尖上的文化 亚洲食接个孩子的功夫 她停在路边的奥迪Q5钱塘江边一工地挖淤泥挖出160多颗炮抢票软件十分钟抢到千张车票街头快拍10个孕妇 1个体重异常亮出阴阳合同“贼喊捉贼” 白岩松:刘泉州智赢团实单上演两连中庄臣食单房产转移税从11%降至3%歼6战机“虏获”爱国心历史存量保单 试点投资蓝筹股保监会火上加油 创业板亢奋座位数将增加8万多个网购儿童票需取票进站东风轻卡 购车送3000元定制通信大湖北新手女彩民 领完千万大奖立刻举家车王事故仍是谜团一串私办培训班 澳洲“福漂”被拘你拍“年味”照 我来送好礼今明冷 周末回暖春晚主持人名单:多了张国立少了撒贝宁姜育恒亲临原动力 庆生原动力卓悦2周五旬男半路上车被拒 徒手敲裂公交车玻
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘