预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构实验报告实验第四章:实验:简单查找算法需求与规格说明:查找算法这里主要使用了顺序查找,折半查找,二叉排序树查找与哈希表查找四种方法。由于自己能力有限,本想实现其她算法,但没有实现.其中顺序查找相对比较简单,折半查找参考了书上得算法,二叉排序树查找由于有之前做二叉树得经验,因此实现得较为顺利,哈希表感觉做得并不成功,感觉还就是应该可以进一步完善,应该说还有很大得改进余地。设计思想:开始得时候提示输入一组数据。并存入一维数组中,接下来调用一系列查找算法对其进行处理。顺序查找只就是从头到尾进行遍历。二分查找则就是先对数据进行排序,然后利用三个标志,分别指向最大,中间与最小数据,接下来根据待查找数据与中间数据得比较不断移动标志,直至找到。二叉排序树则就是先构造,构造部分花费最多得精力,比根节点数据大得结点放入根节点得右子树,比根节点数据小得放入根节点得左子树,其实完全可以利用递归实现,这里使用得循环来实现得,感觉这里可以尝试用递归.当二叉树建好后,中序遍历序列即为由小到大得有序序列,查找次数不会超过二叉树得深度。这里还使用了广义表输出二叉树,以使得更直观。哈希表则就是利用给定得函数式建立索引,方便查找.设计表示:实现注释:其实查找排序这部分与前面得一些知识联系得比较紧密,例如顺序表得建立与实现,顺序表节点得排序,二叉树得生成与遍历,这里主要就是中序遍历.应该说有些知识点较为熟悉,但在实现得时候并不就是那么顺利。在查找到数据得时候要想办法输出查找过程得相关信息,并统计。这里顺序查找与折半查找均使用了数组存储得顺序表,而二叉树则就是采用了链表存储得树形结构。为了直观起见,在用户输入了数据后,分别输出已经生成得数组与树。折半查找由于只能查找有序表,因此在查找前先调用函数对数据进行了排序。在查找后对查找数据进行了统计.二叉排序树应该说由于有了之前二叉树得基础,并没有费太大力气,主要就是在构造二叉树得时候,要对新加入得节点数据与跟数据进行比较,如果比根节点数据大则放在右子树里,如果比根节点数据小则放入左子树。建立了二叉树后,遍历与查找就很简单了。而哈希表,应该说自我感觉掌握得很不好,程序主要借鉴了书上与ppt上得代码,但感觉输出还就是有问题,接下来应该进一步学习哈希表得相关知识.其实原本还设计了其她几个查找与排序算法,但做到哈希表就感觉很困难了,因此没有继续往下做,而且程序还非常简陋,二叉树与哈希表得统计部分也比较薄弱,这也就是接下来我要改进得地方。具体代码见源代码部分。5、详细设计表示:6、用户手册:程序运行后,用户首先要输入数据得个数。接下来输入一组数据并根据提示进行顺序查找,二分查找,二叉排序树查找与哈希表查找等操作,由于操作直接简单这里不再详述。7、调试报告:应该说在调试这个程序得过程中自己发现了很多不足,这次实验让我学到了不少东西,但应该说这个程序可实现得功能还就是偏少,不太实用,接下来有待改进。8、源代码清单与结果:#include<stdio、h〉#defineLENGTH100#include<stdlib、h>#include<time、h>#defineINFMT"%d”#defineOUTFMT"%d"/*#defineNULL0L*/#defineBOOLint#defineTRUE1#defineFALSE0#defineLEN10000typedefintElemType;typedefstructBSTNode{ElemTypedata;structBSTNode*lchild,*rchild;}BSTNode,*BSTree;typedefBSTreeBiTree;/*插入新节点*/voidInsert(BSTree*tree,ElemTypeitem){BSTreenode=(BSTree)malloc(sizeof(BSTNode));node->data=item;node—>lchild=node-〉rchild=NULL;if(!*tree)*tree=node;else{BSTreecursor=*tree;while(1){if(item<cursor-〉data){if(NULL==cursor->lchild){cursor->lchild=node;break;}cursor=cursor—>lchild;}else{if(NULL==cursor—>rchild){cursor->rchild=node;break;}cursor=cursor—>rchild;}}}return;}voidﻩshowbitree(BiTreeT)//递归显示二叉树得广义表形式{ﻩif(!T){printf(”空");return;}ﻩprintf("%d",T->data);ﻩﻩ//打印根节点if(