/**
* ----顺序查找----
* 1.顺序表
* 2.指针(堆栈)
* 3.随机数(可无)
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//顺序表的数据结构
typedef int SElemType;
typedef struct {
SElemType *elem;
int SSTLength;
}SSTable;
/**
* --------查找某个值----
* @param ST
* @param key
* @return
*/
int SSTSearch(SSTable ST,SElemType key){
ST.elem[0]=key;//采用哨兵,便于从后往前找
int i;
for(i=ST.SSTLength-1;ST.elem[i]!=key;i--);//只要找到key跳出循环。数组下标从0开始。
return i;
}
/**
* ---初始化----
* @return
*/
void SSTInit(SSTable &ST,int len){
ST.SSTLength=len+1;
ST.elem=(SElemType *)malloc(sizeof(SElemType)*ST.SSTLength);//申请堆空间,空间大小为存储的数据类型*长度
srand(time(NULL));//生成随机数(考研用不着)
for(int i=1;i<ST.SSTLength;i++){
ST.elem[i]= rand()%100;//将随机数逐个赋值
}
}
/**
* ----打印----
*/
void SSTPrint(SSTable ST){
int i;
for(i=1;i<ST.SSTLength;i++){
printf("%3d",ST.elem[i]); //打印堆空间所存储的元素
}
}
int main() {
SSTable ST;
SSTInit(ST,10);//初始化
SSTPrint(ST);//打印顺序表
printf("\n");
int position;
SElemType x;
printf("Please enter value for x: \n");
scanf("%d",&x);
position= SSTSearch(ST,x);//返回查找元素的地址(第几个)
if(position){
printf("Search success. Position = %d\n",position);
} else{
printf("Search false.Sorry!\n");
}
return 0;
}
顺序查找(采用顺序表和堆栈)
最新推荐文章于 2024-06-25 22:53:19 发布