数据结构实验五 查找的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五查找得实现

一、实验内容

1、建立一个线性表,对表中数据元素存放得先后次序没有任何要求.输入待查数据元素得关键字进行查找。为了简化算法,数据元素只含一个整型关键字字段,数据元素得其余数据部分忽略不考虑.建议采用前哨得作用,以提高查找效率。

2、查找表得存储结构为有序表,输入待查数据元素得关键字利用折半查找方法进行查找.此程序中要求对整型量关键字数据得输入按从小到大排序输入。二、源代码与执行结果

1、

#include〈iostream>

using namespace std;

#define MAX 100

#defineKeyType int

typedef struct

{

KeyType key ;

}DataType;

typedef struct

{

ﻩDataTypeelem[MAX];

intlength ;

}SeqTable ,*PSeqTable ;

PSeqTable Init_SeqTable()

{

ﻩPSeqTable p =(PSeqTable)malloc(sizeof(SeqTable)) ;

ﻩif(p !=NULL)

p->length= 0 ;

ﻩreturnp;

}

ﻩelse

ﻩcout〈<"Outof space!”〈〈endl ;

ﻩreturn NULL;

ﻩ}

int insert_SeqTable(PSeqTable p,KeyType x)

{

if(p->length〉= MAX)

ﻩ{

ﻩcout〈<”overflow!"<

ﻩreturn 0 ;

ﻩ}

p—>elem[p—>length]、key=x ;

p-〉length++;

return1 ;

intSeqSearch(SeqTable s ,KeyTypek)

{

ﻩint n ,i = 0;

ﻩn = s、length ;

s、elem[n]、key=k;

ﻩwhile(s、elem[i]、key != k)

ﻩﻩi ++ ;

ﻩif(i == n)

return —1 ;

else

ﻩﻩreturn i ;

}

voidmain()

PSeqTable p;

inti, n;

ﻩKeyType a ;

p =Init_SeqTable();

ﻩcout<〈"请输入数据个数:" ;

cin>>n ;

cout〈<"请输入数据:”<〈endl;

for(i= 0 ; i<n ;i++)

ﻩ{

ﻩcin〉>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<〈"该数据得位置就是:"〈

ﻩﻩcin〉〉a;

ﻩ}

ﻩ}

2、

#include

usingnamespace std;

#define MAX 100

#define KeyType int

typedef struct

{

KeyType key ;

}DataType;

typedefstruct

ﻩDataType elem[MAX] ;

ﻩintlength ;

}BinTable ,*PBinTable ;

PBinTableInit_BinTable()

ﻩPBinTable p = (PBinTable)malloc(sizeof(BinTable)) ;

if(p != NULL)

p->length= 0;

ﻩﻩreturn p ;

ﻩ}

else

ﻩ{

ﻩcout〈<"Out ofspace!"〈<endl ;

returnNULL ;

ﻩ}

int insert_BinTable(PBinTable p ,KeyType x){

if(p—〉length >=MAX)

ﻩcout<<"overflow!”<〈endl ;

ﻩreturn 0 ;

ﻩ}

ﻩp-〉elem[p—>length]、key =x ;

p->length++ ;

ﻩreturn 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)

ﻩﻩﻩreturnmid;

ﻩelse if(s、elem[mid]、key >k)

ﻩﻩhigh=mid-1 ;

ﻩﻩelse

ﻩlow = mid +1 ;

ﻩ}

ﻩreturn —1;

}

voidmain()

PBinTablep ;

ﻩinti,n ;

ﻩKeyType a;

p =Init_BinTable();

cout<<”请输入数据个数:”;

cin〉>n;

ﻩcout<〈"请按从小到大得顺序输入数据:”〈<endl;

for(i = 0 ;i〈n; i ++)

ﻩ{

cin>〉a;

相关文档
最新文档