没有合适的资源?快使用搜索试试~ 我知道了~
数据结构查找算法实验报告.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 2 浏览量
2022-07-11
19:42:15
上传
评论
收藏 272KB DOC 举报
温馨提示
试读
13页
数据结构实验报告 实验第四章: 实验: 简单查找算法 1. 需求和规格说明: 查找算法这里主要使用了顺序查找,折半查找,二叉排序树查找和哈希表查找四种方法 。由于自己能力有限,本想实现其他算法,但没有实现。其中顺序查找相对比较简单, 折半查找参考了书上的算法,二叉排序树查找由于有之前做二叉树的经验,因此实现的 较为顺利,哈希表感觉做的并不成功,感觉还是应该可以进一步完善,应该说还有很大 的改进余地。 2. 设计思想: 开始的时候提示输入一组数据。并存入一维数组中,接下来调用一系列查找算法对其进 行处理。顺序查找只是从头到尾进行遍历。二分查找则是先对数据进行排序,然后利用 三个标志,分别指向最大,中间和最小数据,接下来根据待查找数据和中间数据的比较 不断移动标志,直至找到。二叉排序树则是先构造,构造部分花费最多的精力,比根节 点数据大的结点放入根节点的右子树,比根节点数据小的放入根节点的左子树,其实完 全可以利用递归实现,这里使用的循环来实现的,感觉这里可以尝试用递归。当二叉树 建好后,中序遍历序列即为由小到大的有序序列,查找次数不会超过二叉树的深度。这 里还使用了广义表输出二叉树,以使
资源推荐
资源详情
资源评论
数据结构查找算法实验报告
数据结构实验报告
实验第四章:
实验: 简单查找算法
一.需求和规格说明:
查找算法这里主要使用了顺序查找,折半查找,二叉排序树查找和哈希表查找四种方法。由于自己能力有
限,本想实现其他算法,但没有实现。其中顺序查找相对比较简单,折半查找参考了书上的算法,二叉排
序树查找由于有之前做二叉树的经验,因此实现的较为顺利,哈希表感觉做的并不成功,感觉还是应该可
以进一步完善,应该说还有很大的改进余地。
二.设计思想:
开始的时候提示输入一组数据。并存入一维数组中,接下来调用一系列查找算法对其进行处理。顺序查找
只是从头到尾进行遍历。二分查找则是先对数据进行排序,然后利用三个标志,分别指向最大,中间和最
小数据,接下来根据待查找数据和中间数据的比较不断移动标志,直至找到。二叉排序树则是先构造,构
造部分花费最多的精力,比根节点数据大的结点放入根节点的右子树,比根节点数据小的放入根节点的左
子树,其实完全可以利用递归实现,这里使用的循环来实现的,感觉这里可以尝试用递归。当二叉树建好
后,中序遍历序列即为由小到大的有序序列,查找次数不会超过二叉树的深度。这里还使用了广义表输出
二叉树,以使得更直观。哈希表则是利用给定的函数式建立索引,方便查找。
三.设计表示:
四.实现注释:
其实查找排序这部分和前面的一些知识联系的比较紧密,例如顺序表的建立和实现,顺序表节点的排序,
二叉树的生成和遍历,这里主要是中序遍历。应该说有些知识点较为熟悉,但在实现的时候并不是那么顺
利。在查找到数据的时候要想办法输出查找过程的相关信息,并统计。这里顺序查找和折半查找均使用了
数组存储的顺序表,而二叉树则是采用了链表存储的树形结构。为了直观起见,在用户输入了数据后,分
别输出已经生成的数组和树。折半查找由于只能查找有序表,因此在查找前先调用函数对数据进行了排序。
在查找后对查找数据进行了统计。二叉排序树应该说由于有了之前二叉树的基础,并没有费太大力气,主
要是在构造二叉树的时候,要对新加入的节点数据和跟数据进行比较,如果比根节点数据大则放在右子树
里,如果比根节点数据小则放入左子树。建立了二叉树后,遍历和查找就很简单了。而哈希表,应该说自
我感觉掌握的很不好,程序主要借鉴了书上和 ppt 上的代码,但感觉输出还是有问题,接下来应该进一步
学习哈希表的相关知识。
其实原本还设计了其他几个查找和排序算法,但做到哈希表就感觉很困难了,因此没有继续往下做,而且
程序还非常简陋,二叉树和哈希表的统计部分也比较薄弱,这也是接下来我要改进的地方。
具体代码见源代码部分。
5.详细设计表示:
6.用户手册:
程序运行后,用户首先要输入数据的个数。接下来输入一组数据并根据提示进行顺序查找,二分查找,二
叉排序树查找和哈希表查找等操作,由于操作直接简单这里不再详述。
数据结构查找算法实验报告
7.调试报告:
应该说在调试这个程序的过程中自己发现了很多不足,这次实验让我学到了不少东西,但应该说这个程序
可实现的功能还是偏少,不太实用,接下来有待改进。
8.源代码清单和结果:
#include <stdio.h>
#define LENGTH 100
#include <stdlib.h>
#include <time.h>
#define INFMT "%d"
#define OUTFMT "%d "
/* #define NULL 0L */
#define BOOL int
#define TRUE 1
#define FALSE 0
#define LEN 10000
typedef int ElemType;
typedef struct BSTNode
{
ElemType data;
struct BSTNode *lchild, *rchild;
} BSTNode, *BSTree;
typedef BSTree BiTree;
/* 插入新节点 */
void Insert(BSTree *tree, ElemType item)
{
BSTree node = (BSTree)malloc(sizeof(BSTNode));
node->data = item;
node->lchild = node->rchild = NULL;
if (!*tree)
*tree = node;
else
{
BSTree cursor = *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(BiTree T)
// 递归显示二叉树的广义表形式
{
if(!T){printf("空");return;}
printf("%d",T->data); // 打印根节点
if(T->lchild ||T->rchild)
{
putchar('(');
showbitree(T->lchild); // 递归显示左子树
putchar(',');
showbitree(T->rchild); // 递归显示右子树
putchar(')');
}
}
/* 查找指定值 */
BSTree Search(BSTree tree, ElemType item)
{
BSTree cursor = tree;
while (cursor)
剩余12页未读,继续阅读
资源评论
是空空呀
- 粉丝: 168
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
- 时代的sdddsddsddsd
- 基于哈希链表的简单人员信息管理系统
- 其他类别JdonFramework开源框架 v5.1 Build20071025-jdonframework-5.1.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功