试验报告模板

时间:2024.3.31

国脉信息学院

(程序设计类课程)

实验报告

20##年   11月   日


实验项目列表


福建农林大学计算机与信息学院实验报告

系:计算机科学与技术       专业:                  年级:                     

姓名:张三        学号: 091150002         实验室号___  _    计算机号93      

实验时间: 2012.6.1   指导教师签字:                               成绩:       

                                     实验七检索

一、     实验目的和要求

1)                掌握检索的不同方法,并能用高级语言实现检索算法。

2)                熟练掌握顺序表和有序表的检索方法,以及静态检索树的构造方法和检索算法,理解静态检索树的折半检索方法。

3)                熟练掌握二叉排序树的构造和检索方法。

4)                熟悉各种存储结构的特征以及如何应用树结构解决具体问题。

二、     实验内容和原理

实验内容:

1)      编程实现在二叉检索树中删除一个结点的算法。

2)      编程实现Fibonacci检索算法。

实验原理:

1)构造排序树,每输入一个数就进行排序,选择插入的结点,删除结点,没删除一个节点就返回到构造排序树的方法。

2)Fibonacci数的定义为f0=0,f1=1,fi=f(i-1)+f(i-2)(i≥2)。由此得Fibonacci数列为0,1,1,2,3,5,8,13,21,34,55,89,144,……

设数组F中元素按关键字值从小到大顺序排列,并假定元素个数n比某个Fibonacci  树fi小1,即n=fi-1。第一次用待查关键字k与F[f(i-1)],Key比较,其算法描述 如下:

① 若k=F[f(i-1)],Key,则检索成功,F[f(i-1)]为k所在记录。

② 若k<F[f(i-1)],Key,则下一次的检索范围为下标1到f(i-1),序列长度为f(i-1)。

③ 若k>F[f(i-1)],Key,则下一次的检索范围为下标f(i+1)+1到fi-1,序列长度为(fi-1)-(f(i-1)+1)+1=fi-f(i-1)-1=f(i-2)-1

设F是顺序存储的线性表且满足F[1],key≤F[2],key≤…≤F[n]。key,k是已知的关键字值,在F中检索关键字值为k的记录。若找到返回其下标值,否则返回0.

三、     实验环境

Windows XP系统

visual c++6.0

四、     算法描述及实验步骤

实验习题一:

#include"stdio.h"

#include"malloc.h"

struct BTnode

{

int data;

struct BTnode *lchild,*rchild;

}*root;

typedef struct BTnode Node,*Nodep;

void createtree(int data)

{

Node *node,*p,*q;

node=(Nodep)malloc(sizeof(Node));

node->data=data;

node->lchild=0;

node->rchild=0;

if(root==0)

{

root=node;

return;

}

else

{

p=root;

while(p!=0)

{

if(data<p->data)

{

q=p;

p=p->lchild;

if(p==0)

q->lchild=node;

}

else

if(data>p->data)

{

q=p;

p=p->rchild;

if(p==0)

q->rchild=node;

}

else

break;

}

}

}

void showtree(struct BTnode *proot,struct BTnode *m,int space)

{

int i;

char b;

if(proot!=0)

{

for(i=1;i<=space-3;i++)

printf("");

if(space-3>=0)

printf("---->");

if(proot==root)

printf("%d\n",proot->data);

else

{

if(m->data>proot->data)

b='L';

else

b='R';

printf("%d (%c)",proot->data,b);

printf("\n");

}

m=proot;

showtree(proot->lchild,m,space+6);

showtree(proot->rchild,m,space+6);

}

}

Nodep deletep(Node *p)

{

Node *q,*t;

t=p;

if(p->lchild!=0)

{

p=p->lchild;

q=p;

while(p->rchild!=0)

{

q=p;

p=p->rchild;

}

if(p==q)

{

p->rchild=t->rchild;

free(t);

return(p);

}

if(p->lchild!=0)

q->rchild=p->lchild;

else

q->rchild=0;

p->lchild=t->lchild;

p->rchild=t->rchild;

free(t);

return(p);

}

else

if(p->rchild!=0)

{

p=p->rchild;

q=p;

while(p->lchild!=0)

{

q=p;

p=p->lchild;

}

if(p==q)

{

p->lchild=t->lchild;

free(t);

return(p);

}

if(p->rchild!=0)

q->lchild=p->rchild;

else

q->lchild=0;

p->rchild=t->rchild;

p->lchild=t->lchild;

free(t);

return(p);

}

else

{

free(p);

return(0);

}

}

Nodep deleteBTnode(int x)

{

Node *p=root,*q;

while(p!=0)

{

q=p;

if(p->data>x)

if(p->lchild)

p=p->lchild;

else

break;

else

if(p->data<x)

if(p->rchild)

p=p->rchild;

else

break;

if(p->data==x)

break;

}

if((p==root)&&(p->data==x))

root=deletep(p);

else

if((p==q->lchild)&&(p->data==x))

q->lchild=deletep(p);

else

if((p==q->rchild)&&(p->data==x))

q->rchild=deletep(p);

else

if(p->data!=x)

{printf("can not found the data you want to delete,please check it!\n");

return 0;

}

return root;

}

int main()

{char ch;

int data;

printf("Enter 'c' create tree,Enter 'd' delete a node:");

scanf("%c",&ch);

getchar();

root=0;

while(ch=='c'||ch=='d')

{if(ch=='c')

{printf("please input the key:");

scanf("%d",&data);

getchar();

createtree(data);

showtree(root,0,0);

}

else

{printf("please input the key of the node you want del:");

scanf("%d",&data);

getchar();

if(deleteBTnode(data))

showtree(root,0,0);

}

printf("Enter 'c' create tree,Enter 'd' delete a node:");

scanf("%c",&ch);

}

return 0;

}

实验习题二:

#include "stdio.h"

typedef int keytype;

typedef int datatype;

typedef struct node

{

    int key;

 }rectype;

int fibonacci(int n) 

{

    if(n==0) return 0;

    else

       if(n==1) return 1;

       else

           return fibonacci(n-1)+fibonacci(n-2); }

void printData(rectype R[],int n)

{

    int i;

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

    {

       printf("%5d",R[i].key); 

       if(i%8==0) printf("\n"); }

    printf("\n");

}

int fibsearch(rectype R[],keytype K,int n) 

{

    int m,i,p,q,t;

    for(m=0;fibonacci(m)<=(n+1);m++){  }  

    m--;

    i = fibonacci(m-1); 

    p = fibonacci(m-2); 

    q = fibonacci(m-3);  

    while(i>=0 && i<=n)  

    {

       if(K == R[i].key)         

       {

           return i;   }          

       else if(K < R[i].key) 

       {

           i = i-q;   

           t = p;        

           p = q; 

           q = t-q; }

       else if(K > R[i].key) 

           {

              i=i+q; 

              p=p-q;

              q=q-p;

       }

    }

    return 0;

}

void main()

{

    int m,i,k,n;

    rectype R[20];

    printf("Enter k num:");

    scanf("%d",&k);

    printf("enter R[20]:");

    for(i=1;i<=20;i++)

    {

       scanf("%d",&R[i].key);

    }  

    printData(R,20);

    m=fibsearch(R,k,20);

    if(m == 0)

    {

       printf("Not found!\n");

    }

    else

       printf("The Key has been found at R[%d]\n",m);

    getchar();

}

五、     调试过程

1)

构建二叉排序树:

删除二叉树的节点:

2)

在创建结构体时未定义key.

六、     实验结果

1)          成功实现删除二叉检索树上删除结点的算法。

成功创建二叉检索树:

删除结点成功:

删除结点失败:

2)             

在Fibonacci数列没有找到关键字的情况:

在Fibonacci数列找到关键字的情况:

七、     总结

1)              掌握了二叉排序树的构造和检索方法。

2)              删除二叉检索树的结点时,必须保证删除后的二叉树仍是一棵二叉检索树。

3)              二叉检索树很方便查找数据,因为它的排列是有一定顺序的,即左子树<根<右子树。

4)              除此之外,还进一步了解了其他的检索方法。


第二篇:接地装置试验报告模板


接地装置试验报告

委托单位:***变电站   设备编号:       试验类型:预防性试验       试验依据:DL/T 596-1996

试验负责人:                     试验员:

更多相关推荐:
实验报告格式模板-供参考

实验名称:粉体真密度的测定粉体真密度是粉体质量与其真体积之比值,其真体积不包括存在于粉体颗粒内部的封闭空洞。所以,测定粉体的真密度必须采用无孔材料。根据测定介质的不同,粉体真密度的主要测定方法可分为气体容积法和…

试验报告模板20xx

混凝土结构基本原理试验课程作业装订线LENGINEERING试验报告试验名称试验课教师姓名学号手机号理论课教师日期年月日装订线混凝土结构基本原理试验课程作业COLLEGEOFCIVILENGINEERING1试...

实验报告 范本

研究生实验报告范本实验课程实验名称实验地点学生姓名学号指导教师范本实验时间年月日一实验目的熟悉电阻型气体传感器结构及工作原理进行基于聚苯胺敏感薄膜的气体传感器的结构设计材料制作材料表征探测单元制作与测试实验结果...

试验报告样本

实验报告实验课程学生姓名学号专业班级南昌大学实验报告实验类型验证综合设计创新实验日期实验成绩实验一机械零件产品的合格性检测一实验项目名称机械零件产品的合格性检测二实验目的使学生对公差与技术测量这门课程有一个整体...

测试报告模板(完整版)

项目名称系统测试报告平台测试小组20xx年5月5日监管COE质量管理部第1页共12页监管COE质量管理部第2页共12页目录目录目录1第一章引言311项目概述3111编写目的31213预期读者3术语定义3第二章测...

实验报告模板(文字格式,具体排版)

北京信息科技大学黑体1号居中实验报告宋体2号加粗居中课程名称学院专业学生姓名班级学号任课老师起止时间200年月日至200年月日以上宋体四号居中目录目录宋体三号加粗居中第一章1112第二章2122第X章结束语参考...

试验报告的基本格式要求

宜昌市科诚检测有限公司试验报告的基本格式要求1适用范围本要求适用于湖北葛洲坝试验检测有限公司基地及各项目试验室编写的试验报告。2通用要求编码条理清晰,排版合理,报告整体美观、整洁、严肃。报告纸张大小在没有特殊要…

实验报告模板

锤击法测量两端固支梁的模态参数实验报告学生姓名班级学号1实验的性质任务和基本要求一本实验课的性质工程结构振动与控制是船舶与海洋工程专业学生必修的一门专业技术基础课具有较强的综合性实践性和应用性实验教学是其重要组...

10KV电流互感器试验报告模板

610KV电流互感器电气试验报告委托单位变电站设备编号试验类型预防性试验试验依据DLT59619xx试验负责人试验人员

试验方案和试验报告撰写要求与模版20xx

装订线20xx年混凝土结构基本原理试验课程试验方案和试验报告撰写要求与模板1提交时间20xx年1月5日周一830110013301700接收2提交地址林峰和黄庆华土木楼A506办公室电话65982928赵勇土木...

10KV试验报告单模板

10KV电压互感器试验报告单高压开关试验数据供电局配电变压器电气试验报告单委托单位社会保障局专用配电房试验性质交接试验编号050803111委托单位开闭所厂名西安神电试验编号20xx4121委托单位临江门变电站...

试验大纲(报告)

工地试验大纲报告为了土谷塘坝顶大门机是否达到有关标准以及设计的要求需进行载荷试验其中包括空载试验额定载荷试验静载试验及动载试验根据GB5905起重机试验规范和程序及DLT5019水利水电工程启闭机制造安装及验收...

试验报告模板(47篇)