




免费预览已结束,剩余4页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)/search.cpp:Definestheentrypointfortheconsoleapplication./#includestdafx.h#includeLinkTable.h#defineMAX_KEY500/-数组实现部分-/*/*无序数组顺序查找算法函数nsq_Order_Search参数描述:intarray:被查找数组intn:被查找数组元素个数intkey:被查找的关键值返回值:如果没有找到:nsq_Order_Search=-1否则:nsq_Order_Search=key数组下标*/intnsq_Order_Search(intarray,intn,intkey).inti;arrayn=key;/*/*for循环后面的分号必不可少*/for(i=0;key!=arrayi;i+);return(in?i:-1);/*/*有序数组顺序查找算法函数sq_Order_Search参数描述:intarray:被查找数组intn:被查找数组元素个数intkey:被查找的关键值返回值:如果没有找到:sq_Order_Search=-1否则:sq_Order_Search=key数组下标*/intsq_Order_Search(intarray,intn,intkey).inti;arrayn=MAX_KEY;/*/*for循环后面的分号必不可少*/for(i=0;keyarrayi;i+);if(in&arrayi=key)return(i);elsereturn(-1);/*/*有序数组二分查找算法函数sq_Dichotomy_Search0参数描述:intarray:被查找数组intn:被查找数组元素个数intkey:被查找的关键值返回值:如果没有找到:sq_Dichotomy_Search0=-1否则:sq_Dichotomy_Search0=key数组下标*/intsq_Dichotomy_Search0(intarray,intn,intkey).intlow,high,mid;low=0;high=n-1;while(lowarraymid表明要求查找的值在mid+1,high*/*/*否则,在low,mid-1*/if(keyarraymid)low=mid+1;elsehigh=mid-1;return(-1);/*/*有序数组插值查找算法函数sq_Dichotomy_Search1(插值查找算法是二分查找算法的改进)参数描述:intarray:被查找数组intn:被查找数组元素个数intkey:被查找的关键值返回值:如果没有找到:sq_Dichotomy_Search1=-1否则:sq_Dichotomy_Search1=key数组下标*/intsq_Dichotomy_Search1(intarray,intn,intkey).intlow,high,/二分数组的上,下标pos;/查找码的大致(估算)位置low=0;high=n-1;while(lowarraypos)low=pos+1;elsehigh=pos-1;/*/*没有找到,返回-1*/return(-1);/-数组实现部分-/-链表实现部分-/*/*无序链表顺序查找算法函数nlk_Order_Serach查找思想:遍历链表的所有节点参数描述:Node*head:被查找链表的首指针intkey:被查找的关键值返回值:如果没有找到:nlk_Order_Serach=NULL否则:nlk_Order_Serach=键值为key的节点的指针*/Node*nlk_Order_Serach(Node*head,intkey).for(;head!=NULL&head-data!=key;head=head-link);return(head);/*/*有序链表顺序查找算法函数lk_Order_Serach查找思想:依次遍历链表的节点,发现节点不在key的范围时提前结束查找参数描述:Node*head:被查找链表的首指针intkey:被查找的关键值返回值:如果没有找到:lk_Order_Serach=NULL否则:lk_Order_Serach=键值为key的节点的指针*/Node*lk_Order_Search(Node*head,intkey).for(;head!=NULL&head-datalink);/*/*当遍历指针为NULL或没有找到键值为key的节点,返回NULL(表明没有找到)*/*/*否则,返回head(表明已经找到)*/return(head=NULL|head-data!=key?NULL:head);/*/*有序链表动态查找算法函数lk_Dynamic_Search查找思想:依次遍历链表的节点,发现节点不在key的范围时提前结束查找参数描述:Node*head:被查找链表的首指针Node*p;键值为key的节点的前驱指针(回传参数)Node*q:键值为key的节点指针(回传参数)intkey:被查找的关键值注意:当*p=NULL且*q!=NULL,链表的首节点键值为key当*p!=NULL且*q!=NULL,链表的中间(非首,尾)节点键值为key当*p!=NULL且*q=NULL,链表的尾节点键值为key当*p=NULL且*q=NULL,链表是空链表*/voidlk_Dynamic_Search(Node*head,Node*p,Node*q,intkey).Node*pre,*cur;pre=NULL;cur=head;for(;cur!=NULL&cur-datalink)*p=pre;*q=cur;/*/*有序链表动态插入算法函数lk_Dynamic_Insert参数描述:Node*head:被插入链表的首指针intkey:被插入的关键值返回值:lk_Dynamic_Search=插入键值为key的节点后的链表首指针*/Node*lk_Dynamic_Insert(Node*head,intkey).Node*x,/插入节点的前驱节点*y,/插入节点的后续节点*p;/插入的节点p=(Node*)malloc(sizeof(Node);p-data=key;p-link=NULL;lk_Dynamic_Search(head,&x,&y,key);if(x=NULL).p-link=x;head=p;else.p-link=x-link;x-link=p;ListLinkTable(head,插入节点);return(head);/*/*有序链表动态删除算法函数lk_Dynamic_Delete参数描述:Node*head:被删除链表的首指针intkey:被删除的关键值返回值:lk_Dynamic_Delete=删除键值为key的节点后的链表首指针*/Node*lk_Dynamic_Delete(Node*head,intkey).Node*x,/删除节点的前驱节点*y;/删除的节点lk_Dynamic_Search(head,&x,&y,key);if(x=NULL)/*/*因为x=NLLL时,y指向首指针*/head=y-link;elsex-link=y-link;free(y);ListLinkTable(head,删除节点);return(head);/-链表实现部分-intmain(intargc,char*argv).Node*head;/Node*p,*x,*y;intKEY;intcount,i;/intresult;KEY=11;/PrintArrayValue(TestArray2,DEFAULT_ARRAY_SIZE,原始);/result=sq_Dichotomy_Search1(TestArray2,DEFAULT_ARRAY_SIZE,KEY);/printf(查找结果是:数组%d=%d ,result,TestArray2result);head=CreateLinkTable(DEFAULT_ARRAY_SIZE,TestArray2);ListLinkTable(head,原始);/*/*p=lk_Order_Search(head,KEY);if(p=NULL)printf( 查找结果是:指定链表中没有数据域=%d的节点! ,KEY);elseprintf( 查找结果是:节点.Data=%d 节点.Link=%d 节点.Addr=%d ,p-data,p-link,p);*/printf(输入插入节点的个数: );scanf(%d,&count);for(i=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地方高校转型发展面临的挑战与机遇
- 泉州信息工程学院《太行山天然药物学》2023-2024学年第二学期期末试卷
- 东北大学《水彩技法》2023-2024学年第二学期期末试卷
- 湖南吉利汽车职业技术学院《医学微生物学A》2023-2024学年第二学期期末试卷
- 贵阳学院《农业高光谱遥感》2023-2024学年第二学期期末试卷
- 牙椅项目可行性分析报告
- 魔法教室答题题目及答案
- 宁波幼儿师范高等专科学校《大型储能工程导论》2023-2024学年第二学期期末试卷
- 淄博师范高等专科学校《代数与几何》2023-2024学年第二学期期末试卷
- 闽南理工学院《音乐技能Ⅳ声乐》2023-2024学年第二学期期末试卷
- 理论力学(周衍柏第三版)思考题+习题答案
- 拜占庭历史与文化知到智慧树章节测试课后答案2024年秋南开大学
- 2024-2030年中国LNG加气站行业十三五规划及项目可行性分析报告
- 脚手架安全事故案例及总结
- 国家开放大学国开电大《学前儿童游戏指导》形考任务1-4答案
- 2024年-2025年农作物植保员职业技能考试题库(含答案)
- 物理-2025年中考终极押题猜想(广州专用)(解析版)
- 【MOOC】机械设计-华中科技大学 中国大学慕课MOOC答案
- 【MOOC】材料力学-西北工业大学 中国大学慕课MOOC答案
- 充电桩技术规格书
- 2024年华东师范大学第二附中自主招生数学试卷真题(含答案详解)
评论
0/150
提交评论