当前位置: 首页 > news >正文

为女朋友做的表白网站网站图片特效源码

为女朋友做的表白网站,网站图片特效源码,怎样找外贸客户啊,怎样在网上注册公司#x1f525;博客主页#xff1a;小王又困了 #x1f4da;系列专栏#xff1a;数据结构 #x1f31f;人之为学#xff0c;不日近则日退 ❤️感谢大家点赞#x1f44d;收藏⭐评论✍️ 目录 一、二叉树的顺序结构 #x1f4d2;1.1顺序存储 #x1f4d2;1.2堆的性质… 博客主页小王又困了 系列专栏数据结构 人之为学不日近则日退 ❤️感谢大家点赞收藏⭐评论✍️ 目录 一、二叉树的顺序结构 1.1顺序存储 1.2堆的性质 1.3堆的分类 二、堆的实现 2.1堆的创建 2.2堆的初始化 2.3堆的插入 2.4向上调整数据 2.5堆的删除 2.6向下调整数据 2.7堆的销毁 ️前言 在上一期的文章中我们学习了一些二叉树的知识也了解了堆的概念。堆是一颗完全二叉树分为大堆和小堆今天我们将实现堆的各种功能。 一、二叉树的顺序结构 1.1顺序存储 顺序结构存储就是使用数组来存储一般使用数组只适合表示完全二叉树因为不是完全二叉树会有空间的浪费。而现实使用中只有堆才会使用数组来存储。二叉树顺序存储在物理上是一个数组在逻辑上是一颗二叉树。 1.2堆的性质 堆中某个节点的之总是不大于或不小于其父亲节点的值堆是一颗完全二叉树 1.3堆的分类 小堆树中任意一个父亲都小于等于孩子大堆树中任意一个父亲都大于等于孩子 二、堆的实现 2.1堆的创建 堆的逻辑结构是树形结构是我们想象出来的实际上我们操作的数组所以堆的创建和顺序表的结构相同。 typedef int HPDateType; typedef struct Heap {HPDateType* a;int size;int capacity; }HP; 2.2堆的初始化 我们有两种初始化的方式一种是在初始化阶段不开辟空间在插入过程中进行扩容另一种是在初始化阶段就开辟空间。 void HeapInit(HP* php) {assert(php);php-a NULL;php-size 0;php-capacity 0; } void HeapInit(HP* php) {assert(php); php-size 0;php-capacity 5;php-a (HPDateType*)malloc(sizeof(HPDateType) * capacity);if (tmp NULL){perror(malloc);exit(-1);} } 2.3堆的插入 堆是使用顺序结构的数组来存储的我们使用尾插插入数据更方便然后将数据调整到合适的位置。 void HeapPush(HP* php, HPDataType x) {assert(php);// 扩容if (php-size php-capacity){int newCapacity php-capacity 0 ? 4 : php-capacity * 2;HPDataType* tmp (HPDataType*)realloc(php-a, sizeof(HPDataType) * newCapacity);if (tmp NULL){perror(realloc fail);exit(-1);}php-a tmp;php-capacity newCapacity;}php-a[php-size] x;php-size;AdjustUp(php-a, php-size - 1); } 如图在小堆中插入5050比它的父亲小所以要交换两数的位置。我们知道孩子的下标通过 parent(child-1)/2 就可以得到父亲的下标然后交换两数。 2.4向上调整数据 如果是小堆存储我们通过孩子的下标找到父亲比较两数如果孩子小于父亲就交换然后在向上比较如果孩子不小于父亲就跳出循环。 void Swap(HPDataType* p1, HPDataType* p2) {HPDataType tmp *p1;*p1 *p2;*p2 tmp; }void AdjustUp(HPDataType* a, int child) {int parent (child - 1) / 2;while (child 0){if (a[child] a[parent]){Swap(a[child], a[parent]);child parent;parent (parent - 1) / 2;}else{break;}} } 2.5堆的删除 我们使用挪动覆盖的方法删除根会使关系混乱剩下的值不一定是堆而且效率很低。这里提供一种更好的方法将根和最后一个值交换然后删除最后调整数据。 void HeapPop(HP* php) {assert(php);assert(php-size 0);Swap(php-a[0], php-a[php-size - 1]);--php-size;AdjustDown(php-a, php-size, 0); } 这里要注意有数据的时候才能删除所以要加入 assert(php-size 0) 进行判断。 2.6向下调整数据 如果是小堆存储我们要找到左右孩子中较小的数然后与父亲交换再找到下一层重复步骤直到找到叶节点结束。 void AdjustDown(HPDataType* a, int n, int parent) {//默认左孩子是较小的int child parent * 2 1;while (child n){// 找出小的那个孩子if (child 1 n a[child 1] a[child]){child;}if (a[child] a[parent]){Swap(a[child], a[parent]);// 继续往下调整parent child;child parent * 2 1;}else{break;}} } 2.7堆的销毁 我们使用动态开辟内存要及时释放空间并置为空指针不然会造成数据泄露。 void HeapDestroy(HP* php) {assert(php);free(php-a);php-a NULL;php-size php-capacity 0; } 本次的内容到这里就结束啦。希望大家阅读完可以有所收获同时也感谢各位读者三连支持。文章有问题可以在评论区留言博主一定认真认真修改以后写出更好的文章。你们的支持就是博主最大的动力。
http://www.yutouwan.com/news/468364/

相关文章:

  • 网站怎么建设在哪里接单银川做网站哪家公司好
  • 安康网站建设公司价格百度 wordpress
  • 网站建设找超速云网站app下载平台怎么做
  • 烟台网站建设哪家专业本地上海集团网站建设
  • 网站开发维护入哪个科目网站开发到发布
  • 网站建设需要多少厦门seo代理商
  • 现在网站建设怎么收费怀宁县住房和建设局网站
  • 网站你懂我意思正能量晚上不用下载直接进入产品设计论文
  • 邢台wap网站建设报价wordpress 拖拽排序插件
  • 衡阳市网站建设注册网站引流
  • 营销网站建立wordpress 个人介绍
  • 如何设置网站付费阅读下载网站开发
  • 包装设计模板网站成都定制公交app
  • 我的网站域名免费网页制作成品
  • 银行网站建设方案蒙牛企业网站建设规划书
  • 网站主域名绿色系网站
  • 深圳网站建设联系电话济南网站建设q.479185700惠
  • 试析媒体网站品牌建设做网站开发的是不是程序员
  • 可以直接进入的舆情网站wordpress作品展示模板
  • 做网站公司怎样云南app开发系统
  • 自建网站做外贸好做吗wordpress get_the_category_list
  • 美食教做网站大连零基础网站建设培训哪里有
  • 做新的网站seo代替wordpress
  • 亳州公司做网站国外ui设计网站
  • 外贸网站建设哪里实惠做网站起什么名字好呢
  • 开福区城乡建设局门户网站响应式商城网站
  • 网站购物车实现徐州百度快照优化
  • 网站规划步骤有哪些安卓优化大师官方版本下载
  • 营销型网站建设推荐乐云践新护卫神安装wordpress
  • 在那个网站可买做鞋子的羊毛wordpress之搜索标题