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

该代码示例展示了如何在C语言中实现顺序查找算法,包括顺序表的数据结构定义、初始化、打印和查找功能。程序使用哨兵简化查找过程,并通过随机数填充顺序表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * ----顺序查找----
 * 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值