#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 顺序表的查找
typedef int ElemType;
typedef struct{
ElemType *elem; // 整型指针,申请的堆空间的起始地址存入elem
int TableLen; // 存储动态数组里边元素的个数
}SSTable;
// 初始化顺序表
void ST_Init(SSTable &ST, int len){
// 多申请一个位置,用来存哨兵
ST.TableLen = len + 1;
ST.elem = (ElemType *)malloc(sizeof(ElemType) * ST.TableLen);
int i;
srand(time(NULL)); // 随机数生成
for(i = 1; i < ST.TableLen; i++){
ST.elem[i] = rand() % 100; // 确保随机生成的数 在0到99之间
}
}
// 打印顺序表
void ST_print(SSTable ST){
int i;
for(i = 1; i < ST.TableLen; i++){
printf("%3d", ST.elem[i]);
}
printf("\n");
}
// 顺序表的查找
int Search_Seq(SSTable ST, ElemType key){
ST.elem[0] = key; // key存在0号位置,作为哨兵
int i;
for(i = ST.TableLen - 1; ST.elem[i] != key; i--); // 从后往前找,如果找到了,循环结束时的i就是对应的位置
return i;
}
int main(){
SSTable ST;
ST_Init(ST, 10);
ST_print(ST);
ElemType key;
printf("please input search key: ");
scanf("%d", &key);
int pos;
pos = Search_Seq(ST, key);
if(pos){
printf("find key, pos = %d\n", pos);
}else{
printf("not find\n");
}
return 0;
}