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 学习体会

这一节主要实现方法还是树,大部分通过特定树的方法把数据存入,然后再在树中按一定的顺序遍历树,查找需要的元素,主要是我对树的掌握不够导致做题困难,对树的一些遍历结点的方式都不太熟练导致做不下去。

原文地址:https://www.cnblogs.com/yvvq/p/11030128.html