顺序表的存储
#include <stdio.h>#include <stdlib.h>typedef int KeyType;typedef struct {KeyType key; //关键子域 }ElemType;typedef struct {ElemType *R; //存储空间基地址 int length; //当前长度 }SSTable;
顺序表的建立
void CreateTable(SSTable &ST,int n){ST.R=new ElemType[n+1]; //开辟数组空间if(!ST.R) return ;ST.length=n;for(int i=1;i<=100;i++){ST.R[i].key=i;}}
折半查找
int Search_Bin(SSTable ST,KeyType key){int low=1,high=ST.length;int mid;while(low<=high){mid=(low+high)/2;if(key==ST.R[mid].key) return mid;else if(key<ST.R[mid].key) high=mid-1;else low=mid+1;}return -1;}
主函数调用
int main(){SSTable ST; printf("请输入建立顺序表的长度:\n");int m;scanf("%d",&m);CreateTable(ST,m);printf("请输入待查询的值:\n");int n;scanf("%d",&n);int index=Search_Bin(ST,n);if(index==-1) {printf("没有该值\n");}else printf("程序输出计算的位置为:%d\n",index);return 0;}
更多数据结构知识:
数据结构