{数据结构}顺序查找

/****************

顺序表的查找 

*****************/

#include<stdio.h>

#include<stdlib.h>

typedef struct 

{

  int    *elem;

  int    length;

}SSTable;

 

void Initial_Seq(SSTable *ST)

{

  int i;

  printf("请输入表的长度:");

  scanf("%d",&(ST->length)); 

  ST->elem = (int *)malloc(sizeof(int)*(ST->length+1));

  printf("输入表中数据:");

  for(i = 1; i <= ST->length; i++)

  {

     scanf("%d",ST->elem+i);

  }

}

 

int Search_Seq(SSTable ST, int key)

{

  int i;

  ST.elem[0] = key;

  for(i = ST.length; ST.elem[i] != key; --i);

  return i;

}

 

int main()

{

  int x; 

  SSTable s;

  Initial_Seq(&s);

  printf("输入要查找的元素:"); 

  scanf("%d",&x);

  if(Search_Seq(s,x))

    printf("查找成功!");

  else

    printf("查找失败!/n"); 

 

  return 0;

}

 

/*******************

算法说明: 顺序查找(Sequential Search)的查找过程:从表中最后一个记录开始,逐个

进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,

找到所查记录,反之,若直至第一个记录,其关键字和给定值比较都不相等,则表明表中没

有所查记录,查找不成功

 

对于一个长度为n的查找表来说,应用顺序表进行查找,则需要分配(n+1)*sizeof(int)

个空间,因为顺序表的第一个元素,即elem[0]中存放的是要查找的元素key.这样做的目的

是不需要时刻判断是否遍历完表.由于在elem[0]中存放了key.因此在表中是一定能找到

key这个元素的,只不过看位置上的区别.如果位置不等于0,则说明表中存在该元素,如果

位置为0,则说明表中原本是没有key这个元素的.因此,通过返回找到元素的位置就能判断

是否找到该元素了. 

*********************/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值