网站大量收购独家精品文档,联系QQ:2885784924

数据实验四程序代码 中国矿业大学.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据实验四程序代码 中国矿业大学

中国矿业大学计算机学院实验报告 课程名称 :数据结构 实验名称 :搜索 班级 : 姓名 : 实验报告要求: 一、实验目的 1 熟练掌握顺序搜索、折半搜索和索引搜索等基本搜索算法,熟悉这些算法适合在何种存储结构下实现 2 熟练掌握二叉排序树的特性、建立方法以及动态搜索算法 3 熟练掌握散列表的特点及构造方法 二、实验内容与代码 基本题 1、实现基于有序顺序表的折半搜索。 程序代码: #include stdafx.h #include iostream #define MaxSize 100 using namespace std; // 排序连续顺序文件的折半查找方法 int Bin_Search(int key[],int n,int k) { int iLow = 1,iHigh = n,iMid = 0; while(iLow = iHigh) { iMid = (iLow + iHigh) / 2; if (key[iMid] == k) { return iMid; // 查找成功,返回数组中的位置 } if (k key[iMid]) { iLow = iMid + 1; // 查找范围缩小到后半部分; } else { iHigh = iMid - 1; // 查找范围缩小到后半部分; } } return 0; } int main(int argc,char* argv[]) { cout 折半查找的实例,我们用整形数组来调试: endl; int iArr[MaxSize] = {0}; int iNum1 = 0,iNum; cout 请输入你想查找的数组的长度: endl; cin iNum1; cout 请输入一组数字,按照从小到大的顺序排列: endl; for (int i = 0;i iNum1;++ i) { cin iArr[i]; } cout 请输入你想搜索的整数的值? endl; cin iNum; cout 该整数的位置为: Bin_Search(iArr,iNum1,iNum) + 1 endl; return 0; } 程序运行的结果: 2、设单链表的结点是按关键字的值从小到大排列的,试写出对此表的搜索程序并调试。 程序代码: // 2、设单链表的结点是按关键字的值从小到大排列的, /*试写出对此表的搜索程序并调试。*/ // database.cpp : 定义控制台应用程序的入口点。 // #include stdafx.h #include iostream using namespace std; typedef struct Node { Node* next; int iData; }LNode,*LinkList; // 创建一个节点数为n的线性链表; LinkList Creat(int n) { LinkList r, p = NULL; LinkList head = NULL; int num = 0; for (int i = 0;i n;++ i) { cin num; p = (LinkList)malloc(sizeof(LNode)); p-iData = num; p-next = NULL; if (head == NULL) { head = p; } else { r-next = p; } r = p; } return head; } // 确定元素item在线性表中的位置; LinkList Locate(LinkList list,int item) { if (list != NULL) { LinkList p = list; while(p!=NULL p-iData != item) { p = p-next; } return p; } } // 在线性非空链表的第一个位置插入一个链接点; void InsertHead(LinkList list,int item) { if (list != NULL) { LinkList p = NULL; p = (LinkList)malloc(sizeof(LNode)); p-iData = item; p-next = list; list = p; } } // 在非空线性链表的末尾插入一个元素为item的链接点; void InsertTai

您可能关注的文档

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档