网络设计实验报告.docx
- 文档编号:5164885
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:10
- 大小:16.53KB
网络设计实验报告.docx
《网络设计实验报告.docx》由会员分享,可在线阅读,更多相关《网络设计实验报告.docx(10页珍藏版)》请在冰豆网上搜索。
网络设计实验报告
实验名称:
第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(x 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"); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)