资源描述
数据结构--顺序表查找
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
int data[MAXSIZE];
int len;
typedef struct
{
int data[MAXSIZE];
int len;
} SeqList;
SeqList *Init_SeqList( )
{
SeqList *L;
L=(SeqList*)malloc(sizeof(SeqList));
L->len= -1;
return L;
}
//顺序查找
int SearchSeq(SeqList *S,int t)
{
int i;
for(i=0;i<S->len;i++)
if(t==S->data[i])
{
return i;
break;
}
if(i==S->len)
return -1;
}
//对顺序表进行排序
SeqList *Sort(SeqList *S)
{
int temp,i,j;
for (i=0;i<s->len;i++)
{
for (j=i+1;j<s->len;j++)
if(S->data[j]>S->data[j+1])
{
temp=S->data[j];S->data[j]=S->data[j+1];S->data[j+1]=temp;
}
}
for(int k=0;k<S->len;k++)
{
printf("%d ",S->data[k]);
}
return S;
}
//折半查找
int SearchBin(SeqList *S ,int t)
{
int mid,low=0,high=S->len-1;
while(low<=high)
{
mid=(low+high)/2;
if(t==S->data[mid])
return mid;
else if(t>S->data[mid]) low=mid+1;
else high=mid-1;
}
return -1;
}
int main()
{
SeqList *L=Init_SeqList();
int t1,t2,len,e;
printf("请输入顺序表的长度");
scanf("%d",&L->len);
printf("请输入顺序表中各元素:\n");
getchar();
for(int k=0;k<L->len;k++)
{
scanf("%d",&e);
L->data[k]=e;
}
printf("请输入要查找的数:\n");
scanf("%d",&t1);
int m=SearchSeq(L,t1);
if(m>-1)
printf("该查找的数顺序查找后在顺序表中的位置为%d:\n",m+1);
else printf("该数没有找到\n");
printf("排序之后的顺序表");
SeqList*S=Sort(L);
printf("请输入要查找的数:\n");
scanf("%d",&t2);
int s=SearchBin(S ,t2);
if(s>-1)
printf("该查找的数折半查找后在顺序表中的位置为%d:\n",s+1);
else printf("该数没有找到\n");
return 0;
}
展开阅读全文