数据结构实验——分类二叉树和堆排序.doc

数据结构实验——分类二叉树和堆排序.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验——分类二叉树和堆排序

数据结构《实验3》实验报告 分类二叉树及堆排序构建 1、预习要求:分类二叉树结构定义。 2、实验目的: (1)了解分类二叉树结构概念、查找算法程序。 (2)掌握堆排序算法程序。 3、实验内容及要求: (1)建立包含10个结点的分类二叉树(树结构和数据元素的值由自己设定); (2)完成分类二叉树中序遍历程序; (3)给出程序和遍历程序的结果。 附源程序 #include stdlib.h #include stdio.h #define MaxSize 10 typedef struct { int Num; float score1; float score2; float score3; }Student;//储存学生信息,依次为学号,语文成绩,数学成绩,英语成绩 typedef struct { float total;//学生总分 Student * p; }HeapNode; // typedef struct BinaryTreeNode { HeapNode data; BinaryTreeNode * LChild; BinaryTreeNode * RChild; }BinaryTreeNode; //分类二叉树的结点 int HeapSize=9; void Displayarray(HeapNode a[])//输出堆排序的结果 { int i; for(i=1;i10;i++) printf( 学号%d 总分%f\n,a[i].p-Num,a[i].total); printf(\n); } void Menu_name() //作者信息 { printf(\n\n\n\n\n\n\n); printf( *************************************************\n); printf( 堆排序和分类二叉树的查找\n\n); printf( 制作: \n 学号 0909050108\n); printf( 班级: \n); printf( 指导老师: \n); printf( **************************************************\n); printf(\n\n\n\t\t); } void MaxHeapInit (HeapNode a[], int size) {// 对数组a 中的数据初始化为一个最大堆 HeapNode *heap=a; //数组a用Heap指向 HeapSize=size; //数组中数据元素个数存放到HeapSize for (int i = HeapSize/2; i = 1; i--) //从最后一个结点的根开始,直到第一个结点 { heap[0] = heap[i]; // 将子树根结点值复制到工作空间heap[0]中 int son = 2*i; // son的双亲结点是heap[0]的目标位置, // son首先指向i的左孩子 while (son = HeapSize) {// 找左右孩子中较大结点 if (son HeapSize heap[son].total heap[son +1].total) son ++; // son HeapSize时,存在右孩子,如左孩子小于右孩子,son指向右孩子 if (heap[0].total= heap[son].total) // 大孩子再与工作空间中结点值再比较 break; //工作空间中值大,找到heap[0]的目标位置 heap[son /2] = heap[son]; // 将大孩子上移至双亲位置 son*= 2; // son下移一层到上移的结点(大孩子)位置 } heap[son /2] = heap[0]; //heap[0]存放到目标位置 } } //最大堆中删除顶结点,并放入x中返回算法 bool MaxHeapDelete (HeapNode a[], HeapNode x) { HeapNode *heap = a; if (HeapSize

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档