监视哨可以防止越界,可以不必每次查找时都检查是否到末尾了.
前提条件: 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;
}
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34652 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!