+ -
当前位置:首页 → 问答吧 → 静态查找中哨兵的作用

静态查找中哨兵的作用

时间:2011-07-23

来源:互联网

数据结构第9章中顺序查找ADT如下:
int Search_Seq(SSTable,KeyType key)
{
  ST.elem[0].key = key; //哨兵
  for(i=ST.length; !EQ(ST.elem[i].key,key);--i) //从后往前找
  return i;
}
书中说到,查找之前先对ST.elem[0]的关键字赋值key,目的在于免去查找过程中每一步都要检测整个表是否查找完毕。
这句话如何理解?每一次查找的时候不还得挨着找一遍吗?
不太理解这句话。烦请高手指导。

作者: FirstMrWu   发布时间: 2011-07-23

你想想:当目标在数组里面的时候,返回的是他的下标,也就是非0值,当都找不到的时候,但是由于有这句话ST.elem[0].key = key,所以查找到头的时候也找到了,只是这是人为的,返回0。所以,根据返回值可以确定。

作者: justlovetao   发布时间: 2011-07-23