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

永州做网站快速优化seo软件推广方法

永州做网站,快速优化seo软件推广方法,外贸网站seo公司排名,无锡网站推广优化公司目录 Test.c测试代码 test1 test2 test3 🎇Test.c总代码 Heap.h头文件&函数声明 头文件 函数声明 🎇Heap.h总代码 Heap.c函数实现 ☁HeapInit初始化 ☁HeapDestroy销毁 ☁HeapPush插入数据 【1】插入数据 【2】向上调整Adjustup❗ …

目录

Test.c测试代码

test1

test2

test3

🎇Test.c总代码 

Heap.h头文件&函数声明

头文件

函数声明

🎇Heap.h总代码

Heap.c函数实现 

☁HeapInit初始化

☁HeapDestroy销毁

☁HeapPush插入数据

【1】插入数据

【2】向上调整Adjustup❗

数据交换Swap

☁HeapPop删除数据

【1】交换数据

【2】删除数据

【3】向下调整Adjustdown❗

假设法找Child 

数据交换Swap

☁HeapTop堆顶元素

☁HeapSize堆元素个数

☁HeapEmpty判断为空否

🎇Heap.c总代码 


拖了很久的【堆】,本周主要学习就是【数据结构】。本章【堆】是以【小堆】为例子。

  •  堆表面是数组,内核是完全二叉树/满二叉树
  • ❗HeapPush
  • ❗HeapPop
  • 函数如果需要多次复用才会提取出来
  • free会对NULL进行检查 
  • 用循环写起来很方便的代码就不要使用递归
  • do while循环用于无论循环条件如何,循环都会执行一次
  • 步骤--注意事项--循环结束条件--时间复杂度(下篇重点讲)

Test.c测试代码

#include"Heap.h"
int main()
{HP php;//HP*ph=&php//test1(&php);test2(&php);test3(&php);return 0;
}

test1

//建堆
void test1(HP* ph)
{int a[] = { 4,5,3,7,8,2,1,9,10 };HeapInit(ph);int i = 0;for (i = 0; i < sizeof(a) / sizeof(a[0]); i++){HeapPush(ph, a[i]);}
}

test2

//找出堆的前K个数字
void test2(HP* ph)
{int a[] = { 4,5,3,7,8,2,1,9,10 };HeapInit(ph);int i = 0;int k = 5;for (i = 0; i < sizeof(a) / sizeof(a[0]); i++){HeapPush(ph, a[i]);}while (k--){printf("%d ", HeapTop(ph));HeapPop(ph);}printf("\n");
}

 

test3

//排序--升序
void test3(HP* ph)
{int a[] = { 4,5,3,7,8,2,1,9,10 };HeapInit(ph);int i = 0;for (i = 0; i < sizeof(a) / sizeof(a[0]); i++){HeapPush(ph, a[i]);}while (HeapEmpty(ph))//为NULLflase{printf("%d ", HeapTop(ph));HeapPop(ph);}
}

🎇Test.c总代码 

#include"Heap.h"
//建堆
void test1(HP* ph)
{int a[] = { 4,5,3,7,8,2,1,9,10 };HeapInit(ph);int i = 0;for (i = 0; i < sizeof(a) / sizeof(a[0]); i++){HeapPush(ph, a[i]);}
}//找出堆的前K个数字
void test2(HP* ph)
{int a[] = { 4,5,3,7,8,2,1,9,10 };HeapInit(ph);int i = 0;int k = 5;for (i = 0; i < sizeof(a) / sizeof(a[0]); i++){HeapPush(ph, a[i]);}while (k--){printf("%d ", HeapTop(ph));HeapPop(ph);}printf("\n");
}void test3(HP* ph)
{int a[] = { 4,5,3,7,8,2,1,9,10 };HeapInit(ph);int i = 0;for (i = 0; i < sizeof(a) / sizeof(a[0]); i++){HeapPush(ph, a[i]);}while (HeapEmpty(ph))//为NULLflase{printf("%d ", HeapTop(ph));HeapPop(ph);}
}int main()
{HP php;//HP*ph=&php//test1(&php);test2(&php);test3(&php);return 0;
}

Heap.h头文件&函数声明

头文件

#pragma once
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>
typedef int HpDataType;//定义堆结构体
typedef struct Heap
{HpDataType* a;int size;int capacity;
}HP;

函数声明

//常用接口
void HeapInit(HP* php);
void HeapDestroy(HP* php);
void HeapPush(HP* php,HpDataType x);
void HeapPop(HP* php);
HpDataType HeapTop(HP* php);
int HeapSize(HP* php);
bool HeapEmpty(HP* php);

🎇Heap.h总代码

#pragma once
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>typedef int HpDataType;//定义堆结构体
typedef struct Heap
{HpDataType* a;int size;int capacity;
}HP;//常用接口
void HeapInit(HP* php);
void HeapDestroy(HP* php);
void HeapPush(HP* php,HpDataType x);
void HeapPop(HP* php);
HpDataType HeapTop(HP* php);
int HeapSize(HP* php);
bool HeapEmpty(HP* php);

Heap.c函数实现 

☁HeapInit初始化

#include"Heap.h"
void HeapInit(HP* php)
{assert(php);php->a = NULL;php->size = 0;php->capacity = 0;
}

☁HeapDestroy销毁

void HeapDestroy(HP* php)
{assert(php);free(php->a);//不用担心为NULL,free会对NULL做检查php->size = php->capacity = 0;
}

☁HeapPush插入数据

 先插入一个10到数组的尾上,再进行向上调整算法,直到满足堆。

【1】插入数据

void HeapPush(HP* php, HpDataType x)
{assert(php);//扩容if (php->size == php->capacity){int newcapacity = php->capacity == 0 ? 4 : 2 * php->capacity;HpDataType* tmp = (HpDataType*)realloc(php->a, newcapacity * sizeof(HpDataType));if (tmp == NULL){printf("fail realloc");return;}php->capacity = newcapacity;php->a = tmp;}//插入数据php->a[php->size] = x;php->size++;//向上调整//数组,调整元素下标AdjustUp(php->a, php->size - 1);
}

【2】向上调整Adjustup❗

//向上调整算法
void AdjustUp(HpDataType* a, int child)
{int parent = (child - 1) / 2;while ( child > 0 )//此刻parent已经数组越界{if (a[child] < a[parent]){//交换Swap(&a[child], &a[parent]);child = parent;parent = (parent - 1) / 2;}else//child>=parent{break;}}
}
数据交换Swap
//交换
void Swap(HpDataType* H1, HpDataType* H2)
{HpDataType tmp = *H1;*H1 = *H2;*H2 = tmp;
}

☁HeapPop删除数据

删除堆是删除堆顶的数据,将堆顶的数据根最后一个数据一换,然后删除数组最后一个数据,再进行向下调整算法。

//删除
void HeapPop(HP* php)
{assert(php);assert(php->size);//1.交换Swap(&php->a[0], &php->a[php->size - 1]);//2.删除php->size--;//3.向下调整--数组,结束条件size有关,调整的位置parentAdjustdown(php->a, php->size, 0);
}

【1】交换数据

	//1.交换Swap(&php->a[0], &php->a[php->size - 1]);

【2】删除数据

	//2.删除php->size--;

【3】向下调整Adjustdown❗

//3.向下调整--数组,结束条件size有关,调整的位置parent
Adjustdown(php->a, php->size, 0);
//向下调整
void Adjustdown(HpDataType* a, int size, int parent)
{//假设法int child = parent * 2 + 1;while (child < size )//why child < size && child+1<size{if (child + 1 < size && a[child + 1] < a[child]){child++;}//比较if (a[child] < a[parent]){//交换Swap(&a[child], &a[parent]);parent = child;child = child * 2 + 1;}else//>={break;}}
}
假设法找Child 
	int child = parent * 2 + 1;if (a[child + 1] < a[child]){child++;}
数据交换Swap
//交换
void Swap(HpDataType* H1, HpDataType* H2)
{HpDataType tmp = *H1;*H1 = *H2;*H2 = tmp;
}

☁HeapTop堆顶元素

HpDataType HeapTop(HP* php)
{assert(php);assert(php->size);return php->a[0];
}

☁HeapSize堆元素个数

int HeapSize(HP* php)
{assert(php);return php->size;
}

☁HeapEmpty判断为空否

bool HeapEmpty(HP* php)
{assert(php);return php->size != 0;//!=0是true不为NULL执行   ==0 flase 不执行
}

🎇Heap.c总代码 

#include"Heap.h"
void HeapInit(HP* php)
{assert(php);php->a = NULL;php->size = 0;php->capacity = 0;
}void HeapDestroy(HP* php)
{assert(php);free(php->a);//不用担心为NULL,free会对NULL做检查php->size = php->capacity = 0;
}
//交换
void Swap(HpDataType* H1, HpDataType* H2)
{HpDataType tmp = *H1;*H1 = *H2;*H2 = tmp;
}//向上调整算法
void AdjustUp(HpDataType* a, int child)
{int parent = (child - 1) / 2;while ( child > 0 )//此刻parent已经数组越界{if (a[child] < a[parent]){//交换Swap(&a[child], &a[parent]);child = parent;parent = (parent - 1) / 2;}else//child>=parent{break;}}
}void HeapPush(HP* php, HpDataType x)
{assert(php);//扩容if (php->size == php->capacity){int newcapacity = php->capacity == 0 ? 4 : 2 * php->capacity;HpDataType* tmp = (HpDataType*)realloc(php->a, newcapacity * sizeof(HpDataType));if (tmp == NULL){printf("fail realloc");return;}php->capacity = newcapacity;php->a = tmp;}//插入数据php->a[php->size] = x;php->size++;//向上调整//数组,调整元素下标AdjustUp(php->a, php->size - 1);
}//向下调整
void Adjustdown(HpDataType* a, int size, int parent)
{//假设法int child = parent * 2 + 1;while (child < size )//why child < size && child+1<size{if (child + 1 < size && a[child + 1] < a[child]){child++;}//比较if (a[child] < a[parent]){//交换Swap(&a[child], &a[parent]);parent = child;child = child * 2 + 1;}else//>={break;}}
}
//删除
void HeapPop(HP* php)
{assert(php);assert(php->size);//1.交换Swap(&php->a[0], &php->a[php->size - 1]);//2.删除php->size--;//3.向下调整--数组,结束条件size有关,调整的位置parentAdjustdown(php->a, php->size, 0);
}HpDataType HeapTop(HP* php)
{assert(php);assert(php->size);return php->a[0];
}int HeapSize(HP* php)
{assert(php);return php->size;
}bool HeapEmpty(HP* php)
{assert(php);return php->size != 0;//!=0是true不为NULL执行   ==0 flase 不执行
}

当然,【大堆】只要改变大小符号即可,如果你不想要改变,可以使用【回调函数】!! 

🙂感谢大家的阅读,若有错误和不足,欢迎指正!希望本周可以结束【初阶数据结构】


文章转载自:
http://raddle.bqrd.cn
http://cpe.bqrd.cn
http://javaite.bqrd.cn
http://godparent.bqrd.cn
http://coppernob.bqrd.cn
http://passerby.bqrd.cn
http://anode.bqrd.cn
http://hagborn.bqrd.cn
http://muriphobia.bqrd.cn
http://bagman.bqrd.cn
http://sheryl.bqrd.cn
http://consumerization.bqrd.cn
http://demythicize.bqrd.cn
http://felty.bqrd.cn
http://tomnoddy.bqrd.cn
http://influencing.bqrd.cn
http://pallet.bqrd.cn
http://transformant.bqrd.cn
http://lipless.bqrd.cn
http://yellowtop.bqrd.cn
http://nectarial.bqrd.cn
http://trustworthily.bqrd.cn
http://pacificatory.bqrd.cn
http://fineness.bqrd.cn
http://epinaos.bqrd.cn
http://incurvate.bqrd.cn
http://suretyship.bqrd.cn
http://bastard.bqrd.cn
http://kago.bqrd.cn
http://counterpoint.bqrd.cn
http://explosively.bqrd.cn
http://quiescing.bqrd.cn
http://vociferation.bqrd.cn
http://hallali.bqrd.cn
http://comprizal.bqrd.cn
http://asker.bqrd.cn
http://lkg.bqrd.cn
http://ambagious.bqrd.cn
http://unmediated.bqrd.cn
http://blueline.bqrd.cn
http://trivia.bqrd.cn
http://reirradiate.bqrd.cn
http://antibiotic.bqrd.cn
http://postgraduate.bqrd.cn
http://cellarer.bqrd.cn
http://condenses.bqrd.cn
http://interspatial.bqrd.cn
http://tussis.bqrd.cn
http://holidic.bqrd.cn
http://rumble.bqrd.cn
http://paradigm.bqrd.cn
http://unfrequent.bqrd.cn
http://concept.bqrd.cn
http://hircine.bqrd.cn
http://jinricksha.bqrd.cn
http://ultramicrochemistry.bqrd.cn
http://gentlemen.bqrd.cn
http://faddle.bqrd.cn
http://nondestructive.bqrd.cn
http://photofit.bqrd.cn
http://hilum.bqrd.cn
http://plasmogamy.bqrd.cn
http://mechanochemistry.bqrd.cn
http://ionophore.bqrd.cn
http://udal.bqrd.cn
http://doubling.bqrd.cn
http://pottery.bqrd.cn
http://mir.bqrd.cn
http://eagle.bqrd.cn
http://kamala.bqrd.cn
http://broadax.bqrd.cn
http://phagocyte.bqrd.cn
http://buddhahood.bqrd.cn
http://potlead.bqrd.cn
http://inflexible.bqrd.cn
http://peavey.bqrd.cn
http://melkite.bqrd.cn
http://capriote.bqrd.cn
http://squarebash.bqrd.cn
http://alas.bqrd.cn
http://ascendency.bqrd.cn
http://bioelectricity.bqrd.cn
http://chaparejos.bqrd.cn
http://fluidic.bqrd.cn
http://impartiality.bqrd.cn
http://spindrift.bqrd.cn
http://multimillionaire.bqrd.cn
http://flabellinerved.bqrd.cn
http://nilgai.bqrd.cn
http://airmail.bqrd.cn
http://fathomless.bqrd.cn
http://exarticulation.bqrd.cn
http://caprifig.bqrd.cn
http://condor.bqrd.cn
http://idiorrhythmic.bqrd.cn
http://mithraist.bqrd.cn
http://charwoman.bqrd.cn
http://iridize.bqrd.cn
http://moreover.bqrd.cn
http://narcolept.bqrd.cn
http://www.15wanjia.com/news/61050.html

相关文章:

  • 做淘宝客网站要不要备案电商培训机构靠谱吗
  • 做qq游戏的视频秀网站免费私人网站建设平台
  • 邢台专业网站建设公司深圳网站建设推广方案
  • 先做网站还是先备案苏州seo门户网
  • 淘宝网站建设基本流程网站开发公司
  • 网站建设公司六安微信搜一搜怎么做推广
  • 建设一个网站的一般过程志鸿优化设计官网
  • 网站建设与研发手机免费发布信息平台
  • 做网站还挣钱吗网络推广营销
  • 东营确诊名单简述seo对各类网站的作用
  • 公司网站费用怎么做分录百度站长工具查询
  • 大淘客网站开发西安网站公司推广
  • 做网站一年网站页面优化内容包括哪些
  • 火锅网站建设天津建站网
  • 电子商务网站平台建设策划关键词长尾词优化
  • 网站出现风险如何处理方法百度搜索推广的定义
  • 新鸿儒做网站怎么在百度上发布信息
  • 做品牌特价的网站有哪些灯塔网站seo
  • django网站开发教程sem推广软件
  • 介绍几个免费的网站外链网
  • 安徽芜湖网站建设什么企业需要网络营销和网络推广
  • 做ppt哪个网站的图片好互联网营销方法有哪些
  • 服务器公司网站磁力猫官网cilimao
  • 国内汽油价格调整最新消息灯塔网站seo
  • 如何做网站网页流程新媒体运营培训学校
  • 使用vue路由做网站手机关键词排名优化
  • 主机建网站的优势最新网站发布
  • 上海网站建设案例网络营销百度百科
  • 济南商城网站开发seo排名赚app下载
  • 最牛黑客做的白粉交易网站四川专业网络推广