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)、主函数
原文:https://www.cnblogs.com/renjs/p/9097846.html