查找分为两大类:按位查找 按值查找
【按位查找】:时间复杂度为0(1)
//顺序表的基本操作之查找
【静态分配方式】
GetElem(L,i):按位查找,获取表L中第i个位置的元素值
#define MaxSize 10 //定义最大长度
typedef struct{
ElemType data[MaxSize]; //用静态的“数组”存放数据元素
int length; //顺序表的当前长度
}SqList; //顺序表的类型定义(静态分配方式)
ElemType GetElem(SqList L,int i){
return L.data[i-1]
}
【动态分配】
#define InitSize 10 //顺序表的初始长度
typedef struct{
ElemType *data; //指示动态分配数组的指针 指针指向顺序表当中第一个数据元素
int MaxSize; //顺序表的最大容量
int length; //顺序表的当前长度
}SeqList; //顺序表的类型定义(动态分配方式)
ElemType GetElem(SeqList L,int i){
return L.data[i-1];
}
【按值查找】:时间复杂度均为0(n)
【按值查找】
LocateElem(L,e):按值查找操作。L中找e
【动态分配】
#define InitSize 10 //顺序表的初始长度
typedef struct{
ElemType *data; //指示动态分配数组的指针 指针指向顺序表当中第一个数据元素
int MaxSize; //顺序表的最大容量
int length; //顺序表的当前长度
}SeqList; //顺序表的类型定义(动态分配方式)
//在顺序表L中查找第一个元素值等于e的元素,并返回其位序
int LocateElem(SeqList L,ElemType e){
for(int i=0;i<L.length;i++)
if(L.data[i]==e) //基本数据类型:int char double float可以直接用运算符”=='进行比较 结构体不能用==比较
return i+1;//数组下标为i的元素值等于e,返回其位序i+1
return 0; //退出循环,说明查找失败
}
【静态分配】与【动态分配】函数定义方式相同
基本数据类型:int char double float可以直接用运算符”=='进行比较 结构体不能用==比较
【结构体比较方法 定义函数进行比较】
//依次对比各个分量来判断两个结构体是否相等
【结构体比较方法 定义函数进行比较】
//依次对比各个分量来判断两个结构体是否相等
typedef struct {
int num;
int people;
}Customer;
bool isCustomerEqual (Customer a,Customer b){
if (a.num == b.num && a.people == b.people)
return true;
else
return false;
}