/*静态查找表*/
#include<stdio.h>
#define Maxsize 100
typedef int KeyType;
typedef struct
{
KeyType key; /*关键字*/
int number; /*学号*/
char name[7]; /*姓名*/
char sex[2]; /*性别*/
}TableElem;
typedef struct
{
TableElem elem[Maxsize];
int n; /*最后一个数据元素的下标*/
}SqTable;
void Create(SqTable *st)
{
int i;
printf("请输入学生信息\n");
for(i=1;i<=3;i++)
{
printf("No %d:",i);
scanf("%d%d%s%s",&st->elem[i].key,
&st->elem[i].number,st->elem[i].name,st->elem[i].sex);
}
st->n=i;
}
int Search(SqTable *st,KeyType key)
{
int i;
st->elem[0].key=key;/*设置岗哨*/
i=st->n; /*设置比较位置初值*/
while(st->elem[i].key!=key)
i--; /*未找到时,修改比较位置继续查找。*/
return i;
}
Get(SqTable *st,int x)
{
int i;
i=Search(st,x);
if(i==0)
printf("查找失败!\n");
else
{
printf("输出学生信息:");
printf("%d,%d,%s,%s\n",st->elem[i].key,
st->elem[i].number,st->elem[i].name,st->elem[i].sex);
}
}
main()
{
int key;
SqTable st;
Create(&st);
printf("查找key所在位置的学生信息:");
scanf("%d",&key);
Get(&st,key);
}
编译效果