数据结构哈夫曼树和哈夫曼编码 适合新手学习因为本人也是新手,嘻嘻嘻

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

unsigned int weight;

unsigned int parent, lchild, rchild;

}HTnode, *Huffmantree;

typedef char * *Huffmancode;

void select(Huffmantree HT, int n, int *s1, int *s2)

{

int i, t;

t = 1000;

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

if (HT[i].parent == 0 && HT[i].weight < t)

{

t = HT[i].weight;

*s1 = i;

}

t = 1000;

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

if (HT[i].parent == 0 && HT[i].weight < t&&i!= *s1)

{

t = HT[i].weight;

*s2 = i;

}

}

void Huffmancoding(Huffmantree HT, Huffmancode HC, int *w, int n)

{

int p1, q2;

int *s1, *s2;

int m, i, f, start, c;

char *cd;

Huffmantree p;

s1 = &p1;

s2 = &q2;

if (n <= 1) return;

m = 2 * n - 1; w = w + 1;

HT = (Huffmantree)malloc((m + 1) * sizeof(HTnode));

for (p = HT + 1, i = 1; i <= n; ++i, ++p, ++w)

{

p->weight = *w; p->parent = 0; p->lchild = 0; p->rchild = 0;

}

for (; i <= m; ++i, ++p)

{

p->weight = 0; p->parent = 0; p->lchild = 0; p->rchild = 0;

}

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

{

select(HT, i - 1, s1, s2);

HT[p1].parent = i;

HT[q2].parent = i;

HT[i].lchild = p1;

HT[i].rchild = q2;

HT[i].weight = HT[p1].weight + HT[q2].weight;

}

HC = (Huffmancode)malloc((n + 1) * sizeof(char *));

cd = (char *)malloc(n * sizeof(char));

cd[n - 1] = ‘\0’;

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

{

start = n - 1;

for (c = i, f = HT[i].parent; f != 0; c = f, f = HT[f].parent)

if (HT[f].lchild == c) cd[–start] = ‘0’;

else cd[–start] = ‘1’;

HC[i] = (char *)malloc((n - start) * sizeof(char));

strcpy(HC[i], &cd[start]);

}

free(cd);

printf(“Print the Huffmantree:\n”);

printf(" weight parent lchild rchild\n");

for (i = 1; i <= 2 * n - 1; i++)

{

printf(“%2d %3d %3d”, i, HT[i].weight, HT[i].parent);

printf(" %3d %3d\n", HT[i].lchild, HT[i].rchild);

}

printf(“Print the Humancode :\n”);

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

printf(“the code of %2d is %s\n”, i, HC[i]);

}

void main()

{

Huffmantree HT = NULL;

Huffmancode HC = NULL;

int n = 1, data, i, w[MAX];

printf(“Please input the weight of the elements of huffmantree (input -1 to exit)\n”);

scanf_s(“%d”, &data);

while (data != -1)

{

w[n] = data;

n++;

scanf_s(“%d”, &data);

}

n = n - 1;

Huffmancoding(HT, HC, w, n);

_getch();

}

#include<stdio.h>

#include

#include<malloc.h>

#include<stdlib.h>

#include<string.h>

#include//算法,头文件包含求最大最小等

#define MAX_NUM 100//最大数字个数为100

#define inf 2000000000 //最大值为

using namespace std;

using namespace std;

typedef struct {

unsigned int weight;//权值 数字无符号

unsigned int parent, lchild, rchild;//父节点,孩子结点的权值

}HTNode, *HuffmanTree;

typedef char * * HuffmanCode;//二维字符数组

int s1, s2;//最小的两个结点

void Select(HuffmanTree &HT, int x)

{//选出无父结点,并且权值最小的两个结点,赋值给s1,s2

int i, min1 = inf, min2 = inf;

for (i = 1; i <= x; i++) {//找最小

if (HT[i].weight < min1&&HT[i].parent == 0)

{

min1 = HT[i].weight;

s1 = i;//选出该权值是第几个

}

总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

由于内容太多,这里只截取部分的内容。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
13473158618)]

由于内容太多,这里只截取部分的内容。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-1rHRJsSh-1713473158619)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值