您的位置:首页 > 理论基础 > 数据结构算法

{数据结构}顺序查找

2009-12-02 16:44 323 查看
/****************

顺序表的查找

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

#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这个元素的.因此,通过返回找到元素的位置就能判断

是否找到该元素了.

*********************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: