非有序的静态查找表的查找某个元素的算法

#include <stdio.h>
#define MAX 10
#define LEN 4

typedef struct  {
	int id;
	char name[MAX];
}STU;//语句1 

typedef struct {

	STU * elem;
	int length;
}SSTable; 
STU * search(STU * ptr,int size,int id);//语句2
//语句2应该在语句1之前因为语句2使用了STU.
int search_seq(SSTable st,int id);


int main(void)
{
	STU stu[LEN]={{0,""},{1,"sss"},{2,"aaa"},{3,"ddd"}};
	int k=3;
	SSTable st={stu,LEN};
	
	/*if(search(stu,3,2)!= NULL)
		printf("%d,%s\n",search(stu,3,2)->id,search(stu,3,2)->name);
	else
		printf("no record!\n");*/
	/*	
	if(search_seq(st,k)!= NULL)
		printf("%d,%s\n",search_seq(st,k)->id,search_seq(st,k)->name);
	else
		printf("no record!\n");*/
	if(search_seq(st,k)==0)
		printf("no record!\n");
	else
	printf("%d,%s\n",stu[search_seq(st,k)].id,stu[search_seq(st,k)].name);


	
	
	return 0;
}

STU * search(STU * ptr,int size,int id)
{
	for(int i=0;i<size;i++)
	{
		if(ptr->id==id)
			return ptr;
		ptr++;
		if(i==size-1)
			return NULL;

	}

	
}
int  search_seq(SSTable st,int id)
{
	/*
	for(int i=(st.length-1);i>=0;i--)
	{
		if(st.elem->id==id)
			return st.elem;
		st.elem++;
		if(i==0)
			return NULL;
	}
	*/
   
    st.elem[0].id=id;
	for(int i=st.length-1;id!=st.elem[i].id;--i)
		continue ;
		return i;
		


	   



}

  

原文地址:https://www.cnblogs.com/jzhao/p/3065489.html