博客作业05--查找

一、学习总结

1、查找的思维导图

2、查找学习体会

  本章的查找方法很多,都有各自的优缺点。对于线性表的查找掌握得比较好,并不能独立的写出树表或者哈希表的查找。本人感觉哈希表是最为便利的一种查找方法,理解过后还是要靠不断的巩固练习。

二、PTA实验作业

1.1、题目1:6-2 是否二叉搜索树

1.2、设计思路(伪代码或流程图)

  子函数int Max(BinTree BST)返回二叉树BST中最大的数,同理,子函数int Min(BinTree BST)返回二叉树BST中最小的数。在二叉树中若保持左子树的最大值和右子树的最小值分别恒小于、大于根节点的数,则返回ture。显而易见,可构建递归函数。

1.3、代码截图

1.4、PTA提交列表说明

 

 

前面代码的思路是:根节点的数据分别大于其左子树,小于其右子树。忽略了如果根节点左子树的右子树大于根节点的数据等情况。

2.1、题目2:6-3 二叉搜索树中的最近公共祖先

2.2、设计思路(伪代码或流程图)

  先把u经过的结点保存到数组a[]中,再将u经过的结点保存到数组b[]中,从后面开始查找,如果两数组的某值相等则为公共祖先。

2.3、代码截图

2.4、PTA提交列表说明

在求u经过的节点时,由于采用了递归函数,前两次都误将其他节点当作u经过的结点,导致出错。后来发现错误:T==NULL时应返回0而不是返回m。在操作过程中,粗心大意,忘记分析如果该节点为u时的操作。

3.1、题目3:7-1 QQ帐户的申请与登陆

3.2、设计思路(伪代码或流程图)

  这题的思路很清晰,通过L和N判断新用户还是老用户,然后再一步步往下走。难点在于如何利用STL中的map快速解决。

3.3、代码截图

3.4、PTA提交列表说明

 

三、截图本周题目集的PTA最后排名

四、阅读代码

1、问题描述:针对某个集体(比如你所在的班级)中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。

2、基本要求:假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用伪随机探测再散列发处理冲突。

3、数据结构设计:

4、主要算法设计

(1)、姓名(结构体数组)初始化

    名字以拼音的形式够成字符串,将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字。

 

 (2)、建立哈希表   

       用除留余数法构建哈希函数,用伪随机探测再散列法处理冲突

 

(3)、查找哈希表

  在哈希表中进行查找,输出查找的结果和关键字,并计算和输出查找成功的平均查找长度

 

(4)、显示哈希表

 

(5)、主函数

 

 

posted @ 2018-05-27 22:25  十月廿二  阅读(162)  评论(1编辑  收藏  举报