• 领导讲话
  • 自我介绍
  • 党会党课
  • 文秘知识
  • 转正申请
  • 问题清单
  • 动员大会
  • 年终总结
  • 工作总结
  • 思想汇报
  • 实践报告
  • 工作汇报
  • 心得体会
  • 研讨交流
  • 述职报告
  • 工作方案
  • 政府报告
  • 调研报告
  • 自查报告
  • 实验报告
  • 计划规划
  • 申报材料
  • 当前位置: 勤学考试网 > 公文文档 > 实践报告 > 正文

    2021年数据结构实验报告中央电大

    时间:2020-11-19 12:54:35 来源:勤学考试网 本文已影响 勤学考试网手机站

    试验汇报(五)

    专业名称

    课程名称

    批改老师

    主持老师

    试验成绩

    校外评阅老师

    试验名称 查找

    使用关键设备 PC, VC++6.0

    试验要求

    1.掌握折半查找算法步骤和实现方法;

    2.掌握二叉排序树性质、结构方法;

    3.按试验内容完成相关程序,并用实例进行测试,验证其正确性。

    试验汇报内容:

    试验5.1 折半查找

    设计程序代码以下:

    #include<stdio.h>

    #include<string.h>

    #define N 5

    struct student{

    char name[10];

    float avg;

    }

    void insort(struct student s[],int n)

    {

    int low,hight,mid,k;

    char y[10];

    float x;

    low=1;

    hight=n;

    strcpy(y,s[0].name );

    x=s[0].avg ;

    while(low<=hight)

    {

    mid=(low+hight)/2;

    if(x>s[mid].avg )

    hight=mid-1;

    else

    low=mid+1;

    }

    for(k=0;k<low-1;k++){

    strcpy(s[k].name,s[k+1].name) ;

    s[k].avg =s[k+1].avg ;

    }

    printf("%d",low);

    strcpy(s[low-1].name ,y) ;

    s[low-1].avg =x;

    }

    void main()

    {

    Struct student a[N]=

    {{"caozh",96},{"cheng",95},{"zhao",93},{"wang",92},{"chen",91}};

    struct student stu[N];

    int i;

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

    stu[i+1]=a[i];

    printf("初始 %d 位同学信息表\n",MAX);

    printf("排名 姓名 平均分数\n");

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

    printf("%d: %6s %3.2f\n",i,stu[i].name,stu[i].avg);

    printf("\n");

    printf("\n");

    printf("请输入学生姓名: ");

    scanf("%s",stu[0].name );

    printf("\n");

    printf("请输入平均成绩: ");

    scanf("%f",&stu[0].avg );

    printf("\n");

    insort(stu,N);

    printf("折半排序后同学信息表\n",MAX);

    printf("排名 姓名 平均分数\n");

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

    {

    printf("%d: %6s %3.2f\n",i+1,stu[i].name,stu[i].avg);

    }

    printf("\n");

    }

    程序运行结果以下:

    试验5.2 二叉排序树建立

    设计程序代码以下:

    #include<stdio.h>

    #include<stdlib.h>

    #define MAX 5

    typedef struct Bnode

    {

    int key;

    struct Bnode *left;

    struct Bnode *right;

    }Bnode;

    Bnode * btInsert(int x,Bnode *root);

    void Inorder(Bnode *root);

    void main()

    {

    int i;

    int a[MAX]={60,40,70,20,80};

    Bnode * root=NULL;

    printf("按关键字序列建立二叉排序树\n");

    for(i=0;i<MAX;i++) printf("%d ",a[i]);

    printf("\n");

    for(i=0;i<MAX;i++) root=btInsert(a[i],root);

    printf("中序遍历二叉排序树\n");

    Inorder(root);

    printf("\n");

    }

    Bnode * btInsert(int x,Bnode * root)

    {

    Bnode *p,*q;

    int flag=0;

    p=(Bnode *)malloc(sizeof(Bnode));

    p->key=x;

    p->right=p->left=NULL;

    if(root==NULL)

    { root=p; return p; }

    q=root;

    while(flag==0)

    {

    if(q->key>x)

    {

    if(q->left!=NULL)

    q=q->left;

    else

    {

    q->left=p;

    flag=1;

    }

    }

    else

    {

    if(q->right!=NULL)

    q=q->right;

    else

    {

    q->right=p;

    flag=1;

    }

    }

    }

    return root;

    }

    void Inorder(Bnode *root)

    {

    if(root!=NULL) {

    Inorder(root->left);

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

    Inorder(root->right);

    }

    }

    程序运行结果以下:

    • 下载文档
    • 收藏
    • 0

    • 考试时间
    • 范文大全
    • 作文大全
    • 课程
    • 试题
    • 招聘
    • 文档大全

    推荐访问