1、实验五 查找得实现 一、 实验内容 1、建立一个线性表,对表中数据元素存放得先后次序没有任何要求.输入待查数据元素得关键字进行查找。为了简化算法,数据元素只含一个整型关键字字段,数据元素得其余数据部分忽略不考虑.建议采用前哨得作用,以提高查找效率。 2、查找表得存储结构为有序表,输入待查数据元素得关键字利用折半查找方法进行查找.此程序中要求对整型量关键字数据得输入按从小到大排序输入。 二、 源代码与执行结果 1、 #include〈iostream> using namespace std ; #define MAX 100 #define KeyTyp
2、e int typedef struct { KeyType key ; }DataType ; typedef struct { ﻩDataType elem[MAX] ; int length ; }SeqTable , *PSeqTable ; PSeqTable Init_SeqTable() { ﻩPSeqTable p = (PSeqTable)malloc(sizeof(SeqTable)) ; ﻩif(p != NULL) { p->length = 0 ; ﻩreturn p ; } ﻩelse { ﻩ cout〈<"O
3、ut of space!”〈〈endl ;
ﻩ return NULL ;
ﻩ}
}
int insert_SeqTable(PSeqTable p ,KeyType x)
{
if(p->length 〉= MAX)
ﻩ{
ﻩcout〈<”overflow!"<
4、ength ; s、elem[n]、key = k ; ﻩwhile(s、elem[i]、key != k) ﻩﻩi ++ ; ﻩif(i == n) return —1 ; else ﻩﻩreturn i ; } void main() { PSeqTable p ; int i , n ; ﻩKeyType a ; p = Init_SeqTable() ; ﻩcout<〈"请输入数据个数:" ; cin>>n ; cout〈<"请输入数据:”<〈endl ; for(i = 0 ; i < n ; i ++) ﻩ{ ﻩcin
5、〉>a ; ﻩ insert_SeqTable(p , a) ; } ﻩcout<<"请输入要查找得数据,输入32767结束:” ; cin〉〉a ; ﻩwhile(a != 32767) ﻩ{ i =SeqSearch(*p , a) ; if(i == -1) { ﻩﻩﻩcout<<”无此数据!请重新输入:"<〈endl ; ﻩ ﻩcin>>a ; ﻩ} ﻩﻩelse ﻩﻩ{ ﻩ cout<〈"该数据得位置就是:"〈
6、
2、
#include
7、 if(p != NULL) { p->length = 0 ; ﻩﻩreturn p ; ﻩ} else ﻩ{ ﻩcout〈<"Out of space!"〈<endl ; return NULL ; ﻩ} } int insert_BinTable(PBinTable p ,KeyType x) { if(p—〉length >= MAX) { ﻩ cout<<"overflow!”<〈endl ; ﻩ return 0 ; ﻩ} ﻩp-〉elem[p—>length]、key = x ; p->length ++ ; ﻩr
8、eturn 1 ; } int BinSearch(BinTable s ,KeyType k) { ﻩint low , mid , high ; ﻩlow = 0 ; high = s、length-1 ; while(low <= high) { ﻩﻩmid = (low+high)/2 ; ﻩ if(s、elem[mid]、key == k) ﻩﻩﻩreturn mid ; ﻩ else if(s、elem[mid]、key > k) ﻩﻩ high = mid - 1 ; ﻩﻩelse ﻩlow = mid +1 ; ﻩ} ﻩreturn
9、—1 ; } void main() { PBinTable p ; ﻩint i , n ; ﻩKeyType a ; p = Init_BinTable() ; cout<<”请输入数据个数:” ; cin〉>n ; ﻩcout<〈"请按从小到大得顺序输入数据:”〈<endl ; for(i = 0 ; i 〈 n ; i ++) ﻩ{ cin>〉a ; ﻩ insert_BinTable(p , a) ; } ﻩcout<<"请输入要查找得数据,输入32767结束:” ; ﻩcin〉>a ; while(a != 32767) { ﻩi =BinSearch(*p , a) ; if(i == -1) ﻩ{ ﻩﻩcout〈〈"无此数据!请重新输入:"〈〈endl ; cin>>a ; ﻩ} ﻩelse { ﻩcout<<"该数据得位置就是:”〈






