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

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

 

任道远上任VMware中国研发中心总经理 Windows免费,微软方能解救PC市场 Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解 将会出现iCar?苹果应该收购特斯拉的七大原因 广大程序员的福音:Bing Code Search扩展助你方便查找代码 深挖线下价值是当前婚恋交友网站获取盈利的突破点 15个最好的Bootstrap设计工具推荐 Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API【附PPT】 Webix 1.5发布:一个强大的JavaScript UI组件库 四大著名风投:在我们眼中只有技术革新 美女CEO谈AWS:是香水还是毒药 国外一学生发明新计算机系统,用微芯片代替硬盘 《近匠》第12期:Yeelink——智能硬件云服务 三星Galaxy S5:home键内置指纹识别传感器、5.25寸2K屏幕 Google发布Google Glass使用守则 三星将发布新款智能手表 搭载Tizen系统抛弃Android 从Camera360 V5版本发布,看现代相机应用趋势 索契冬奥会API:赛事的数据直播 为什么开源企业的开源大旗正在褪色 尘埃落定 腾讯确认投资大众点评,获20%股份 Unite China&#183;2014:上千Unity开发者狂欢、五大精品课程全面开启 下载4万首歌曲仅需几秒——蓝色巨人IBM发布新传输技术 15核芯片+数据平台,Intel软硬兼备的Hadoop战略 Facebook以160亿美元收购50名员工、4.5亿月活跃用户的WhatsApp 2014年全美最吃香职业TOP100,程序员排第一 LinkedIn向所有用户开放博客发布平台 Google与Facebook的产品研发之道 小米海外扩张第一步 红米进军新加坡 Google I/O大会时间已定,Google Glass真的来了? 精英团队PK全能型数据科学家,拼的可不只是数量 专攻移动支付?PayPal将面向全球开放移动SDK 大家帮忙介绍一本书 帮帮我怎么把系统还原占用的空间还给我——老鸟们帮忙! 过滤问题:Query需要先选择一个表(通过ComboBox)然后从2个Edit内输入两个条件 关于stringgrid的翻页问题 寻找电脑方面的朋友 大家好,帮忙做做这题 大家如何保存自己地提问?? JTable怎样一行一行地显示? 我的程序 无边框窗口显示问题 求教各位大虾 VB数据库 如何知道某字段有这个姓名记录? 我想学一种C++的集成环境,是C++BUILDER还是VC 我完全没基础,请帮我走出第一步:汇编工具在哪下载?我想试试那个“两只老虎” 如何在还原Cookie中的中文字? 制做彩色立体阴影怎么做啊! 我的程序 请问有没有这样的公司? 2000 server 无法使用ADSL????? 我要和她分手。。。。。。。。 一个不错的网站,进来看一下吧! map 使用的几个小问题 請大家幫我做這個的標準譯文,謝謝!!! 就像做考題一樣,不要只說它在概意思! 新手上路第一问!Hello World都不能运行 这样的SQL语句怎样转化成能在mysql下运行的 学汇编,应用在什么地方?单从功能来说,汇编强大还是C++强大 replace语句的使用方法: 一个不错的网站,进来看一下吧! 关于软加密的问题???? 请高手,两个简单的问题?在线等待???急急!!! 关于ADOQuery1.refresh的问题 我的程序 一个不错的网站,进来看一下吧! 求DELPHI开发ACTIVEX用于WEB打印指定内容的实现说明。 dreamweaver中的一个小问题,,,急!急!急! 我的程序 100分求救啊!使用TEvent对象要包含什么头文件啊? 如何使SYNTAXFROMSQL不从RDBMS中的extended attribute system tables中获取数据 一个不错的网站,进来看一下吧! 几个菜鸟问题 求教:如何配准图形和图象 如果不会C语言,也不会汇编语言,那么学C++困难还是学汇编困难 请各位帮忙超简单,散分! 向往技术的高手请进!能否用DoEvents 实现多线程呢? 谁有DATALIST分页控件,说明如何使用! 怎样用VB读取98系统当前的硬件配置??求助!!!! 在线等呀 急急!!!!!!!!!!! 急,有关视频输出的问题~~ 我在WIN ME 上UPDATE,结果导致无法收看网络电影(用WMA格式的) cannot focus a disable or invisible window 但是一定要准确,别随便复制一段资料! NaHS 是什么酸的盐?咋读? 分度头分78等分怎么分谢谢了 1988年中共中央和国务院决定建立的经济特区 无级变速器是什么意思? 分度头 三等分一个圆用万能分度头 怎么来三等分一个圆 本人刚刚接触有点混 1980年,中央和国务院决定在哪设置经济特区 分度头,49等分怎么分, 33等份在分度头怎么分万能分度头上加工33等份如何分啊 君子喻于义 小人喻于利是什么意思? 自动变速器和无级变速器的区别是什么?请教专家:自动挡车和无极变速车有什么区别?在驾驶手法上有什么区别吗?谢谢. 分度头怎分61等份 化学选择题,关于氧化还原反应的.在线等拜托各位了 3Q 雅阁玻璃水能加几升雅阁车玻璃水能加几升,买几升的玻璃水比较适用. 什么是无级变速器? 含最高价元素的化合物,一定具有强氧化性吗? 有水解程度达50%以上的盐吗? 用一种试剂就可以把NACL,NAHSO4,NAOH,HCL鉴别出.A.CA(HCO3)2B.CACL2C.BA(OH)2D.石蕊 硝酸钾的钾是氧化钾 13,14,15,16题, 钛金属能被什么分解呀, 电场线始于正电荷,止于负电荷……电场线始于正电荷,止于负电荷.是单纯只方向问题,还是真的事实.比如一个正电荷被负电荷所组成的球面围住了.那么这个正电荷的电场能不能影响到负电荷 15 16 17题, 有什么办法让两种金属分离吗? 为什么电场线总是始于正电荷,终止于负电荷?请说明理由 我有标答,要的是思路或过程,例四我有标答,要的是思路或过程, 例四 碳氢油是真的还是假的有这东西吗 碘伏可以和酒精掺在一起吗记得在医院打针医生会在皮肤上涂碘酒,那么碘酒是不是究竟和碘伏的混合物?还是有专门的碘酒? 请问不同品牌的玻璃水能混用吗? 数控分度头和分度盘的区别是什么? 硝酸钾含100mg氮的意思是?怎么计算? 17.设A={1,a\1,ab},B={0,1,a}.若A=B,则a=_____,b=____17.设A={1,a\1,ab},B={0,1,a}.若A=B,则a=_____,b=_____. NaHS是酸式盐吗 任何一个碳原子都只连1个氢原子和3个碳原子这是什么有机物 1:如果a NaHS的质子守恒是?3q 我的世界最新版本是多少?我看到有1.8的,不知道是不是最新的,还有我看视频上有的版本材料做得略微好看些是怎么回事?小地图是怎么来的? A+B=15 B+C=16 A+C=17ABC各=几 alcl3和nahs反应方程式 BASO3是不是沉淀物 A÷B÷C=6,A÷B-C=15,A-B=17,则A+B+C=多少,A×B×C=多少2009年初八前一定要回答出来! 我有标答,要的是思路或过程, solidworks钣金零件中要焊接一根管子,管子是焊接在板材中的,不是焊接在表面,想知道3维展开图怎么画? 什么是煤沥青 我有标答,要的是思路或过程,各个选项.我有标答,要的是思路或过程, 各个选项. solidworks焊件库怎么没有h型钢 煤沥青最近有什么动态? 火药是那个国家发明的? 黑洞和白洞是不是物质 煤沥青的主要用途 初三化学酸碱盐,求详解!我有标答,要的是思路或过程,谢谢! c怎么鉴别初三化学酸碱盐,求详解!我有标答,要的是思路或过程,谢谢! c怎么鉴别 一辆汽车从甲地开往乙地,已经行了120千米,相当于全程的60%.这辆车离乙地有多少千米? 山西省煤沥青价格是多少?有谁知道山西最近在中温沥青价格行情是怎样的? 碳氢油怎么样?有谁了解这一块的?能不能做啊? www.vkeke.com为什么打不开了 NAHS分解成什么 甲醇和碳氢油哪个作为汽车动力油更好?_什么油料更有发展前途 请问BASO3可以怎样制得我不知道BASO3是什么反应的产物.这种沉淀怎么来的啊 NaHS什么情况下结晶? 什么是碳氢油 哈里王子女友获邀参加乔治洗礼式 二人美国少女携枪照顾男童 致其玩枪走火把叙武装分子发表在叙被劫持的俄罗斯工程今日言论:\"梅德韦杰夫亲切实在幽默美13岁男孩手持仿真枪向警察展示 被潘基文敦促莫桑比克冲突双方通过对话解评论:沙特不收联合国“大礼”有人欢喜男子劳动合同被“单方解约” 半年三上台“立法院”空转一个月 民进党扯了谁报告称朝鲜核试验场挖新坑道 短期内不奥巴马称阿富汗战后方案有助长期保护巴江苏常熟美女老板获死缓 自辩称轻信了南京雨污分流工程因季建业下台或被叫停江苏13市9月空气质量排名 盐城最优同济大学自主研发地铁安全控制系统江苏常熟美女老板获死缓 自辩称轻信了广东湛江城管执法男店主被断11根肋骨总决赛-小威8连胜A-拉德 阿扎爆冷恒大派最强阵出征韩国 穆里奇无碍仍可慈溪再推300套经适房 六大人群符合泰森自传揭咬耳事件真相:他明显地用头学校“打保票”娃却没录上孩子手机看视频83分钟流量跑掉120下周,跟着健康夏令营去4家医院看看中国财团7.4亿欧元收购AC米兰美食城烟囱起火蔓延十多层国网陕西电力将投750亿建设我省智能征婚征来的“韩国”女友婚礼前两月已与出租车坠渠 5人溺亡100万爱心援助 用行动关怀肿瘤患者65岁以上人群帕金森患病率约为1.7石砭峪沣峪水源地有居民或农家乐父患病不能干重活 全家靠低保和妈妈打明日9时53分迎来“立秋”志愿遭篡改山东考生被陕师大增加计划录疝气不是小病 拖久了或可致命征婚征来“韩国”女友没想到是他人妻射击 击剑 游泳谁能为中国夺首金经营者决定停业应提前30日告知消费者我省加强互联网广告监管胃肠疾病优惠大检查 开始啦经营者决定停业应提前30日告知消费者
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘