64,692
社区成员
发帖
与我相关
我的任务
分享
template<typename T>
class SqList
{
protected:
T * elem; //顺序动态储存空间的首地址
int listsize;//顺序表当前已分配的储存空间大小
int n; //顺序表当前元素个数
public:
int bin_search(T key); //有序顺序表折半查找
void clear();//把顺序表置空
Status deleElem(int i, T & e);//删除第i个元素
Status getElem(int i, T & e);//取第i个元素
int getListSize();//求顺序表中元素的个数
Status insert(int i, T & e);//在第i个元素之前插入一个元素
bool isEmpty();//判断顺序表是否为空
int locateElem(T e, Status(*compare)(T, T);//查找第1个与e满足compare()关系的元素序号
Status nextElem(T e, T & next_e);//返回某元素的后继
SqList<T>operator=(SqList<T> rightL);//重载赋值运算符的定义
Status priorElem(T e, T & prior_e);//返回某元素的前驱
int sequentialSearch(T e);//在顺序表中查找某元素
};
template<typename T>
int SqList<T>::bin_search(T key)//有序顺序表折半查找
{
int low, mid, high;
low = 0, high = n - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (elem[mid] == key)
return mid + 1;
else if (elem[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
return 0;
}