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

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;}

 

电影结束画面的卷动效果-VB资料 二进制操作截取VCD片断 -VB资料 非常VB测声卡 关闭屏幕保护功能,改变屏保等待时间 -VB资料 VB获取桌面窗口图象 红色警戒&amp;终级动员令-VB资料 检查是否安装声卡 -VB资料 将 .flc 动画档放在某一个 hWnd 之中播放 -VB资料 截取屏幕图像-VB资料 开机,自动更换墙纸 -VB资料 控制PC喇叭 -VB资料 利用VB测声卡 利用VB进行多媒体程序设计初步 利用Visual Basic设计多媒体应用程序 满屏播放AVI文件-VB资料 平铺贴图背景 -VB资料 破解WINDOWS屏幕保护密码 -VB资料 巧用VB编程使XMPLAYER自动播放VCD VB取得 WAV 文件信息 趣味撞球VB5应用程序一例 VB如何从&quot;SOUND.DRV&quot;中提取声音 VB如何设定墙纸的显示方式? VB如何用API及MMSYSTEM.DLL播放AVI文件 VB如何知道计算机是否安装声卡? 设计简单的屏幕保护程序 -VB资料 使机箱内的小喇叭发出不同的声音 -VB资料 使用VB设计具有「动感」的命令图标栏 五彩缤纷的清屏效果-VB资料 系统是否支持声音 -VB资料 一个实用的VB屏幕程序 一个自动更换墙纸的小软件-VB资料 求好书!!!! 我如何是好! c++的CODE如何才能最好的移植成java的 求好书!!!! 谁有字符串的压缩算法!!!慷慨送分!!! 视频数据如何在数据库中操作 求好书!!!! ??? 我需检验某表单的文本框中只能有数字,字母等字符,是用javascript做,还是用JSP做? 求好书!!!! 我为何添加不了成员变量 浏览器不能浏览JAVA2写的Applet,那里可有升级包? 还是有关于图片上传,请高手帮忙 加强型的 MSFlexGrid 我认识 KiteGirl(小仙妹) ( 是个好女孩 代表到底是什么东西? 有良知的中国人近来看看! 在vb中做的ActiveX DLL文件如何在vc中调用????? 谁能给我提供磐英810主板的显卡驱动 请问用PDM从数据库中反生成的数据模型,连接到另外的数据库中生成库表,为什么会失败? 请问如何将office2000或office xp 的激活提示除掉 怎么在LINUX下编译JAVA? 请问foxbill:.h文件之前的这些都是什么意思? MEMFILE例子的-----送分帖! 请问如何将office2000或office xp 的激活提示除掉 关于class的问题 我的“路由和远程访问” 出了一个怪问题 用VB设计自己的E-mail系统 这个就是你们说的美女檬檬吗? 我觉得....... 两个小问题————高手赐教! 一个局域网内监控程序,有点问题,请大家帮忙看看! 怎么在LINUX下编译JAVA? ADO数据库简单问题? -128的原码,反码,和补码是什么 ado问题,紧急!高分求救 展望COM,我的COM学习计划!来看看! 借宝地一用,请有良知的中国人近来看看--印尼华人! 拨号上网问题 人民银行网站建设中数据库存储过程的调用 100分求解一个能打印*.frm的控件,提供相关资料的也给分,27号晚5:00结账送分 visual C++ ??? Delphi??? 我憋的难受! 一个编译错误。不知道是什么原因 请问如何使用vbscript删除表的一行(制定行) OracleOraHome81ManagementServer起不来? 关于Tuxedo? 使用apache映射虚拟目录的问题! 谁有VC下类EXCEL的代码 进入windows的目录需要密码的问题 com+组件导出的客户端代理,安装到win98客户机,客户机createObject出错 救急!请问哪里有CrystalReport的书以及源码? QUERY的一对多问题! 一个画家有14个边长为1m的正方体,在地面上把它们摆成如图的形状,然后他把露出表面都涂上颜色?一个画家有14个边长为1m的正方体,在地面上把它们摆成如图的形状,然后他把露出表面都涂上颜 填成语(要填人体器官或部位的名称)焦()烂()还有促()谈() Léticia怎么读? 英语翻译I like to take my camera with me wherever I go.That way,if I see something interesting,I can snap a picture of it.我喜欢带着相机,无论我去哪里.那样的话,如果我看见一些有趣的,我能怕张照.wherever 作连词,引 成语:横线上需填人体器官或部位名称--黄--瘦-- --相依劈--盖----高--低 物理中的法(F)和特(T)是什么单位 谢 英语翻译a thought hit me especial 物体重力500N,在水平支持面上匀速运动时所受的摩擦力为200N,则F=? 如图,已知直角梯形abcd的周长为100cm,ad=20cm,bc=30cm,求梯形abcd的面积? 成语 ( ) 重( ) 轻(填人体器官或部位名称) 一个物体在地球上用弹簧测力计称量时读数为98N,在月球上用天平秤量该物体时,测得的数据为( )A.98kgB.10kgC.10ND.98N 请问物理单位“F”和"P"是好多啊.是单位.P是皮米那个. 某高楼共26层出于安全考虑电梯运行的最大速度为4m/s最大加速度为2m/s²,某人质量60kg乘电梯从1楼到26楼最短时间为20s 求每层楼高多少 求此过程中电梯的平均速度 一个人用同样大小的水平方向的力拉着木箱,分别在光滑和粗糙两种水平地面上前进相一个人先后用同样大小的力沿水平方向拉木箱,使木箱分别在光滑和粗糙两种不同的水平面上前进相同的 如图已知直角梯形abcd的周长为100平方厘米ad=20,bc=30求梯行的abcd的面积没有阴影 在托盘台秤上放有一个装水的烧杯,烧杯和水的总质量m总=2kg,一个质量m=900g,体积 V=200cm³的实心物体被用细绳吊着浸在水中.(g=10N/kg)求:此时托盘台秤的示数是多少? 放在水平地面上的木箱质量为六十千克,一人用大小为200N,方向与水平方向成三十度斜向上的力拉木箱,木箱沿地面做匀速运动,求木箱受到的摩擦力和支持力. 1μF=?F(物理单位换算)1米法等于多少法拉 台秤上放一杯水,放入一块冰块,台秤示数将增大还是减小将一块冰用细线拴住慢慢地浸入水中。(是水不是酒精),并保持悬置状态,在冰块浸入的过程中,台秤读数将——;冰块融化过程中 英语翻译that she had furthermore handed a cudgel to our opponents,who might now cite her professed malleability as they make their case that incentives to change,not equal rights,are what we need.make their case that incentives to change 怎么 如图,已知直角梯形ABCD的周长为100cm,AD=200cm,BC=30cm,求梯形ABCD的面积. 请用算式 托盘台秤上放有一个装有水的烧杯,质量为900g,体积为200cm3的实心物体被细线吊着浸没在水中.此时,托盘台秤的示数由哪些因素决定?可不可以给出具体计算的过程? 数学黄冈小状元答案四年级上册 传感器参数中的F· S是什么单位或具有什么物理意义? 如图所示,台秤上放有一个装有一定量水的容器,台秤的读数为12N,某人用细绳吊一个体积为100cm3,重为2N的小石块浸没在容器的水中,石块没有触到容器底,则台秤的读数为13N,若将细绳剪断,则石块 已知直角梯形高30厘米,∠1=∠2=45°求直角梯形ABCD的面积 20.在梯形ABCD中,∠B=45°,∠C=60°,CD=4cm,AD=2cm,求梯形ABCD的周长及面积.如题3分钟内,50丫,快 地球的半径为r,地面附近的物体重力为g0,则距离地面高度为h处物体的重力加速度为多大?质量为m的物体在这一高度上对地球的引力大小为_____【知道第一个问是[r/(r+h)]^2*g ,想知道第二个问】 如图,已知直角梯形ABCD,角A=角B=90度,AD=2,BC=8,AB=10,在线段AB上取一点P,使三角形ADP与三角形B...如图,已知直角梯形ABCD,角A=角B=90度,AD=2,BC=8,AB=10,在线段AB上取一点P,使三角形ADP与三角形BCP相 已知:如图,梯形ABCD中,AD平行于BC.AB=CD角C=60度AD=3.DC=5.求梯形ABCD的周长和面积 地球的半径为R,地面附近的物体重力加速度为g.则距离地面高度为h处物体的重力加速度为多大? 如图所示,升降机以1m/s的速度匀速上升时,升降机对人的支持力为500 N.下列说法正确的是(  )A.升降机静止在十楼时对人的支持力小于500N B.升降机以1.5m/s速度匀速上升时对人的支持力 一位体重为500N的人,站在匀速上升的电梯里,电梯底板对他的支持力为________N,此时人所受的合力为_______N. 希望拜托了)设地球表面的重力加速度为g0,物体在距地面3R(R为地球半径)处,由……设地球表面的重力加速度为g0,物体在距地面3R(R为地球半径)处,由于地球作用而产生的加速度为g,则g/g0为()A 离地面高度等于地球半径处,重力加速度是地球表面的几倍快 污水处理用词NH3-N(mg/L)什么意思 电梯与水平面夹角为37度,60千克的物体随电梯以a=1m/s2的加速度上升运动,则物体受到斜面的支持力,摩擦力? 弹力F=kx,什么情况下F=kx=mg什么情况下,弹力F=kx=mg 已知下图中阴影部分的面积是15平方厘米,AB=12厘米,AD=15厘米,求直角梯形ABCD的面积是多少平方厘米? 语文四年级黄冈小状元暑假作业答案.答案不见了. 在电梯中,以1m/s2的加速度加速上升和0.5m/s2加速度减速下降哪个秤示数更大? F(x)=lg[(kx-1)/(x-1)] k>0 求定义域 (kx-1)(x-1)>0 但用(kx-1)(x-1)>0 但lg[(kx-1)/(x-1)] =lg(kx-1)-lg(x-1),所以应该把(x-1)0且(x-1)>0吧不解.困惑. 语文黄冈小状元四年级上答案 人的重力为500N,电梯的加速度为1m每秒放,求此时人对电梯的重力为什么是550? 在四边形ABCD中,AD‖BC,若角DAB的角平分线AE交CD于E,连接BE,且BE平分∠ABC,则BC=CE吗?若是,请写出过程,若不是,请说明理由 黄冈小状元作业本四年级语文下人教版答案 初二的一道三角形的数学题在三角形ABC中,AB>AC,D为BC中点,DE垂直BC交角BAC的平分线AE于点E,EF垂直AB于点F,EG垂直AC交AC的延长线于点G.求证:BF=CG. 物理老师说:计地球自转时万有引力=F向+Fn——所以F万=mg+mrW^2,请问Fn是指哪个力,为什么等于mg? 如图所示,一质量为m、边长为a的正方体与地面之间的动摩擦因数μ=0.1,为使它水平移动距离a,可采用将它翻倒或向前匀速平推两种方法,则A.将它翻倒比平推前进做的功少 B.将它翻倒比平推前 问一道初二关于三角形的数学题如图已知:△ABC中,∠C=90°,D、E是AB边上的两点,且AD=AC,BE=BC.求∠DCE的度数. 一个重为600N的人站在电梯中,请思考下列几种情况下电梯对人的支持力的大小和方向1.电梯和人静止不动 2.人和电梯以1.0m/s的速度匀速直线上升 3.人和电梯以1.5m/s的速度匀速直线下降 四年级下册语文黄冈小状元答案快! 地球半径为R,地面附近物体的重力加速度为g,则距离地面高度为2R处物体的重力加速度为?为什么是1/4g? 请问放射性单位BQ/L的中文怎么读呢,含义是什么? 如图,是边长为1m的正方体,一只蜘蛛潜伏在A处,B处有一小虫被蜘蛛网粘住,请你测算蜘蛛从A爬行到B的最短路线. 地球半径为R,地球表面的重力加速度为g,则在距离地面高度H=R的地方,下列说法正确的是:A.质量为m的物体在该处的重力大小为0.5mgB.通过该处绕地球做匀速圆周运动的人造卫星的运动的角速度 单位mol/L怎么读,是什么意思 边长为0.1m的正方体木块,放在图19所示的容器中.现缓慢持续地往容器中注水,一段时间后,木块浮走知木块的密度为0.6×103kg,g取10N/kg.求:(1)木块所受的重力为多少?(2)容器中水面升至多高时, 地球半径为R,底面附近的重力加速度为g则距离地面高度为h处物体的重力加速度g'=Gm/(r+h)^2.地球半径为R,底面附近的重力加速度为g则距离地面高度为h处物体的重力加速度g'=Gm/(r+h)^2,一物体在 这个应该怎么读100mmol/L ,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘