假如你要从一个顺序线性表根据值或着位序查询某个元素,其本质核心就是对顺序表的遍历查找。
按值查找:在顺序表L中查找给定关键字值的元素,返回其位序
按值查找:在顺序表L中根据位序查找其值
按值查找
int GetValueElem(SeqList L,int e){//在顺序表L中找值等于e的元素,并返回其位序
for (int i = 0; i <L.length; i++) {
if(L.rData[i]==e){
return i+1;
}
}
return 0;
}
按位查找
int GetLocateValue(SeqList L,int i){//在顺序表L中查找位序为i的元素,并返回其值
return L.rData[i-1];
}
全部代码:
#include <stdio.h>
#include <stdlib.h>
#define InitSize 10
typedef struct {
int length;
int maxsize;
int * rData;
}SeqList;
SeqList InitSeqList(){//顺序表初始化
SeqList SeqListL;
SeqListL.rData=(int *)malloc(InitSize*sizeof (int));
SeqListL.length=0;
SeqListL.maxsize=InitSize;
return SeqListL;
}
void Show_Seq(SeqList SeqL){
for (int i = 0; i <SeqL.length; i++) {
printf("%d—",SeqL.rData[i]);
}
}
int GetValueElem(SeqList L,int e){//在顺序表L中找值等于e的元素,并返回其位序
for (int i = 0; i <L.length; i++) {
if(L.rData[i]==e){
return i+1;
}
}
return 0;
}
int GetLocateValue(SeqList L,int i){//在顺序表L中查找位序为i的元素,并返回其值
return L.rData[i-1];
}
int main() {
system("chcp 65001");
SeqList SeqL=InitSeqList();
for (int i = 1; i <=InitSize; i++) {
SeqL.rData[i-1]=i;
SeqL.length++;
}
printf("原顺序表:");
Show_Seq(SeqL);
int ElemI=GetValueElem(SeqL,3);
printf("\n值为3的元素位序为:%d\n",ElemI);
int ElemValue=GetLocateValue(SeqL,7);
printf("\n位序为7的元素值为:%d\n",ElemValue);
return 0;
}