#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node
{
ElementType* Data;
int len;
}Node,*StaticTable;
StaticTable Create(int len)
{
StaticTable s;
s->len = len;
s->Data = (ElementType *)malloc((len+1)*sizeof(ElementType));
return s;
}
StaticTable Read(StaticTable s)
{
int i;
for(i = 1;i <= s->len;i++)
scanf("%d",&s->Data[i]);
return s;
}
void Print(StaticTable s)
{
int i;
for(i = 1;i <=s->len;i++)
printf("%d\t",s->Data[i]);
printf("\n\n");
{
int i;
s->Data[0]=k;
for(i = s->len;s->Data[i]!=k;i--)
;
return i; //成功返回所在单元下标,不成功返回0
{
StaticTable my;
int find;
my = Create(10);
my = Read(my);
Print(my);
find = SequentialSearch(my,3);
}
#include <stdlib.h>
typedef int ElementType;
typedef struct Node
{
ElementType* Data;
int len;
}Node,*StaticTable;
StaticTable Create(int len)
{
StaticTable s;
s->len = len;
s->Data = (ElementType *)malloc((len+1)*sizeof(ElementType));
return s;
}
StaticTable Read(StaticTable s)
{
int i;
for(i = 1;i <= s->len;i++)
scanf("%d",&s->Data[i]);
return s;
}
void Print(StaticTable s)
{
int i;
for(i = 1;i <=s->len;i++)
printf("%d\t",s->Data[i]);
printf("\n\n");
}
//顺序查找
int SequentialSearch(StaticTable s,ElementType k){
int i;
s->Data[0]=k;
for(i = s->len;s->Data[i]!=k;i--)
;
return i; //成功返回所在单元下标,不成功返回0
}
//二分查找
int BinarySearch(StaticTable s,ElementType k)
{
int left,right,mid,NotFound=-1;
left = 1; //初始左边界
right = s->len; //初始右边界
while(left <= right)
{
mid = (left+right)/2; //计算中间元素坐标
if(k < s->Data[mid])
right = mid-1; //调整左边界
else if(k > s->Data[mid]) //调整右边界
left = mid+1;
else
return mid;
}
return NotFound; //查找不成功,返回-1
}
{
StaticTable my;
int find;
my = Create(10);
my = Read(my);
Print(my);
find = SequentialSearch(my,3);
printf("%d\n",find);
find = BinarySearch(my,3);
printf("%d",find);
}