监视哨

监视哨可以防止越界,可以不必每次查找时都检查是否到末尾了.

 

前提条件: 0号元素不存内容,留出来存监视哨

 

 

/* 没有采用监视哨的算法 */
int SeqSearch(RecordList l, KeyType k)
{
    l.r[0].key = k;
    i = l.length;

    while (i>=1 && l.r[i].key != k)    // 每次需要循环判断i是否越界
        i--;
    
    if (i>=1)
        return i;
    else
        return 0;    // 返回0表示没找到
}

/* 采用了监视哨的算法 */
intSeqSearch(RecordList l, KeyType k)
{
    l.r[0].key = k;
    i = l.length;

    while (l.r[i].key != k)    // 不仅省去了每次的判断,且找不到的话,也是可以返回0
        i--;
    
    return i;
}

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值