博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构之哈夫曼树
阅读量:4626 次
发布时间:2019-06-09

本文共 2251 字,大约阅读时间需要 7 分钟。

#include 
#include
#include
using namespace std;typedef struct{ string name; int weight; int parent, lchild, rchild; int visited; //设置visited选项来表示每次查找最小权值后的删除,0代表未删除,1表示删除}HTNode,*HuffmanTree;int Min(HuffmanTree ht,int m){ int min; for(int i=1;i<=m;i++) //在没有访问过的节点中选择第一个权值作为最小的权值 { if(ht[i].visited==0) { min=i; break; } } for(int i=1;i<=m;i++) //将选择的最小权值与其他未访问过的权值做比较求出最小权值 { //在此出错,将i的值赋给min,导致循环给min赋值出错。要在循环外给min赋值 if(ht[i].visited==0&&ht[min].weight>ht[i].weight) { min=i; } } //输出min,验证是否找到的是最小权值的位置 ht[min].visited=1; return min;}int main(){ HuffmanTree ht; //全局变量,定义哈夫曼树 string *hc; //全局变量,定义哈夫曼编码 int ht1=0, hc1=0; int choice; int m, n; while(1) { if(ht1==0&&hc1==0) { cout <<"1. 建立哈夫曼树"<
>choice; if(choice==1) { cout <<"请输入点的个数:"; cin>>n; m=2*n-1; ht=new HTNode[m+1]; for(int i=1;i<=m;i++) { ht[i].lchild=0; ht[i].rchild=0; ht[i].parent=0; ht[i].visited=0; } cout <<"请输入这几个点的相应的信息和权值:"<
>ht[i].name; cin>>ht[i].weight; } int s1, s2; for(int i=n+1;i<=m;i++) { s1=Min(ht,i-1); s2=Min(ht,i-1); //输出最小权值的位置,验证算法是否正确 ht[s1].parent=i; ht[s2].parent=i; ht[i].lchild=s1; ht[i].rchild=s2; ht[i].weight=ht[s1].weight+ht[s2].weight; } ht1=1; cout <<"哈夫曼树构造成功!"<
>search; for(int i=1;i<=n;i++) { if(ht[i].name==search) { cout <<"查找结果是:"<
<
>str; for(int i=1;i<=n;i++) { if(str==hc[i]) { cout <<"查找的结果是:"<
<

 

转载于:https://www.cnblogs.com/dotacai/p/5017669.html

你可能感兴趣的文章
Nginx的500,502,504错误解决方法
查看>>
SAP MM MM17里不能修改物料主数据'Purchasing Value Key'字段值?
查看>>
python 基础语法知识(一)
查看>>
ssh整合
查看>>
大数组分时加载算法 timedChunk
查看>>
leetcode -- 11. 盛最多水的容器
查看>>
vim vimtutor
查看>>
Jmeter学习笔记12-监听器以及测试结果的分析
查看>>
ASP.NET Core中使用GraphQL - 第九章 在GraphQL中处理多对多关系
查看>>
Python 开发与测试 Webservice(SOAP)
查看>>
结对第一次—原型设计(文献摘要热词统计)
查看>>
selenium +python 对table的操作
查看>>
get提交时中文传值乱码的有关问题
查看>>
Node.js初体验
查看>>
百度之星 1004 Labyrinth
查看>>
crm创建报告补充导航
查看>>
几种开源分词工具的比較
查看>>
等于null和长度0有区别,null不能调用任何方法,如Tostring 和.length 源于checkbox的未勾选返回值为null,勾选的返回值为on...
查看>>
项目管理专业 知识点总结(三)
查看>>
关于Android 打开新的Activity 虚拟键盘的弹出与不弹出
查看>>