网络设计实验报告.docx

上传人:b****6 文档编号:5164885 上传时间:2022-12-13 格式:DOCX 页数:10 大小:16.53KB
下载 相关 举报
网络设计实验报告.docx_第1页
第1页 / 共10页
网络设计实验报告.docx_第2页
第2页 / 共10页
网络设计实验报告.docx_第3页
第3页 / 共10页
网络设计实验报告.docx_第4页
第4页 / 共10页
网络设计实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

网络设计实验报告.docx

《网络设计实验报告.docx》由会员分享,可在线阅读,更多相关《网络设计实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

网络设计实验报告.docx

网络设计实验报告

实验名称:

第9章实验

实验类型:

验证性实验

姓名:

车红岫

实验日期:

2013.6

1.问题描述

以下四个验证性实验都做。

(1)顺序查找验证

(2)折半查找验证

(3)二叉排序树的建立

(4)哈希表的建立

2.数据结构设计

(1)顺序查找验证

typedefstruct{

KeyType*elem;//零号单元留空

intlength;//表长度

}SSTable;

(2)折半查找验证

intscore[100];

intlength;

intkey;

(3)二叉排序树的建立

typedefstructnode

{

datatypekey;

structnode*lchild,*rchild;

}bsnode;

(4)哈希表的建立

typedefstructLnode

{

intdata;

structLnode*next;

}Lnode,*ListLink;//建立链表结点

typedefstruct

{

intpos;

ListLinkfirstnode;//建立数组结点

}HashBox;

typedefstruct

{

HashBoxHArrary[INIT_MAXSIZE];//建立哈希数组(哈希表的地址表头)

}HashArray;

3.算法设计

4.界面设计

(1)顺序查找验证

(2)折半查找验证

(3)二叉排序树的建立

(4)哈希表的建立

5.运行、测试

(一)顺序查找验证

(1)运行程序,显示菜单

(2)输入n

(3)输出结果

(2)折半查找验证

(1)运行程序,显示菜单

(2)输入n

(3)输出结果

(3)二叉排序树的建立

(1)运行程序,显示菜单

(2)输入n

(3)输出结果

(4)哈希表的建立

(1)运行程序,显示菜单

(2)输入n

(3)输出结果

6.实验收获及思考

建立哈希表时没有考虑冲突处理问题,做程序时要谨慎小心。

附录:

源代码

(1)顺序查找验证

#include

#include

#defineMAX_LENGTH100

typedefintKeyType;

typedefstruct{

KeyType*elem;//零号单元留空

intlength;//表长度

}SSTable;

intSearch_Seq(SSTableST,KeyTypekey){

inti;

ST.elem[0]=key;//“哨兵”

for(i=ST.length;ST.elem[i]!

=key;i--)

;//从后往前找

returni;//找不到时,i为0

}

voidmain()

{

inti,key;

SSTableT;

T.elem=(KeyType*)malloc(sizeof(KeyType));

printf("输入数据个数\n");

scanf("%d",&T.length);

for(i=1;i<=T.length;i++){

printf("输入数据%d;\n",i);

scanf("%d",&T.elem[i]);

}

for(i=1;i<=T.length;i++)

printf("%5d",T.elem[i]);

printf("\n输入要查找的数据\n");

scanf("%d",&key);

i=Search_Seq(T,key);

printf("位置是%d\n",i);

system("pause");

}

(2)折半查找验证

#include

#include

#defineOK1

#defineERROR0

voidmain()

{

intscore[100];

intlength;

intkey;

printf("输入数据个数:

\n");

scanf("%d",&length);

for(inti=1;i<=length;i++)

{printf("输入第%d个元素",i);

scanf("%d",&score[i]);

}

printf("\n输入要查找的关键字\n");

scanf("%d",&key);

intlow,high,mid;

low=1;

high=length;

while(low<=high)

{

mid=(low+high)/2;

if(score[mid]==key)//找到待查元素

{printf("数据位置%d",mid);

system("pause");

}

elseif(key

high=mid-1;//继续在前半区间进行查找

elseif(key>score[mid])

low=mid+1;//继续在后半区间进行查找

}

printf("无此数据");

system("pause");

}

(3)二叉排序树的建立

#include

#include

typedefintdatatype;

typedefstructnode

{

datatypekey;

structnode*lchild,*rchild;

}bsnode;

typedefbsnode*bstree;

voidinsertbstree(bstree*t,datatypex)

{

bstreef,p;

p=*t;

while(p)

{

f=p;

if(xkey)

p=p->lchild;

else

p=p->rchild;

}

p=(bstree)malloc(sizeof(bsnode));

p->key=x;

p->lchild=p->rchild=NULL;

if(*t==NULL)

*t=p;

else

{

if(x<(f->key))

f->lchild=p;

else

f->rchild=p;

}

}

bstreecreatbstree(bstreet)

{

datatypekey;

scanf("%d",&key);

while(key!

=-1)

{

insertbstree(&t,key);

scanf("%d",&key);

}

returnt;

}

voidinorder(bstreet)

{

if(t)

{

inorder(t->lchild);

printf("%d",t->key);

inorder(t->rchild);

}

}

voidqorder(bstreet)

{if(t)

{

printf("%d",t->key);

qorder(t->lchild);

qorder(t->rchild);

}

}

voidhorder(bstreet)

{

if(t)

{

horder(t->lchild);

horder(t->rchild);

printf("%d",t->key);

}

}

intmain()

{

bstreet=NULL,p;

printf("请输入一个-1为结束标记的结点序列:

\n");

p=creatbstree(t);

printf("中序遍历:

");

inorder(p);

printf("\n");

printf("先序遍历:

");

qorder(p);

printf("\n");

printf("后序遍历:

");

horder(p);

system("pause");

return0;

}

(4)哈希表的建立

#include

#include

#defineINIT_MAXSIZE10

typedefstructLnode

{

intdata;

structLnode*next;

}Lnode,*ListLink;//建立链表结点

typedefstruct

{

intpos;

ListLinkfirstnode;//建立数组结点

}HashBox;

typedefstruct

{

HashBoxHArrary[INIT_MAXSIZE];//建立哈希数组(哈希表的地址表头)

}HashArray;

voidInitHashList(HashArray&l,intinput[],intaccount);//建立哈希表

voidVistHashList(HashArray&l);//遍历输出哈希表

intmain(void)

{intaccount=0,i=0,input[256];

HashArrayl;

printf("请输入要插入哈希表元素的个数:

");

scanf("%d",&account);

printf("请输入要插入哈希表的元素:

");

for(i=0;i

{scanf("%d",&input[i]);

}

InitHashList(l,input,account);

printf("\n哈希表如下:

\n");

VistHashList(l);

return0;

}

voidInitHashList(HashArray&l,intinput[],intaccount)//建立哈希表

{inti=0,j=0,pos=0;

ListLinkq,p;

charch='A';

for(i=0;i

{l.HArrary[i].pos=ch++;

l.HArrary[i].firstnode=NULL;

}

for(i=0;i

{pos=input[i]%INIT_MAXSIZE;//计算元素地址

q=newLnode;//申请结点

q->data=input[i];

q->next=NULL;

if(l.HArrary[pos].firstnode==NULL)//判断当前地址表头是否还没有元素连入

l.HArrary[pos].firstnode=q;

else

{p=l.HArrary[pos].firstnode;

while(p->next!

=NULL)

{p=p->next;//找到链表表尾

}

p->next=q;//将要插入的结点接入表尾

}

}

}

voidVistHashList(HashArray&l)//输出哈希表

{ListLinkp;

inti;

for(i=0;i

{printf("%c.",l.HArrary[i].pos);

p=l.HArrary[i].firstnode;

while(p!

=NULL)

{printf("->%d",p->data);

p=p->next;

}

printf("\n");

}

}

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1