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

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建立无模式窗口 -VB资料 将VB5中的ToolBar变成平面的 将程序从任务列表中隐藏 -VB资料 将我自已的命令加入窗体的控制菜单栏-VB资料 VB利用 UnloadMode 来控制窗体的卸载? VB利用Form_QueryUnload询问使用者是否关闭窗口 利用VB的图片框实现屏幕的滚动 利用VB动态改变Windows显示模式的两种方法 利用VB控制窗口显示风格 利用VB实现浮动按钮 VB利用子类处理技术限制窗体的大小 奇形怪状的窗体 -VB资料 强制ComboBox弹出下拉框 -VB资料 强制和防止窗口重画 -VB资料 巧用“关于”对话框-VB资料 请问在VB中如何关闭别的应用程序窗口 确定屏幕分辨率-VB资料 让VB5支持动画光标 让窗口拒绝接受键盘和鼠标事件 -VB资料 让窗体处于最前面 -VB资料 让窗体居中 -VB资料 让所有的控件都动起来 -VB资料 让最大化和最小化按钮消失-VB资料 任意多边形的窗口-VB资料 如 何将「拒 绝 被 盖 住 的 窗 口 」还 原-VB资料 VB如何创建椭圆形的窗体? VB如何创建无Icon的窗体? VB如何防止Edit框中的Password不被非法获取 VB如何将鼠标显示成动画鼠标? VB如何利用程序拉下 ComboBox? VB如何让窗体右上角的X失效? 使用Access数据库的SQL语句问题请教!!!! 谁有软件技术测试报告?给我一份参考一下啦~~~ : [求助]请各位帮帮忙呀! weblogic7.0的端口问题 如何在一个form中使用另一个form? win2kp 如何恢复丢失的桌面? 80年出生的都在干什么? SQL Server7.0升级到SQL Server2000 急需winsock2.h文件 delphi开发的程序在WIN2000,WINXP下运行正常,在WIN98却不行,是怎么回事? 如何在TOMCAT下重定向服务器不存在文件的错误页面 关于JFileChooser中的新建文件夹问题? 请问哪里有sun j2ee 服务器参考实现的源程序下载 今年一定考C++吗 考几道C语言的题目啊~~~~~~~~~~~~ VB调用COM接口,出现类型不匹配,如何解决? 关于拷贝构造函数,诡异。。。 如何使窗体永远在所有窗口的最前面! vsftpd 是配好了,但是登陆不上去 请问如何编程以其他用户的身份来运行一个程序? 我在同一ASMX文件中在某个WebMethod中调用其它的WebMethod出错,说不支持关键字“provider” 100分求进、销、存类程序源码 各位,请教一数据访问时间问题 七天七世纪 希望顶级高手能进来-->用streamReader的ReadLine读中文文件时出现乱码! 扩充话题 灌水乐园 与 程序人生 这两个版面在主题上有什么区别? 大家好阿,哪里有 WINDOWS XP操作系統下載,謝謝,最好不要激活, Webserver在引用时候怎样才能引用他的属性如: 来者有分,小问题 如何在自已的DNS服务器上解析两个不同的域名! 替换一个表中的数据的SQL怎么写 请问微星845GLM 如何实现usb启动 请问有人知道用其他程序把NOTES的工作台打开的方法吗??高分求解! 急!!计算机接通电源后什么反映也没有,硬盘不读,显示器不响应,主板不报警,我将显卡和内存反复插n遍以后,亮过一次,再加一根内存又 请问怎样设置文件的大小,才能大于4G. !!!!!!为什么我每次安装office2000到一半的时候,机器就重新启动了啊???????? 急!!计算机接通电源后什么反映也没有,硬盘不读,显示器不响应,主板不报警,我将显卡和内存反复插n遍以后,亮过一次,再加一根内存又 为什么正确的SQL语句运行会死掉??? 求助:求一在线时间统计程序 【投诉扩充话题大版主xmsjms】 使用print#怎样能不产生chr(10)? 如何将一个复选框中的所有选项都存到数据库中? 【公告】看看我的信誉分是怎么减的!特此公告!狂散分 怎么以非模态形式显示窗口? 用jscript的file.Delete()操作时如果不能删除,如何得到返回值,而不是对话框的提示没有权限? 请问:如何获取进程使用的内存使用大小? BCB6中哪儿设置TAB的宽度? 我不知道这是不是一个巨难问题? weblogic服务器里面出现的问题! 来到这里有好长时间了,呵呵,从来没有放过分儿,今天就大放分儿了@@,, 我要杀了她!(ZT) 1.se faz favor 3.Ainda temos de pagar.中的de是否相当于英语中的不定式to,如果是的话,为什么不用a? “先生女后生男,则可安然无事”这句话中女后生男是什么意思?是指先生女后生男的意思还是指先生男,女儿在后生的意思? 不求后生是什么意思 葡语语法问题有几个葡语句子不懂,请教下.1.Domicile o seu ordenado,de valor igual ou superior a 500 euros,pela primeira vez no BPI.这句话什么意思? domicilar、de valor 什么意思?2.de forma automática.de forma 是什么意 初级葡语语法问题(高分)回答越详细越好!1.De manhã estão na escola.为什么要用estão这个时态?2.sabes se está alguám em casa?分句是无人称句子,应该像第一句一样用第三人称复数?3.Ontem 什么是雨露计划,雨露计划有什么好的政策 葡语初级语法求教我正在学葡语,1.o que é que há de novo?这里de在这里有什么用?请再举个相关例子.2.nada de especial.这里de在这里有什么用?请再举个相关例子.3.já lá o dois anos请给我原型看看.4.ser?o 什么是雨露计划? 狐假虎威古文+译文注意!是一句古文+一句译文的翻译 不是整片古文和整片译文的翻译 请注意! 什么雨露计划 W h e n y o u b e l i e v e ,y o u c a n a c h i e v e .W h e n y o u b e l i e v e ,y o u c a n a c h i e v e . 温州14岁小驴友大峡谷失踪四个月遗骸百度理财支持首款产品上线 受网民热捧大师对话上海滩 首届童书展彰显国际范20余省区市今晨现雾霾天 冷空气驱散广州疾控中心:大气污染与呼吸疾病死亡中国提速收入分配制度改革 专家称国企第六届金光印艺大奖颁奖典礼在杭圆满落教师被调职劝钉子户婆婆 评论称是株连菲基层选举前夕有22人被杀害 警方逮过半日本人反对秘密保护法 忧日政府将日本拟引进上百架美国无人机“监视”钓只因感情纠葛,男子当街捅死女友世界杯,下沙众生相拿出手机或打开电视,就可预约挂号努力构建“三型”党组织获市执法能力考试团体第二男子为看世界杯吸毒提神 被抓后哀求少6日起气温将冲上30℃5万元以下的合资自主车 试驾启辰R3他从凤起立交桥载客试运行报上银行卡号和身份证,钱就没了仙路飘摇中老年朋友营养、健康配餐一本全中外名家随笔精选集圣域轮回中外著名传说故事选超级鸟人灵魂国中学生必读世界经典名著替身女友中学生科普知识图文百科中学生最佳课外读物金塘岛旅游古神道旅游百脉泉旅游大青山野生动物园旅游乌素图召旅游碧云寺旅游朝阳洞旅游香炉峰旅游上海黄浦江游览清游江船旅游蔚县玉皇阁旅游卧龙禅寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘