之前讨论了表结构链表与表——随心所欲地进出任何队列.制表的目的就是为了以后的查看或者查找方便,如果制表后又不在表上进行查找,那么制表就变得毫无意义了.
"查找"就是在一组数据项里面查找一个特定的元素.所以查找有时也称为搜索.但实际上搜索和查找也不是完全一样.查找要做的是在一个序列或集合里面查看是否存在某个特定的元素.这和一般的搜索并不完全相同,因为搜索并不一定要事先知道要搜索什么.事实上,查找是搜索的一个特例.
查找的结果只能有两种:成功和失败.
下面就给出最简单的查找方法---------顺序查找:
int list::sequentialSeaech(const int &target,int &position)//顺序查找
{
for(int i(0);i<count;++i) //从头开始,一个一个的查找
{
if(data[i] == target) //如果有与target相同的值,则返回position
{
position = i;
return success;
}
}
return overflow; //否则,报错
}
上述查找方法的成本最坏情况为表的长度;最好当然是1,即常数;平均来讲则需要比较一半的元素.如果表的元素个数为n,则平均成本为n/2,即O(n).