一个数据结构题(C语言)

来源:百度知道 编辑:UC知道 时间:2024/05/07 17:24:58
在文件seqlist.h中已经给出线性表的定义,分别设计递归和非递归的算法实现在有序表中用二分查找法查找给定关键字记录。

/************************************/
/* 线性表检索用的头文件 */
/* 文件名:seqlist.h */
/************************************/
#include <stdio.h>
#define maxsize 100 /*预定义最大的数据域空间*/
typedef int datatype; /*假设数据类型为整型*/
typedef struct {
datatype data[maxsize]; /*此处假设数据元素只包含一个整型的关键字域*/
int len; /*线性表长度*/
} seqlist; /*预定义的顺序表类型*/
多谢!

int BiSearch(seqlist s, int k) //非递归
{
int low=0;
int high=s.len;
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(s.data[mid]==k) return mid;
else if(s.data[mid]<k) low = mid +1;
else high=mid-1;
}
return -1;
}
int BiSearch(seqlist s,int low,int high,int k)//递归
{
int mid;
if(low>high)
return -1;
else
{
mid=(high+low)/2;
if(s.data[mid]==k) return mid;
else if(s.data[mid]<k)
return BiSearch(s,mid+1,high,k);
else return BiSearch(s,low,mid-1,k);
}
}
刚刚编的,可能有漏洞,不过可以运行~

很麻烦啊