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

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用EXCEL组件简化VB编程的一种方法 VB用MDB文件做密码库 VB用ODBC API访问ODBC数据库 用VB 实现类电子表格的数据录入 用VB5直接控制Excel 97 用VBA编制Access的查询程序 用VB和RDO访问SQL Server 用VB开发多通道仪表数据采集程序 用VB实现关闭所有数据库对象 用VB实现类电子表格的数据录入 VB用代码创建数据库,表,字段 VB用类来编写数据库程序 优化OLE的调用频率-VB资料 语言选择引起的查询错误 -VB资料 远程数据库的访问-VB资料 运用ADO进行数据库表数据互导 -VB资料 在 VB5.0中编辑数据库和电子表格 在Access 2000中用ADO-VB资料 在Access数据库中实现密码管理的另一种方式 -VB资料 在VB6.0中使ACCESS数据库在网络使用中保持同步 在VB中更改SQL Server数据库结构 在VB中兼容非ACCESS数据库的技巧 在VB中引用dbf及索引文件 在VB中运行Microsoft Access报表的好方法 在VB中直接用ODBC API访问数据库 在数据库应用中, 经常要动态生成 Select 语句,典型的情况:-VB资料 在运行时修改DataEnvironment的连接字符串-VB资料 在抓取資料庫之資料前先計算資料總筆數 -VB资料 增加 MsFlexGrid 的编辑功能-VB资料 真正删除数据库的记录 -VB资料 用VB制作屏幕保护程序 请问void CEx04aView::OnDraw(CDC* pDC) 中CDC是什么? 谢谢 一个关于COOL360的问题?请回答 英文译中文,.怎么办? 如何制作帮助文件? 如何在DbGrid中锁定前面几列记录??? 一个关于ENCTYPE="MULTIPART/FORM-DATA"的问题 共享文件夹的安全问题如何解决?? 怎么在窗体上放一个动画flash的,用什么组件可以这么做!!! ISO/C++标准要的请举手!! SQL里的DMO在VB里怎么使用 英文译中文,.怎么办?? 一个小问题 void CEx04aView::OnDraw(CDC* pDC)的CDC是什么?谢谢!! mcisendstring 与mciexecute 调用外部命令问题! 有偿求解:简体PDF在繁体WINDOWS环境下如何阅读 有谁在VB中使用过关于INTERNET CACHE的函数? 端口问题!~请问有什么办法知道一个程序所用的通讯端口号码!?~ 黑木黑木,我也给大家看看吧,不傻不要钱~~~(附照片) 如何将一画中的某一部分画到一个Image中 风之子,发呆呆,请进! 太可怕了, 愿人类永不受此难。 ado--vb数据库查找时怎样显示?? 我现在碰到了一个很奇怪的问题,高手能够解决吗? 哪有将打印输出为传真和email的源代码 急急急,谁来帮忙,兄弟有难 关于COOL360的问题? 一存储过程的问题 这些错误代码是什么意思? 请问如何在vb中截获消息 请问:在Windows98和Windows2000下支持的Winsock客户端套接字连接的最大个数分别是多少? 黑客软件 还是COM接口问题 大虾,帮个忙,一个小问题先谢谢!! 关于多次搜索的一个问题,大家都来看看啦!!!!!! 绘图仪的驱动程序 跳转至某一页应该怎么做? 强烈要求CSDN恢复‘帖子提前连接’功能,请帮忙UP! C++builder 中怎么判断某一个字符在不在字符串中? 求教:为什么我的控件下载特别慢?(在网页中用的控件,客户端浏览时下载) 明年毕业,想搞软件开发,现在很矛盾,是去大公司,还是去那种中小型的软件公司呢???? 求教有开发经验的高手关于XML和数据库的简单问题 查找窗口疑问 delphi的createoleobject 一个很急的问题??? 我怎么覆盖派生类中的virtual成员函数?(up加分,详情请入内) 寻找用过JMAIL的同志! 想问一下,在收邮件时,如何取得发件人的MAIL呢? 请问像大虾们说的comp.lang.c++.moderated这样的讨论组怎么访问?(Solstice) 简单问题:关于paradox数据库 进销存的问题 高分寻找ZIP密码破解高手! 请问有没有能通过Modem发送传真的控件? 我国江西有一个著名的“瓷都”,是什么地方 蛋白质的变性,凝固,沉淀之间的相同点和不同点 高粘度液体中的硫酸如何去除 江西的瓷都在哪里呢? 蛋白质变性的事实举例 某氨水中C(NH4+)=0.5MOL/L时达到电离平衡,若向其中加入C(NH4+)=0.5MOL/L的NH4CL溶液氨水的电离度为什么会增大?为什么用同离子效应解释得到的结论是相反的呢? 被称为瓷都的是我国哪一城市? 举例说明蛋白质变构与变性在本质上的区别. 氨水中加入氯化铵固体会怎样影响电离平衡? 如何从苦杏仁中提取氢氰酸?普通方法,我不可能去买CO2过滤 蛋白质变性的实例 盐酸中滴加氨水至中性,溶液中溶质为氯化铵 这句话为什么是错的 怎么从苦杏仁中取氰化氢?它的液体叫作氢化酸? 氯化镁和氯化铝混合溶液和过量氨水反应为什么氨水进入氯化镁不是氯化镁进入氨水 飞机设计师为减轻飞机的质量,将飞机的钢制零件改为铝制零件,屎其质量减少104KG,则需要多少千克的铝、 钢的密度7.9*10的三次方 铝2.7*10的三次方 那位能告诉我下如何从苦杏仁提炼出氢氰酸 液体固体都行 不是拿来害人的 请放心吧 如何鉴别氯化铝溶液和氯化镁溶液用什么试剂 将氯化钴加入氯化铵与浓氨水的混合液中,可发生什么反应?生成何种配合物? 一克杏仁有多少毫克氢氰酸 氯化镁和氯化铝混合溶液和过量氨水反应为什么先加氨水 氨水和氯化铵.氨水与氯化铵的混合溶液是 缓冲的吗 景德镇素有“瓷都”之称始于哪朝?是元朝还是明朝? 物理测量石块的密度问题小红想测量一块石头的密度 利用托盘天平 一个烧杯适量的水 和细线设计了一个方案 根据小红的实验思路 将实验步骤补充完整1 用天平称出小石块的质量M2在烧杯中 在稀氨水中加入浓氨水、盐酸、氯化铵会怎么移动?原因? 请教一下关于氢氰酸和亚砷酸的制取我自己到乡下朋友家里拿了一些猪草,在我家里用高压锅盖着煮,最后滤液是浅绿色有苦杏仁味的液体,请问这里面含有猪草生成的氢氰酸吗?还有就是我在家 怎样测量一块石头的密度?用三种不同的方法,写出操作工具/步骤/原理 氯化铵和氨水混合这两种溶液混合好像有三种可能显酸性 ,碱性,中性这三种分别有三种不同的离子大小排序分别是什么?为什么?请各位老师或同学稍微讲详细一点, 用氰化钠和硫酸制取氰化氢气体可以用锥形瓶和分液漏斗吗? 如何测量小石块的密度?实验器材:____________________________1.__________________________2.__________________________3.__________________________4.__________________________记录表格: 怎么测量空气密度? 在实验中制取氰化氢气体,怎样防止中毒而又能收集到较纯气体 6.为了测量某石块的密度,实验中学物理兴趣活动小组的同学利用一只小玻璃杯、一个量筒和适量的水做了如下实验:(1)在量筒内倒入60cm3的水;(2)将小玻璃杯开口向上漂浮在量筒内的水 蓖麻油炒鸡蛋有什么作用 蛋白质与重金属离子结合会变性 但是为什么金单质也会使蛋白质变质呢?(例如吞金也会致死) 浓硫酸的粘度 蓖麻油有什么作用? 蛋白质的热变性与非热变性有什么区别? 如何使浓硫酸的粘度变的象胶水一样? 蓖麻油可以食用吗? 银跟铜哪个能够使蛋白质沉淀更多,为什么?铜是硫酸铜5%浓度,银是硝酸银还是氯化银3%浓度.我需要的是为什么, 中国有三大瓷都,都哪三大呢? 20摄氏度下,98%浓硫酸的饱和蒸汽压和粘度分别是多少? 如何把市售氨水配制成浓度为2%的呢?实验室银氨溶液配制,需要2%的浓度的氨水,市售氨水谢谢. 现代,被评为中国瓷都的有——,——,——. 为什么浓硫酸中绝大多数H2SO4以分子形式存在,它不是在溶液中以离子存在吗 一个质量为100g的物体吸收840J的热量后,温度升高了10℃,求这个物体的比热容 氢氰酸尾气处理氢氧化钠、碳酸钠能吸收之吗?甲醛呢,还有什么常见物质可以用于吸收~ 氨水和MgCl2反应 6mol/l氨水的配制 如何辨别一块金牌的真假?用物理知识《密度》、谢谢! 用浓NAOH如何鉴别出氨水,mgcl2.alcl3.cucl2.fecl3.nh4cl? 氯化铵与氨水缓冲溶液的配制想知道怎样计算得出氯化铵所称质量和氨水要加体积 我想要具体的计算方法 蛋白质加热后为什么会凝固?获得热量,分子结构应该变大呀. 向MgCl2和AlCl3溶液中加入氨水,为什么Mg2+先产生沉淀? 苯酚使蛋白质变性的机理是什么?为什么酚类最强的变性剂是苯酚? 蛋白质的沉淀与凝固的实验现象 用浓NAOH如何鉴别出氨水,mgcl2.alcl3.cucl2.fecl3.nh4cl?谢谢 蛋白质变性的机制是什么?简洁点,一句话概括是什么. 蛋白质凝固是什么变化 一道物理密度特殊测量的题现在有 容器 水 盐 刻度尺 上相均匀的木棒 铁丝(不计体积) 鸡蛋测量鸡蛋的平均密度 并写出代数式
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn