DS博客作业07--查找
1.本周学习总结(0--2分)
1.1思维导图
2.谈谈你对查找运算的认识及学习体会。
查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值得数据元素(或记录)。查找表是同一类型的数据元素(或记录)构成的集合。查找表按照操作方式分为两大类:
静态查找表:只作查找操作的查找表。
顺序表查找、有序表查找、线性索引查找
动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个元素。
二叉排序树、平衡二叉树(AVL树)、多路查找树(B树)
主要还是利用二叉树和数组的方法来进行查找,
2.PTA实验作业(6分)
2.1.题目1:
2.1.1设计思路(伪代码)
int find(Tree T,int u)
{
如果T无孩子 返回0
如果根节点的值等于u 返回1
如果根节点的值小于u 返回u到右子树中找
如果根节点的值大于u 返回u到左子树中找
}
int LCA( Tree T, int u, int v )
{
如果无T 则返回错误
如果没有在树中找到u或v 则返回错误
如果u或v等于T 返回T的值
如果u大于T且v小于T或者u小于T且v大于T 返回T的值
如果u大于T 则在T的右孩子中找
否则在T的左孩子中找
}
2.1.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)
2.1.3本题PTA提交列表说明。
2.2.题目2:是否是二叉搜索树
2.2.1设计思路(伪代码)
定义一个变量i 和数组变量a[]
int InorderTraversal(BinTree T){
如果树的根节点不为空
进行中序遍历 满足二叉搜索树的特点返回1,否则返回0
}
bool IsBST ( BinTree T ){
定义一个变量b存储递归函数返回的值
如果根节点为空则是二叉搜索树
否则调用上面的递归函数,如果b=1,则为真,b=0,则为假
}
2.2.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)
2.2.3本题PTA提交列表说明。
2.3 题目3 : QQ帐户的申请与登陆
2.3.1设计思路(伪代码)
while(T--)
{
定义命令符,QQ号,密码
如果是新用户
if(M.find(id)!=M.end()) 已经存在该用户
else 存入新信息
如果是老用户
if(tmp==pass) 不存在该用户
else 错误
}
2.3.2代码截图(注意,截图,截图,截图。不要粘贴博客上。)
2.3.3本题PTA提交列表说明。
3、阅读代码(-2--2分)
3.1 哈希表的插入和查找
通过计算数据元素的存储地址进行查找的一种方法。其本质是先将数据映射成它的哈希值
3.2 解题思路
初始化哈希表,创建哈希表,在哈希表里面查找要找的元素,要插入元素时用除留余数法排除除数为0,利用开放定址的线性探测法解决冲突,将待插入值存入字典中 ,然后要查找时也是先用除数留余法,然后利用开放定址的线性探测法解决冲突,查找到了开放单元或者循环回到原点,表示查找失败,查找成功,则返回值的下标 。
3.3 代码截图
3.4 学习体会
这一节主要实现方法还是树,大部分通过特定树的方法把数据存入,然后再在树中按一定的顺序遍历树,查找需要的元素,主要是我对树的掌握不够导致做题困难,对树的一些遍历结点的方式都不太熟练导致做不下去。