数据结构查找算法实验报告Word格式文档下载.docx

上传人:b****4 文档编号:7231493 上传时间:2023-05-08 格式:DOCX 页数:18 大小:184.49KB
下载 相关 举报
数据结构查找算法实验报告Word格式文档下载.docx_第1页
第1页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第2页
第2页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第3页
第3页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第4页
第4页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第5页
第5页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第6页
第6页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第7页
第7页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第8页
第8页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第9页
第9页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第10页
第10页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第11页
第11页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第12页
第12页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第13页
第13页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第14页
第14页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第15页
第15页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第16页
第16页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第17页
第17页 / 共18页
数据结构查找算法实验报告Word格式文档下载.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构查找算法实验报告Word格式文档下载.docx

《数据结构查找算法实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构查找算法实验报告Word格式文档下载.docx(18页珍藏版)》请在冰点文库上搜索。

数据结构查找算法实验报告Word格式文档下载.docx

5、详细设计表示:

6、用户手册:

程序运行后,用户首先要输入数据的个数。

接下来输入一组数据并根据提示进行顺序查找,二分查找,二叉排序树查找与哈希表查找等操作,由于操作直接简单这里不再详述。

7、调试报告:

应该说在调试这个程序的过程中自己发现了很多不足,这次实验让我学到了不少东西,但应该说这个程序可实现的功能还就是偏少,不太实用,接下来有待改进。

8、源代码清单与结果:

#include<

stdio、h>

#defineLENGTH100

stdlib、h>

time、h>

#defineINFMT"

%d"

#defineOUTFMT"

%d"

/*#defineNULL0L*/

#defineBOOLint

#defineTRUE1

#defineFALSE0

#defineLEN10000

typedefintElemType;

typedefstructBSTNode

{

ElemTypedata;

structBSTNode*lchild,*rchild;

}BSTNode,*BSTree;

typedefBSTreeBiTree;

/*插入新节点*/

voidInsert(BSTree*tree,ElemTypeitem)

BSTreenode=(BSTree)malloc(sizeof(BSTNode));

node->

data=item;

lchild=node->

rchild=NULL;

if(!

*tree)

*tree=node;

else

{

BSTreecursor=*tree;

while

(1)

if(item<

cursor->

data)

if(NULL==cursor->

lchild)

lchild=node;

break;

}

cursor=cursor->

lchild;

rchild)

rchild=node;

rchild;

return;

}

 

voidshowbitree(BiTreeT)

//递归显示二叉树的广义表形式

if(!

T){printf("

空"

);

return;

printf("

T->

data);

//打印根节点

if(T->

lchild||T->

{

putchar('

('

showbitree(T->

lchild);

//递归显示左子树

'

rchild);

//递归显示右子树

)'

}

/*查找指定值*/

BSTreeSearch(BSTreetree,ElemTypeitem)

BSTreecursor=tree;

while(cursor)

if(item==cursor->

returncursor;

elseif(item<

returnNULL;

/*中缀遍历*/

voidInorder(BSTreetree)

if(cursor)

Inorder(cursor->

printf(OUTFMT,cursor->

/*回收资源*/

voidCleanup(BSTreetree)

BSTreecursor=tree,temp=NULL;

Cleanup(cursor->

free(cursor);

voidsearchtree(BSTreeroot)

charchoice;

中序遍历的结果为:

\n"

Inorder(root);

\n\n"

ElemTypeitem;

BSTreeret;

/*二叉排序树的查找测试*/

do

{

\n请输入查找数据:

"

scanf("

&

item);

getchar();

Searching、、、\n"

ret=Search(root,item);

if(NULL==ret)

查找失败!

else

查找成功!

\n继续测试按y,退出按其它键。

choice=getchar();

}while(choice=='

y'

||choice=='

Y'

Cleanup(root);

searchhash(int*arr,intn)

{

inta[10];

intb,i,j,c;

j=1;

for(i=0;

i<

9;

i++)

a[i]=0;

以下为哈希表输出\n"

for(i=0;

n;

c=arr[i]%7;

A:

if(a[c]==0)a[c]=arr[i];

else{c=(c+1)%7;

j++;

a[c]++;

gotoA;

\n%d在哈希表的第%d位,第%d次放入哈希表\n"

arr[i],c,j);

j=1;

voidSequenceSearch(int*fp,intLength);

voidSearch(int*fp,intlength);

voidSort(int*fp,intlength);

voidSequenceSearch(int*fp,intLength)

intdata;

开始使用顺序查询、\n请输入您想要查找的数据、\n"

&

for(inti=0;

Length;

if(fp[i]==data)

经过%d次查找,查找到数据%d、\n"

i+1,data);

return;

经过%d次查找,未能查找到数据%d、\n"

i,data);

voidSearch(int*fp,intlength)

由于二分查找法要求数据就是有序的,现在开始为数组排序、\n"

Sort(fp,length);

数组现在已经就是从小到大排列,下面将开始查找、\n"

intbottom,top,middle;

bottom=0;

top=length;

inti=0;

while(bottom<

=top)

middle=(bottom+top)/2;

i++;

if(fp[middle]<

bottom=middle+1;

elseif(fp[middle]>

top=middle-1;

voidSort(int*fp,intlength)

现在开始为数组排序,排列结果将就是从小到大、\n"

inttemp;

length;

for(intj=0;

j<

length-i-1;

j++)

if(fp[j]>

fp[j+1])

temp=fp[j];

fp[j]=fp[j+1];

fp[j+1]=temp;

排序完成!

\n下面输出排序后的数组:

for(intk=0;

k<

k++)

%5d"

fp[k]);

structhash

{intkey;

intsi;

};

structhashhlist[11];

inti,adr,sum,d;

floataverage;

voidchash(int*arr,intn)

{for(i=0;

11;

{hlist[i]、key=0;

hlist[i]、si=0;

{sum=0;

adr=(3*arr[i])%11;

d=adr;

if(hlist[adr]、key==0)

{hlist[adr]、key=arr[i];

hlist[adr]、si=1;

else{do

{d=(d+(arr[i]*7)%10+1)%11;

sum=sum+1;

}while(hlist[d]、key!

=0);

hlist[d]、key=arr[i];

hlist[d]、si=sum+1;

}}

voiddhash(int*arr,intn)

{printf("

哈希表显示为:

%4d"

i);

哈希表关键字:

hlist[i]、key);

查找长度就是:

"

hlist[i]、si);

average=0、0;

average=average+hlist[i]、si;

average=average/n;

平均长度:

asl(%d)=%f\n"

n,average);

voidmain()

intcount;

intarr[LENGTH];

BSTreeroot=NULL,ret;

/*必须赋予NULL值,否则出错*/

BOOLfinish=FALSE;

请输入您的数据的个数:

count);

请输入%d个数据\n"

count);

count;

arr[i]);

item=arr[i];

if(-10000!

=item)

Insert(&

root,item);

当前已经生成的数列:

for(i=0;

arr[i]);

\n当前已经生成的二叉树:

showbitree(root);

intchoise=0;

do

\n1、使用顺序查询、\n2、使用二分查找法查找、\n3、利用二叉排序树查找、\n4、利用哈希表查找、\n5、退出\n"

choise);

if(choise==1)

SequenceSearch(arr,count);

elseif(choise==2)

Search(arr,count);

elseif(choise==3)

searchtree(root);

elseif(choise==4)

{chash(arr,count);

dhash(arr,count);

elseif(choise==5)

}while(choise==1||choise==2||choise==3||choise==4||choise==5);

输出与结果:

当程序开始运行时,显示如下:

当用户输入10并再次输入数据3214765098后,输出结果如下:

当用户输入1,在输入9后,输出结果如下:

当用户输入2,并输入3后,输出显示如下:

当用户在输入3,并且在输入6后,显示如下:

当用户输入4后,输出的哈希表如下:

当输入5后,程序结束。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2