DS博客作业07--查找

DS博客作业07--查找

1.思维导图及学习体会

1.1思维导图

1.2.谈谈你对查找运算的认识及学习体会

本周进行了查找的学习,查找的知识相对于图和树来说就更加的简单和容易理解。在查找这一章,主要的查找方法有哈希表还有很多高效率的排序方法,比如堆排序,归并排序,还有快速排序。在希尔表中,根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。其中产生的希尔冲突可以用线性探查法和希尔链法来进行解决。在排序中,我们所学的高效的排序算法的时间复杂都是n(nlog2n),但是快速排序依旧是其中最佳,虽然他们都是高效的算法,但是这些算法都不稳定。

2.PTA实验作业

2.1.题目1:6-1 二叉搜索树的操作集 (30 分)

2.1.1设计思路(伪代码)

BinTree Delete(BinTree BST,ElementType X)
{
    定义tmp树结点
    if树空,直接输出"Not Found“
    else 找到要删除的X对应结点位置
    if X>当前结点 递归调用 Delete(BST->Right,X)
    if X<当前结点 递归调用 Delete(BST->Left,X)
    else if X=当前结点   判断当前结点左右孩子是否为空       
            if 左右孩子不空  
    调用函数FindMin(BST->Right)
    tmp->Data=BST->Data 保存数据
    BST树的右孩子置为结点 保证二叉搜索树的有序性
           else if
                   if左孩子为空, 右孩子置为结点
                   if右孩子为空,右孩子置为结点
    return BST
}

2.1.2代码截图



2.1.3本题PTA提交列表说明

2.2.题目2:6-3 二叉搜索树中的最近公共祖先 (25 分)

2.2.1设计思路(伪代码)

int LCA(Tree T,int u,int v)
{
    if T 为空,返回 ERROR
    else if   (Find(T,u)且Find(T,v))   结点在树中
    if T->key>u且T->key<v且T->key>v且T->key<u   返回 结点T-key  
            end if
    if T->key=u或T->key=v  返回 结点T->key  
            end if
    if T->key>u或T->key>v 递归函数LCA(T->Left,u,v)   
            end if
    if T->key<u且T->key<v 递归函数LCA(T->Right,u,v)   
            end if
                 end if
    返回ERROR
}

2.2.2代码截图

2.2.3本题PTA提交列表说明

2.3.题目3:7-1 QQ帐户的申请与登陆 (25 分)

2.3.1设计思路(伪代码)

调用Map函数,若输入的命令为申请,调用T.find函数检验id,若T.find函数等于T.end,说明STL容器中没有此账号,将密码附给账号,申请成功,否则说明账号已存在;若输入命令为老账户登录调用T.find函数检验id,若T.find函数等于T.end,说明账号输入错误,若T.find函数不等于T.end,说明账号存在,判断密码是否相等,若不等,则密码输入错误,若相等,则登录成功

2.3.2代码截图



2.3.3本题PTA提交列表说明

3.阅读代码

3.1 题目

3.2 解题思路

3.3 代码截图

3.4 学习体会

posted @ 2019-06-16 22:22  blame  阅读(189)  评论(0编辑  收藏  举报