#include<stdio.h>
#define ElemType int
#define MaxSize 10
2.顺序表类型定义
//顺序表的类型定义(静态分配)
typedef struct {
ElemType elem[MaxSize];//用静态数组存放数据元素
int length;//顺序表的当前长度}SeqList;
3.函数声明
/*函数声明*/voidInitList(SeqList&L);//1.初始化顺序表
bool AssignList(SeqList&L);//2.赋值
int Binary_Search(SeqList L, ElemType key);//3.折半查找
4.基本操作
4.1 初始化顺序表
//1.初始化顺序表voidInitList(SeqList&L){L.length =0;}
4.2 赋值
//2.赋值(仅做测试)
bool AssignList(SeqList&L){
int i =0;
ElemType x;scanf("%d",&x);while(x !=-1){//输入-1结束顺序表赋值if(L.length >= MaxSize)//判断当前存储空间是否已满,若已满,不能插入returnfalse;L.elem[i]= x;L.length++;
i++;scanf("%d",&x);}returntrue;}
4.3 折半查找★★★
//3.折半查找
int Binary_Search(SeqList L, ElemType key){
int low =0, high =L.length -1, mid;while(low <= high){
mid =(low + high)/2;//取中间位置if(L.elem[mid]== key)return mid;//查找成功返回所在位置elseif(L.elem[mid]> key)
high = mid -1;//前半部分继续查找else
low = mid +1;//后半部分继续查找}return-1;//查找失败}
4.4 main函数
int main(){
SeqList L;InitList(L);printf("顺序表赋值开始,请依次输入元素:");if(!AssignList(L))printf("输入元素个数大于顺序表长度,赋值失败!");else{printf("当前顺序表的长度为:%d\n",L.length);
int key;printf("请输入您要查找的值:");scanf("%d",&key);if(Binary_Search(L, key)==-1)printf("当前顺序表中无此元素!");elseprintf("您要查找的元素所在数组下标为:%d",Binary_Search(L, key));}return0;}