按值查找是在顺序表L中查找第一个元素等于e的元素,并返回其位序。
时间复杂度O(n)。
按位查找是在顺序表中查找位序为i的元素,并返回e。
时间复杂度O(1)。
#include <iostream>
#include<stdlib.h>
#define initsize 10
using namespace std;
typedef struct{
int *data;
int length;
int maxsize;
}sqlist;
void initlist(sqlist &l) //初始化list
{
l.data=(int *)malloc(initsize*sizeof(int));
l.length=0;
l.maxsize=initsize;
}
void fuzhilist(sqlist &l) //赋初始值
{
for(int i=0;i<6;i++)
{
l.data[i]=i+3;
l.length++;
}
}
int getelem(sqlist l,int i) //按位查找
{
if(i<1||i>l.length)
return 0;
else return l.data[i-1];
}
int locatelem(sqlist l,int e) //按值查找
{
for(int i=0;i<l.length;i++)
{
if(l.data[i]==e)
return i+1;
}
return 0;
}
void printlist(sqlist l) //打印表
{
for(int i=0;i<l.length;i++)
{
cout<<"number "<<i+1<<" is "<<l.data[i]<<endl;
}
}
int main() {
sqlist l;
initlist(l);
fuzhilist(l);
printlist(l);
cout<<locatelem(l,7)<<endl; //按值查找,查找e为7的位序
cout<<getelem(l,3)<<endl; //按位查找,查找位序为3的元素
return 0;
}