顺序查找(采用顺序表和堆栈)

/**
 * ----顺序查找----
 * 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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值