PTA函数题部分题解

1.8二分查找

在这里插入图片描述
这里就是一个简单二分函数,二分思想就是高中数学学过的二分,可以减少很多查找次数,它每次把区间一分为二,然后到它在的那个区间继续二分,直到找到它为止

Position BinarySearch( List L, ElementType X )
{
int l = 1, r = L->Last;
while(l <= r)
{
int mid = (l + r) / 2;
   if(mid > X)
 {
     r = mid - 1;
     mid = (l + r) / 2;
 }
   else if( mid < X)
 {
     l = mid + 1;
     mid = (l + r) / 2;
 }
   else
 {
     return mid
 }
}
   return NotFound;
}

5.10 线性探测法的查找函数

在这里插入图片描述
这是一个开放地址散列表,散列函数的构造在题目中已经给出了,我们要做的只是在散列表里面找出我们要找的元素,要遍历散列表,模板和网课里面的差不多。

Position Find( HashTable H, ElementType Key )
{
    Position p = Hash(Key, H->TableSize);
    int sum = 1;
    while (sum != H->TableSize) {
        if (H->Cells[p].Info == Empty || H->Cells[p].Info == Deleted || H->Cells[p].Data == Key) {
            return p;
        }
        p = (p + 1) % H->TableSize;//利用取模来实现回到头部
        sum++;
    }
    return ERROR;
}

6.1 邻接矩阵存储图的深度优先遍历

在这里插入图片描述
和一般的DFS没什么区别,就是把迷宫字符串数组改成了图Graph会有点麻烦要用它指来指去的

void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) )
{
    Vertex i;
    Visited[V] = true;
    Visit(V);
    for(i = 0;i < Graph->Nv;i++)
    {
        if(Graph->G[V][i] == 1 && !Visited[i])//邻接矩阵建立时1代表有边,此时如果还没被访问就递归
            DFS(Graph,j,Visit);
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值