scanf("%d",&a[i]);
printf("请输入要查找的数:\n");
scanf("%d",&x);
n=Found(a,x,m);
if(n==-1)
printf("查找失败");
else
printf("\n位置是%d\n",n);
}
1.2
#include
#include
typedef int DATATYPE; /*假定顺序表元素的类型为整型*/
#define maxsize 1024 /*假定顺序表的最大长度为1024*/
typedef struct
{
DATATYPE data[maxsize]; /*顺序表元素数组,第一个结点是data[0] */ int len; /*线性表中实际存放的数据个数*/
} SEQLIST;
/******************************************************************** *********/
void ListInit (SEQLIST *L)
//将表L清空(初始化)
{
L->len=0;
}
/******************************************************************** *********/
int ListLength(SEQLIST L)
//返回线性表L的元素个数
{
return(L.len);
}
int ListInsert(SEQLIST *L, int i, DATATYPE x)
//在顺序表L的第i个位置插入元素x,成功:1,失败:0
{
int j;
if ((L->len)>=maxsize)
{
printf("overflow\n");
return 0;
} //溢出
else
if((i<1)||(i>L->len+1))
{
printf("error\n");
return 0;
} //非法位置
else
{
for(j=L->len-1;j>=i-1;j--)
L->data[j+1]=L->data[j]; //结点后移
L->data[i-1]=x; //插入x
L->len=L->len+1; //表长加1
return(1); //成功}
}
void Listinput(SEQLIST *L,DATATYPE x)
{
int i,n;
printf("请输入要输入的数据个数:");
scanf("%d",&n);
for(i=0;i{
printf("请输入第%d个数据:",i+1);
scanf("%d",&(L->data[i]));
L->len++;
}
printf("输入成功!!");
}
int Listsearch(SEQLIST *L,DATATYPE K)
{ int low=0,mid,high=L->len-1;
while (low<=high)
{ mid=(low+high)/2; //整除
if (K==L->data[mid])
return mid;
if (Kdata[mid])
high=mid-1;
else low=mid+1;
}
return -1; //查找失败
}
main()
{
SEQLIST list;
int i,xuanze,p;
DATATYPE x;
char flag='Y';
ListInit (&list);
while(1)
{
printf(" 1、创建顺序表数组\n");
printf(" 2、查找数据\n");
printf(" 0、退出\n");
printf("\n");
printf("请选择:");
scanf("%d",&xuanze);
switch(xuanze)
{
case 1:
{
Listinput(&list,x);
break;
}
case 2:
{
while(toupper(flag)=='Y')
{
printf("\n请输入要查找的数据:");
scanf("%d",&p);
Listsearch(&list,p);
if(Listsearch(&list,p)==-1)
printf("查找失败!!\n");
else printf("查找成功!!\n");
printf("是否继续查找(y/n):");
scanf("%s",&flag);
}
break;
}
case 0:
{
return ;break;
}
default:
{
printf("谢谢使用!!");
break;
}
}
system("cls");
}
}